diff --git a/Gemfile b/Gemfile index ef52d50cac..135b94c773 100644 --- a/Gemfile +++ b/Gemfile @@ -88,7 +88,7 @@ gem 'sidekiq-unique-jobs', '~> 7.1' gem 'simple_form', '~> 5.2' gem 'simple-navigation', '~> 4.4' gem 'stoplight', '~> 4.1' -gem 'strong_migrations', '1.8.0' +gem 'strong_migrations' gem 'tty-prompt', '~> 0.23', require: false gem 'twitter-text', '~> 3.1.0' gem 'tzinfo-data', '~> 1.2023' diff --git a/Gemfile.lock b/Gemfile.lock index c9781a4050..4fddbded46 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -222,9 +222,9 @@ GEM elasticsearch-transport (7.17.10) faraday (>= 1, < 3) multi_json - email_spec (2.2.2) + email_spec (2.3.0) htmlentities (~> 4.3.3) - launchy (~> 2.1) + launchy (>= 2.1, < 4.0) mail (~> 2.7) erubi (1.13.0) et-orbi (1.2.11) @@ -440,7 +440,7 @@ GEM uri net-http-persistent (4.0.2) connection_pool (~> 2.2) - net-imap (0.4.12) + net-imap (0.4.14) date net-protocol net-ldap (0.19.0) @@ -516,7 +516,7 @@ GEM opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.1) opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_job (0.7.2) + opentelemetry-instrumentation-active_job (0.7.3) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) opentelemetry-instrumentation-active_model_serializers (0.20.1) @@ -607,7 +607,7 @@ GEM railties (>= 7.0.0) psych (5.1.2) stringio - public_suffix (6.0.0) + public_suffix (6.0.1) puma (6.4.2) nio4r (~> 2.0) pundit (2.3.2) @@ -781,7 +781,7 @@ GEM scenic (1.8.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - selenium-webdriver (4.22.0) + selenium-webdriver (4.23.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -821,8 +821,8 @@ GEM stoplight (4.1.0) redlock (~> 1.0) stringio (3.1.1) - strong_migrations (1.8.0) - activerecord (>= 5.2) + strong_migrations (2.0.0) + activerecord (>= 6.1) strscan (3.1.0) swd (1.3.0) activesupport (>= 3) @@ -894,7 +894,7 @@ GEM railties (>= 5.2) semantic_range (>= 2.3.0) webrick (1.8.1) - websocket (1.2.10) + websocket (1.2.11) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) @@ -1046,7 +1046,7 @@ DEPENDENCIES simplecov-lcov (~> 0.8) stackprof stoplight (~> 4.1) - strong_migrations (= 1.8.0) + strong_migrations test-prof thor (~> 1.2) tty-prompt (~> 0.23) diff --git a/app/controllers/admin/instances_controller.rb b/app/controllers/admin/instances_controller.rb index a6997b62f7..d7f88a71f3 100644 --- a/app/controllers/admin/instances_controller.rb +++ b/app/controllers/admin/instances_controller.rb @@ -13,6 +13,7 @@ module Admin def show authorize :instance, :show? @time_period = (6.days.ago.to_date...Time.now.utc.to_date) + @action_logs = Admin::ActionLogFilter.new(target_domain: @instance.domain).results.limit(5) end def destroy diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb index 9801d832b8..0cd5aebd53 100644 --- a/app/controllers/api/v1/admin/domain_allows_controller.rb +++ b/app/controllers/api/v1/admin/domain_allows_controller.rb @@ -47,18 +47,13 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController private def set_domain_allows - @domain_allows = filtered_domain_allows.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + @domain_allows = DomainAllow.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) end def set_domain_allow @domain_allow = DomainAllow.find(params[:id]) end - def filtered_domain_allows - # TODO: no filtering yet - DomainAllow.all - end - def next_path api_v1_admin_domain_allows_url(pagination_params(max_id: pagination_max_id)) if records_continue? end diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb index a20a4a9c7f..28d91ef93c 100644 --- a/app/controllers/api/v1/admin/domain_blocks_controller.rb +++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb @@ -59,18 +59,13 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController end def set_domain_blocks - @domain_blocks = filtered_domain_blocks.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + @domain_blocks = DomainBlock.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) end def set_domain_block @domain_block = DomainBlock.find(params[:id]) end - def filtered_domain_blocks - # TODO: no filtering yet - DomainBlock.all - end - def domain_block_params params.permit(:severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate) end diff --git a/app/javascript/flavours/glitch/actions/accounts.js b/app/javascript/flavours/glitch/actions/accounts.js index 7c31c16998..699b92dd09 100644 --- a/app/javascript/flavours/glitch/actions/accounts.js +++ b/app/javascript/flavours/glitch/actions/accounts.js @@ -1,3 +1,5 @@ +import { browserHistory } from 'flavours/glitch/components/router'; + import api, { getLinks } from '../api'; import { @@ -722,6 +724,16 @@ export const updateAccount = ({ displayName, note, avatar, header, discoverable, }); }; +export const navigateToProfile = (accountId) => { + return (_dispatch, getState) => { + const acct = getState().accounts.getIn([accountId, 'acct']); + + if (acct) { + browserHistory.push(`/@${acct}`); + } + }; +}; + export function fetchPinnedAccountsSuggestions(q) { return (dispatch) => { dispatch(fetchPinnedAccountsSuggestionsRequest()); diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index f0da25b5dc..dd89f7cdd8 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -4,6 +4,7 @@ import axios from 'axios'; import { throttle } from 'lodash'; import api from 'flavours/glitch/api'; +import { browserHistory } from 'flavours/glitch/components/router'; import { search as emojiSearch } from 'flavours/glitch/features/emoji/emoji_mart_search_light'; import { tagHistory } from 'flavours/glitch/settings'; import { recoverHashtags } from 'flavours/glitch/utils/hashtag'; @@ -94,9 +95,9 @@ const messages = defineMessages({ saved: { id: 'compose.saved.body', defaultMessage: 'Post saved.' }, }); -export const ensureComposeIsVisible = (getState, routerHistory) => { +export const ensureComposeIsVisible = (getState) => { if (!getState().getIn(['compose', 'mounted'])) { - routerHistory.push('/publish'); + browserHistory.push('/publish'); } }; @@ -117,7 +118,7 @@ export function changeCompose(text) { }; } -export function replyCompose(status, routerHistory) { +export function replyCompose(status) { return (dispatch, getState) => { const prependCWRe = getState().getIn(['local_settings', 'prepend_cw_re']); dispatch({ @@ -126,7 +127,19 @@ export function replyCompose(status, routerHistory) { prependCWRe: prependCWRe, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); + }; +} + +export function replyComposeById(statusId) { + return (dispatch, getState) => { + const state = getState(); + const status = state.statuses.get(statusId); + + if (status) { + const account = state.accounts.get(status.get('account')); + dispatch(replyCompose(status.set('account', account))); + } }; } @@ -142,38 +155,44 @@ export function resetCompose() { }; } -export const focusCompose = (routerHistory, defaultText) => (dispatch, getState) => { +export const focusCompose = (defaultText) => (dispatch, getState) => { dispatch({ type: COMPOSE_FOCUS, defaultText, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; -export function mentionCompose(account, routerHistory) { +export function mentionCompose(account) { return (dispatch, getState) => { dispatch({ type: COMPOSE_MENTION, account: account, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; } -export function directCompose(account, routerHistory) { +export function mentionComposeById(accountId) { + return (dispatch, getState) => { + dispatch(mentionCompose(getState().accounts.get(accountId))); + }; +} + +export function directCompose(account) { return (dispatch, getState) => { dispatch({ type: COMPOSE_DIRECT, account: account, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; } -export function submitCompose(routerHistory, overridePrivacy = null) { +export function submitCompose(overridePrivacy = null) { return function (dispatch, getState) { let status = getState().getIn(['compose', 'text'], ''); const media = getState().getIn(['compose', 'media_attachments']); @@ -230,11 +249,10 @@ export function submitCompose(routerHistory, overridePrivacy = null) { 'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']), }, }).then(function (response) { - if (routerHistory - && (routerHistory.location.pathname === '/publish' || routerHistory.location.pathname === '/statuses/new') + if ((browserHistory.location.pathname === '/publish' || browserHistory.location.pathname === '/statuses/new') && window.history.state && !getState().getIn(['compose', 'advanced_options', 'threaded_mode'])) { - routerHistory.goBack(); + browserHistory.goBack(); } dispatch(insertIntoTagHistory(response.data.tags, status)); @@ -272,7 +290,7 @@ export function submitCompose(routerHistory, overridePrivacy = null) { message: statusId === null ? messages.published : messages.saved, action: messages.open, dismissAfter: 10000, - onClick: () => routerHistory.push(`/@${response.data.account.username}/${response.data.id}`), + onClick: () => browserHistory.push(`/@${response.data.account.username}/${response.data.id}`), })); } }).catch(function (error) { diff --git a/app/javascript/flavours/glitch/actions/interactions.js b/app/javascript/flavours/glitch/actions/interactions.js index 0b4d11cf43..db9b5a2dbd 100644 --- a/app/javascript/flavours/glitch/actions/interactions.js +++ b/app/javascript/flavours/glitch/actions/interactions.js @@ -1,7 +1,11 @@ +import { boostModal, favouriteModal } from 'flavours/glitch/initial_state'; + import api, { getLinks } from '../api'; import { fetchRelationships } from './accounts'; import { importFetchedAccounts, importFetchedStatus } from './importer'; +import { unreblog, reblog } from './interactions_typed'; +import { openModal } from './modal'; export const REBLOGS_EXPAND_REQUEST = 'REBLOGS_EXPAND_REQUEST'; export const REBLOGS_EXPAND_SUCCESS = 'REBLOGS_EXPAND_SUCCESS'; @@ -443,6 +447,64 @@ export function unpinFail(status, error) { }; } +function toggleReblogWithoutConfirmation(status, privacy) { + return (dispatch) => { + if (status.get('reblogged')) { + dispatch(unreblog({ statusId: status.get('id') })); + } else { + dispatch(reblog({ statusId: status.get('id'), privacy })); + } + }; +} + +export function toggleReblog(statusId, skipModal = false) { + return (dispatch, getState) => { + const state = getState(); + let status = state.statuses.get(statusId); + + if (!status) + return; + + // The reblog modal expects a pre-filled account in status + // TODO: fix this by having the reblog modal get a statusId and do the work itself + status = status.set('account', state.accounts.get(status.get('account'))); + + const missing_description_setting = state.getIn(['local_settings', 'confirm_boost_missing_media_description']); + const missing_description = status.get('media_attachments').some(item => !item.get('description')); + if (missing_description_setting && missing_description && !status.get('reblogged')) { + dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: (status, privacy) => dispatch(toggleReblogWithoutConfirmation(status, privacy)), missingMediaDescription: true } })); + } else if (boostModal && !skipModal) { + dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: (status, privacy) => dispatch(toggleReblogWithoutConfirmation(status, privacy)) } })); + } else { + dispatch(toggleReblogWithoutConfirmation(status)); + } + }; +} + +export function toggleFavourite(statusId, skipModal = false) { + return (dispatch, getState) => { + const state = getState(); + let status = state.statuses.get(statusId); + + if (!status) + return; + + // The favourite modal expects a pre-filled account in status + // TODO: fix this by having the reblog modal get a statusId and do the work itself + status = status.set('account', state.accounts.get(status.get('account'))); + + if (status.get('favourited')) { + dispatch(unfavourite(status)); + } else { + if (favouriteModal && !skipModal) { + dispatch(openModal({ modalType: 'FAVOURITE', modalProps: { status, onFavourite: (status) => dispatch(favourite(status)) } })); + } else { + dispatch(favourite(status)); + } + } + }; +} + export const addReaction = (statusId, name, url) => (dispatch, getState) => { const status = getState().get('statuses').get(statusId); let alreadyAdded = false; diff --git a/app/javascript/flavours/glitch/actions/statuses.js b/app/javascript/flavours/glitch/actions/statuses.js index c4d292567d..2d83ae9926 100644 --- a/app/javascript/flavours/glitch/actions/statuses.js +++ b/app/javascript/flavours/glitch/actions/statuses.js @@ -1,3 +1,5 @@ +import { browserHistory } from 'flavours/glitch/components/router'; + import api from '../api'; import { ensureComposeIsVisible, setComposeToStatus } from './compose'; @@ -94,7 +96,7 @@ export function redraft(status, raw_text, content_type) { }; } -export const editStatus = (id, routerHistory) => (dispatch, getState) => { +export const editStatus = (id) => (dispatch, getState) => { let status = getState().getIn(['statuses', id]); if (status.get('poll')) { @@ -105,7 +107,7 @@ export const editStatus = (id, routerHistory) => (dispatch, getState) => { api().get(`/api/v1/statuses/${id}/source`).then(response => { dispatch(fetchStatusSourceSuccess()); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); dispatch(setComposeToStatus(status, response.data.text, response.data.spoiler_text, response.data.content_type)); }).catch(error => { dispatch(fetchStatusSourceFail(error)); @@ -125,7 +127,7 @@ export const fetchStatusSourceFail = error => ({ error, }); -export function deleteStatus(id, routerHistory, withRedraft = false) { +export function deleteStatus(id, withRedraft = false) { return (dispatch, getState) => { let status = getState().getIn(['statuses', id]); @@ -142,7 +144,7 @@ export function deleteStatus(id, routerHistory, withRedraft = false) { if (withRedraft) { dispatch(redraft(status, response.data.text, response.data.content_type)); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); } }).catch(error => { dispatch(deleteStatusFail(id, error)); @@ -309,6 +311,21 @@ export function revealStatus(ids) { }; } +export function toggleStatusSpoilers(statusId) { + return (dispatch, getState) => { + const status = getState().statuses.get(statusId); + + if (!status) + return; + + if (status.get('hidden')) { + dispatch(revealStatus(statusId)); + } else { + dispatch(hideStatus(statusId)); + } + }; +} + export function toggleStatusCollapse(id, isCollapsed) { return { type: STATUS_COLLAPSE, @@ -349,3 +366,15 @@ export const undoStatusTranslation = (id, pollId) => ({ id, pollId, }); + +export const navigateToStatus = (statusId) => { + return (_dispatch, getState) => { + const state = getState(); + const accountId = state.statuses.getIn([statusId, 'account']); + const acct = state.accounts.getIn([accountId, 'acct']); + + if (acct) { + browserHistory.push(`/@${acct}/${statusId}`); + } + }; +}; diff --git a/app/javascript/flavours/glitch/components/router.tsx b/app/javascript/flavours/glitch/components/router.tsx index 0637c35ada..48f35d8aed 100644 --- a/app/javascript/flavours/glitch/components/router.tsx +++ b/app/javascript/flavours/glitch/components/router.tsx @@ -22,7 +22,7 @@ type LocationState = MastodonLocationState | null | undefined; type HistoryPath = Path | LocationDescriptor; -const browserHistory = createBrowserHistory(); +export const browserHistory = createBrowserHistory(); const originalPush = browserHistory.push.bind(browserHistory); const originalReplace = browserHistory.replace.bind(browserHistory); diff --git a/app/javascript/flavours/glitch/components/status.jsx b/app/javascript/flavours/glitch/components/status.jsx index 8d2e3a6cfd..aa5db535c1 100644 --- a/app/javascript/flavours/glitch/components/status.jsx +++ b/app/javascript/flavours/glitch/components/status.jsx @@ -447,7 +447,7 @@ class Status extends ImmutablePureComponent { handleHotkeyReply = e => { e.preventDefault(); - this.props.onReply(this.props.status, this.props.history); + this.props.onReply(this.props.status); }; handleHotkeyFavourite = (e) => { @@ -464,7 +464,7 @@ class Status extends ImmutablePureComponent { handleHotkeyMention = e => { e.preventDefault(); - this.props.onMention(this.props.status.get('account'), this.props.history); + this.props.onMention(this.props.status.get('account')); }; handleHotkeyOpen = () => { @@ -525,7 +525,7 @@ class Status extends ImmutablePureComponent { } render () { - const { intl, hidden, featured, unread, pictureInPicture, previousId, nextInReplyToId, rootId, skipPrepend, avatarSize = 46 } = this.props; + const { intl, hidden, featured, unfocusable, unread, pictureInPicture, previousId, nextInReplyToId, rootId, skipPrepend, avatarSize = 46 } = this.props; const { parseClick, @@ -591,8 +591,8 @@ class Status extends ImmutablePureComponent { if (hidden) { return ( - -
+ +
{status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])} {status.get('content')}
@@ -612,8 +612,8 @@ class Status extends ImmutablePureComponent { }; return ( - -
+ +
: {matchedFilters.join(', ')}. {' '} .", + "domain_pill.who_you_are": "Επειδή το πλήρες όνομα χρήστη σου λέει ποιος είσαι και πού βρίσκεσαι, άτομα μπορούν να αλληλεπιδράσουν μαζί σου στον κοινωνικό ιστό των .", + "domain_pill.your_handle": "Το πλήρες όνομα χρήστη σου:", + "domain_pill.your_server": "Το ψηφιακό σου σπίτι, όπου ζουν όλες σου οι αναρτήσεις. Δε σ' αρέσει αυτός; Μετακινήσου σε διακομιστές ανά πάσα στιγμή και πάρε και τους ακόλουθούς σου.", + "domain_pill.your_username": "Το μοναδικό σου αναγνωριστικό σε τούτο τον διακομιστή. Είναι πιθανό να βρεις χρήστες με το ίδιο όνομα χρήστη σε διαφορετικούς διακομιστές.", "embed.instructions": "Ενσωμάτωσε αυτή την ανάρτηση στην ιστοσελίδα σου αντιγράφοντας τον παρακάτω κώδικα.", "embed.preview": "Ορίστε πως θα φαίνεται:", "emoji_button.activity": "Δραστηριότητα", @@ -207,6 +247,7 @@ "emoji_button.search_results": "Αποτελέσματα αναζήτησης", "emoji_button.symbols": "Σύμβολα", "emoji_button.travel": "Ταξίδια & Τοποθεσίες", + "empty_column.account_hides_collections": "Αυτός ο χρήστης έχει επιλέξει να μην καταστήσει αυτές τις πληροφορίες διαθέσιμες", "empty_column.account_suspended": "Λογαριασμός σε αναστολή", "empty_column.account_timeline": "Δεν έχει αναρτήσεις εδώ!", "empty_column.account_unavailable": "Μη διαθέσιμο προφίλ", @@ -216,6 +257,8 @@ "empty_column.direct": "Δεν έχεις καμία προσωπική επισήμανση ακόμα. Όταν στείλεις ή λάβεις μία, θα εμφανιστεί εδώ.", "empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.", "empty_column.explore_statuses": "Τίποτα δεν βρίσκεται στις τάσεις αυτή τη στιγμή. Έλεγξε αργότερα!", + "empty_column.favourited_statuses": "Δεν έχεις καμία αγαπημένη ανάρτηση ακόμα. Μόλις αγαπήσεις κάποια, θα εμφανιστεί εδώ.", + "empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.", "empty_column.follow_requests": "Δεν έχεις κανένα αίτημα παρακολούθησης ακόμα. Μόλις λάβεις κάποιο, θα εμφανιστεί εδώ.", "empty_column.followed_tags": "Δεν έχετε παρακολουθήσει ακόμα καμία ετικέτα. Όταν το κάνετε, θα εμφανιστούν εδώ.", "empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ετικέτα.", @@ -223,6 +266,7 @@ "empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ.", "empty_column.lists": "Δεν έχεις καμία λίστα ακόμα. Μόλις φτιάξεις μια, θα εμφανιστεί εδώ.", "empty_column.mutes": "Δεν έχεις κανένα χρήστη σε σίγαση ακόμα.", + "empty_column.notification_requests": "Όλα καθαρά! Δεν υπάρχει τίποτα εδώ. Όταν λαμβάνεις νέες ειδοποιήσεις, αυτές θα εμφανίζονται εδώ σύμφωνα με τις ρυθμίσεις σου.", "empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Όταν άλλα άτομα αλληλεπιδράσουν μαζί σου, θα το δεις εδώ.", "empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο ή ακολούθησε χειροκίνητα χρήστες από άλλους διακομιστές για να τη γεμίσεις", "error.unexpected_crash.explanation": "Είτε λόγω σφάλματος στον κώδικά μας ή λόγω ασυμβατότητας με τον περιηγητή, η σελίδα δε μπόρεσε να εμφανιστεί σωστά.", @@ -253,12 +297,30 @@ "filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα", "filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης", "filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης", + "filtered_notifications_banner.mentions": "{count, plural, one {επισήμανση} other {επισημάνσεις}}", + "filtered_notifications_banner.pending_requests": "Ειδοποιήσεις από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις", + "filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις", "firehose.all": "Όλα", "firehose.local": "Αυτός ο διακομιστής", "firehose.remote": "Άλλοι διακομιστές", "follow_request.authorize": "Εξουσιοδότησε", "follow_request.reject": "Απέρριψε", "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, το προσωπικό του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.", + "follow_suggestions.curated_suggestion": "Επιλογή προσωπικού", + "follow_suggestions.dismiss": "Να μην εμφανιστεί ξανά", + "follow_suggestions.featured_longer": "Προσεκτικά επιλεγμένα απ' την ομάδα του {domain}", + "follow_suggestions.friends_of_friends_longer": "Δημοφιλή μεταξύ των ατόμων που ακολουθείς", + "follow_suggestions.hints.featured": "Αυτό το προφίλ έχει επιλεγεί προσεκτικά από την ομάδα του {domain}.", + "follow_suggestions.hints.friends_of_friends": "Αυτό το προφίλ είναι δημοφιλές μεταξύ των ατόμων που ακολουθείς.", + "follow_suggestions.hints.most_followed": "Αυτό το προφίλ είναι ένα από τα πιο ακολουθούμενα στο {domain}.", + "follow_suggestions.hints.most_interactions": "Αυτό το προφίλ έχει πάρει πρόσφατα μεγάλη προσοχή στο {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Αυτό το προφίλ είναι παρόμοιο με τα προφίλ που έχεις ακολουθήσει πρόσφατα.", + "follow_suggestions.personalized_suggestion": "Εξατομικευμένη πρόταση", + "follow_suggestions.popular_suggestion": "Δημοφιλής πρόταση", + "follow_suggestions.popular_suggestion_longer": "Δημοφιλή στο {domain}", + "follow_suggestions.similar_to_recently_followed_longer": "Παρόμοια με προφίλ που ακολούθησες πρόσφατα", + "follow_suggestions.view_all": "Εμφάνιση όλων", + "follow_suggestions.who_to_follow": "Ποιον να ακολουθήσεις", "followed_tags": "Ετικέτες που ακολουθούνται", "footer.about": "Σχετικά με", "footer.directory": "Κατάλογος προφίλ", @@ -279,21 +341,30 @@ "hashtag.column_settings.tag_mode.any": "Οποιοδήποτε από αυτά", "hashtag.column_settings.tag_mode.none": "Κανένα από αυτά", "hashtag.column_settings.tag_toggle": "Προσθήκη επιπλέον ταμπελών για την κολώνα", + "hashtag.counter_by_accounts": "{count, plural, one {{counter} συμμετέχων} other {{counter} συμμετέχοντες}}", + "hashtag.counter_by_uses": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}", + "hashtag.counter_by_uses_today": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}} σήμερα", "hashtag.follow": "Παρακολούθηση ετικέτας", "hashtag.unfollow": "Διακοπή παρακολούθησης ετικέτας", + "hashtags.and_other": "…και {count, plural, one {}other {# ακόμη}}", "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων", "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", "home.hide_announcements": "Απόκρυψη ανακοινώσεων", + "home.pending_critical_update.body": "Παρακαλούμε ενημέρωσε τον διακομιστή Mastodon σου το συντομότερο δυνατόν!", "home.pending_critical_update.link": "Δείτε ενημερώσεις", "home.pending_critical_update.title": "Κρίσιμη ενημέρωση ασφαλείας διαθέσιμη!", "home.show_announcements": "Εμφάνιση ανακοινώσεων", + "interaction_modal.description.favourite": "Με ένα συντάκτη στο Mastodon μπορείς να αγαπήσεις αυτή την ανάρτηση, για να ενημερώσεις τον συγγραφέα ότι την εκτιμάς και να την αποθηκεύσεις για αργότερα.", "interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.", "interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.", "interaction_modal.description.reply": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σε αυτή την ανάρτηση.", "interaction_modal.login.action": "Take me home\nΠήγαινέ με στην αρχική σελίδα", + "interaction_modal.login.prompt": "Τομέας του οικιακού σου διακομιστή, πχ. mastodon.social", "interaction_modal.no_account_yet": "Not on Mastodon?\nΔεν είστε στο Mastodon;", "interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή", "interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή", + "interaction_modal.sign_in": "Δεν είσαι συνδεδεμένος σε αυτόν το διακομιστή. Πού φιλοξενείται ο λογαριασμός σου;", + "interaction_modal.sign_in_hint": "Συμβουλή: Αυτή είναι η ιστοσελίδα όπου έχεις εγγραφεί. Αν δεν θυμάσαι, αναζήτησε το καλώς ήρθες e-mail στα εισερχόμενά σου. Μπορείς επίσης να εισάγεις το πλήρες όνομα χρήστη! (πχ. @Mastodon@mastodon.social)", "interaction_modal.title.favourite": "Favorite {name}'s post\nΠροτίμησε την ανάρτηση της/του {name}", "interaction_modal.title.follow": "Ακολούθησε {name}", "interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}", @@ -311,6 +382,7 @@ "keyboard_shortcuts.down": "κίνηση προς τα κάτω στη λίστα", "keyboard_shortcuts.enter": "Εμφάνιση ανάρτησης", "keyboard_shortcuts.favourite": "Αγαπημένη δημοσίευση", + "keyboard_shortcuts.favourites": "Άνοιγμα λίστας αγαπημένων", "keyboard_shortcuts.federated": "Άνοιγμα ροής συναλλαγών", "keyboard_shortcuts.heading": "Συντομεύσεις πληκτρολογίου", "keyboard_shortcuts.home": "Άνοιγμα ροής αρχικής σελίδας", @@ -341,11 +413,15 @@ "lightbox.previous": "Προηγούμενο", "limited_account_hint.action": "Εμφάνιση προφίλ ούτως ή άλλως", "limited_account_hint.title": "Αυτό το προφίλ έχει αποκρυφτεί από τους διαχειριστές του διακομιστή {domain}.", + "link_preview.author": "Από {name}", + "link_preview.more_from_author": "Περισσότερα από {name}", + "link_preview.shares": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}", "lists.account.add": "Πρόσθεσε στη λίστα", "lists.account.remove": "Βγάλε από τη λίστα", "lists.delete": "Διαγραφή λίστας", "lists.edit": "Επεξεργασία λίστας", "lists.edit.submit": "Αλλαγή τίτλου", + "lists.exclusive": "Απόκρυψη αυτών των αναρτήσεων από την αρχική", "lists.new.create": "Προσθήκη λίστας", "lists.new.title_placeholder": "Τίτλος νέας λίστα", "lists.replies_policy.followed": "Οποιοσδήποτε χρήστης που ακολουθείς", @@ -358,7 +434,19 @@ "loading_indicator.label": "Φόρτωση…", "media_gallery.toggle_visible": "{number, plural, one {Απόκρυψη εικόνας} other {Απόκρυψη εικόνων}}", "moved_to_account_banner.text": "Ο λογαριασμός σου {disabledAccount} είναι προσωρινά απενεργοποιημένος επειδή μεταφέρθηκες στον {movedToAccount}.", + "mute_modal.hide_from_notifications": "Απόκρυψη από ειδοποιήσεις", + "mute_modal.hide_options": "Απόκρυψη επιλογών", + "mute_modal.indefinite": "Μέχρι να κάνω άρση σίγασης", + "mute_modal.show_options": "Εμφάνιση επιλογών", + "mute_modal.they_can_mention_and_follow": "Μπορεί να σε αναφέρει και να σε ακολουθήσει, αλλά δε θα τον βλέπεις.", + "mute_modal.they_wont_know": "Δε θα ξέρει ότι είναι σε σίγαση.", + "mute_modal.title": "Σίγαση χρήστη;", + "mute_modal.you_wont_see_mentions": "Δε θα βλέπεις τις αναρτήσεις που τον αναφέρουν.", + "mute_modal.you_wont_see_posts": "Μπορεί ακόμα να δει τις αναρτήσεις σου, αλλά δε θα βλέπεις τις δικές του.", + "name_and_others": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}}", + "name_and_others_with_link": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}}", "navigation_bar.about": "Σχετικά με", + "navigation_bar.advanced_interface": "Άνοιγμα σε προηγμένη διεπαφή ιστού", "navigation_bar.blocks": "Αποκλεισμένοι χρήστες", "navigation_bar.bookmarks": "Σελιδοδείκτες", "navigation_bar.community_timeline": "Τοπική ροή", @@ -367,6 +455,7 @@ "navigation_bar.discover": "Ανακάλυψη", "navigation_bar.domain_blocks": "Αποκλεισμένοι τομείς", "navigation_bar.explore": "Εξερεύνηση", + "navigation_bar.favourites": "Αγαπημένα", "navigation_bar.filters": "Αποσιωπημένες λέξεις", "navigation_bar.follow_requests": "Αιτήματα ακολούθησης", "navigation_bar.followed_tags": "Ετικέτες που ακολουθούνται", @@ -383,22 +472,49 @@ "navigation_bar.security": "Ασφάλεια", "not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείς για να αποκτήσεις πρόσβαση σε αυτόν τον πόρο.", "notification.admin.report": "Ο/Η {name} ανέφερε τον {target}", + "notification.admin.report_account": "Ο χρήστης {name} ανέφερε {count, plural, one {μία ανάρτηση} other {# αναρτήσεις}} από {target} για {category}", + "notification.admin.report_account_other": "Ο χρήστης {name} ανέφερε {count, plural, one {μία ανάρτηση} other {# αναρτήσεις}} από {target}", + "notification.admin.report_statuses": "Ο χρήστης {name} ανέφερε τον χρήστη {target} για {category}", + "notification.admin.report_statuses_other": "Ο χρήστης {name} ανέφερε τον χρήστη {target}", "notification.admin.sign_up": "{name} έχει εγγραφεί", "notification.favourite": "{name} favorited your post\n{name} προτίμησε την ανάρτηση σου", "notification.follow": "Ο/Η {name} σε ακολούθησε", "notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει", "notification.mention": "Ο/Η {name} σε επισήμανε", + "notification.moderation-warning.learn_more": "Μάθε περισσότερα", + "notification.moderation_warning": "Έχετε λάβει μία προειδοποίηση συντονισμού", + "notification.moderation_warning.action_delete_statuses": "Ορισμένες από τις αναρτήσεις σου έχουν αφαιρεθεί.", + "notification.moderation_warning.action_disable": "Ο λογαριασμός σου έχει απενεργοποιηθεί.", + "notification.moderation_warning.action_mark_statuses_as_sensitive": "Μερικές από τις αναρτήσεις σου έχουν επισημανθεί ως ευαίσθητες.", + "notification.moderation_warning.action_none": "Ο λογαριασμός σου έχει λάβει προειδοποίηση συντονισμού.", + "notification.moderation_warning.action_sensitive": "Οι αναρτήσεις σου θα επισημαίνονται, από εδώ και στο εξής, ως ευαίσθητες.", + "notification.moderation_warning.action_silence": "Ο λογαριασμός σου έχει περιοριστεί.", + "notification.moderation_warning.action_suspend": "Ο λογαριασμός σου έχει ανασταλεί.", "notification.own_poll": "Η δημοσκόπησή σου έληξε", - "notification.poll": "Τελείωσε μια από τις δημοσκοπήσεις που συμμετείχες", + "notification.poll": "Μία ψηφοφορία στην οποία συμμετείχες έχει τελειώσει", + "notification.private_mention": "{name} σέ επισήμανε ιδιωτικά", "notification.reblog": "Ο/Η {name} ενίσχυσε τη δημοσίευσή σου", + "notification.relationships_severance_event": "Χάθηκε η σύνδεση με το {name}", + "notification.relationships_severance_event.account_suspension": "Ένας διαχειριστής από το {from} ανέστειλε το {target}, πράγμα που σημαίνει ότι δεν μπορείς πλέον να λαμβάνεις ενημερώσεις από αυτούς ή να αλληλεπιδράς μαζί τους.", + "notification.relationships_severance_event.domain_block": "Ένας διαχειριστής από {from} έχει μπλοκάρει το {target}, συμπεριλαμβανομένων {followersCount} από τους ακόλουθούς σου και {followingCount, plural, one {# λογαριασμό} other {# λογαριασμοί}} που ακολουθείς.", + "notification.relationships_severance_event.learn_more": "Μάθε περισσότερα", + "notification.relationships_severance_event.user_domain_block": "Έχεις αποκλείσει τον λογαριασμό {target}, αφαιρώντας {followersCount} από τους ακόλουθούς σου και {followingCount, plural, one {# λογαριασμό} other {# λογαριασμοί}} που ακολουθείς.", "notification.status": "Ο/Η {name} μόλις ανέρτησε κάτι", "notification.update": "ο/η {name} επεξεργάστηκε μια ανάρτηση", + "notification_requests.accept": "Αποδοχή", + "notification_requests.dismiss": "Απόρριψη", + "notification_requests.notifications_from": "Ειδοποιήσεις από {name}", + "notification_requests.title": "Φιλτραρισμένες ειδοποιήσεις", "notifications.clear": "Καθαρισμός ειδοποιήσεων", "notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις μόνιμα όλες τις ειδοποιήσεις σου;", "notifications.column_settings.admin.report": "Νέες αναφορές:", "notifications.column_settings.admin.sign_up": "Νέες εγγραφές:", "notifications.column_settings.alert": "Ειδοποιήσεις επιφάνειας εργασίας", + "notifications.column_settings.beta.category": "Πειραματικές λειτουργίες", + "notifications.column_settings.beta.grouping": "Ομαδοποίηση ειδοποιήσεων", "notifications.column_settings.favourite": "Αγαπημένα:", + "notifications.column_settings.filter_bar.advanced": "Εμφάνιση όλων των κατηγοριών", + "notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου", "notifications.column_settings.follow": "Νέοι ακόλουθοι:", "notifications.column_settings.follow_request": "Νέο αίτημα ακολούθησης:", "notifications.column_settings.mention": "Επισημάνσεις:", @@ -413,6 +529,7 @@ "notifications.column_settings.update": "Επεξεργασίες:", "notifications.filter.all": "Όλες", "notifications.filter.boosts": "Προωθήσεις", + "notifications.filter.favourites": "Αγαπημένα", "notifications.filter.follows": "Ακολουθείς", "notifications.filter.mentions": "Επισημάνσεις", "notifications.filter.polls": "Αποτελέσματα δημοσκόπησης", @@ -423,6 +540,15 @@ "notifications.permission_denied": "Οι ειδοποιήσεις στην επιφάνεια εργασίας δεν είναι διαθέσιμες διότι έχει απορριφθεί κάποιο προηγούμενο αίτημα άδειας", "notifications.permission_denied_alert": "Δεν είναι δυνατή η ενεργοποίηση των ειδοποιήσεων της επιφάνειας εργασίας, καθώς η άδεια του προγράμματος περιήγησης έχει απορριφθεί νωρίτερα", "notifications.permission_required": "Οι ειδοποιήσεις δεν είναι διαθέσιμες επειδή δεν έχει δοθεί η απαιτούμενη άδεια.", + "notifications.policy.filter_new_accounts.hint": "Δημιουργήθηκε εντός {days, plural, one {της τελευταίας ημέρας} other {των τελευταίων # ημερών}}", + "notifications.policy.filter_new_accounts_title": "Νέοι λογαριασμοί", + "notifications.policy.filter_not_followers_hint": "Συμπεριλαμβανομένων των ατόμων που σας έχουν ακολουθήσει λιγότερο από {days, plural, one {μια ημέρα} other {# ημέρες}} πριν", + "notifications.policy.filter_not_followers_title": "Άτομα που δε σε ακολουθούν", + "notifications.policy.filter_not_following_hint": "Μέχρι να τους εγκρίνεις χειροκίνητα", + "notifications.policy.filter_not_following_title": "Άτομα που δεν ακολουθείς", + "notifications.policy.filter_private_mentions_hint": "Φιλτραρισμένο εκτός αν είναι απάντηση σε δική σου αναφορά ή αν ακολουθείς τον αποστολέα", + "notifications.policy.filter_private_mentions_title": "Μη συναινετικές ιδιωτικές αναφορές", + "notifications.policy.title": "Φιλτράρισμα ειδοποιήσεων από…", "notifications_permission_banner.enable": "Ενεργοποίηση ειδοποιήσεων επιφάνειας εργασίας", "notifications_permission_banner.how_to_control": "Για να λαμβάνεις ειδοποιήσεις όταν το Mastodon δεν είναι ανοιχτό, ενεργοποίησε τις ειδοποιήσεις επιφάνειας εργασίας. Μπορείς να ελέγξεις με ακρίβεια ποιοι τύποι αλληλεπιδράσεων δημιουργούν ειδοποιήσεις επιφάνειας εργασίας μέσω του κουμπιού {icon} μόλις ενεργοποιηθούν.", "notifications_permission_banner.title": "Μη χάσεις στιγμή", @@ -430,8 +556,15 @@ "onboarding.actions.back": "Επιστροφή", "onboarding.actions.go_to_explore": "See what's trending", "onboarding.actions.go_to_home": "Πηγαίνετε στην αρχική σας ροή", + "onboarding.compose.template": "Γειά σου #Mastodon!", + "onboarding.follows.empty": "Δυστυχώς, δεν μπορούν να εμφανιστούν αποτελέσματα αυτή τη στιγμή. Μπορείς να προσπαθήσεις να χρησιμοποιήσεις την αναζήτηση ή να περιηγηθείς στη σελίδα εξερεύνησης για να βρεις άτομα να ακολουθήσεις ή να δοκιμάσεις ξανά αργότερα.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Δημοφιλή στο Mastodon", + "onboarding.profile.discoverable": "Κάνε το προφίλ μου ανακαλύψιμο", + "onboarding.profile.discoverable_hint": "Όταν επιλέγεις την δυνατότητα ανακάλυψης στο Mastodon, οι αναρτήσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης και τις τάσεις, και το προφίλ σου μπορεί να προτείνεται σε άτομα με παρόμοια ενδιαφέροντα με εσένα.", + "onboarding.profile.display_name": "Εμφανιζόμενο όνομα", + "onboarding.profile.display_name_hint": "Το πλήρες ή το διασκεδαστικό σου όνομα…", + "onboarding.profile.lead": "Μπορείς πάντα να το ολοκληρώσεις αργότερα στις ρυθμίσεις, όπου είναι διαθέσιμες ακόμα περισσότερες επιλογές προσαρμογής.", "onboarding.profile.note": "Βιογραφικό", "onboarding.profile.note_hint": "Μπορείτε να @αναφέρετε άλλα άτομα ή #hashtags…", "onboarding.profile.save_and_continue": "Αποθήκευση και συνέχεια", @@ -439,7 +572,9 @@ "onboarding.profile.upload_avatar": "Μεταφόρτωση εικόνας προφίλ", "onboarding.profile.upload_header": "Μεταφόρτωση κεφαλίδας προφίλ", "onboarding.share.lead": "Let people know how they can find you on Mastodon!\nΕνημερώστε άλλα άτομα πώς μπορούν να σας βρουν στο Mastodon!", + "onboarding.share.message": "Με λένε {username} στο #Mastodon! Έλα να με ακολουθήσεις στο {url}", "onboarding.share.next_steps": "Πιθανά επόμενα βήματα:", + "onboarding.share.title": "Κοινοποίηση του προφίλ σου", "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", "onboarding.start.skip": "Want to skip right ahead?", "onboarding.start.title": "You've made it!\nΤα καταφέρατε!", @@ -451,6 +586,10 @@ "onboarding.steps.setup_profile.title": "Customize your profile", "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!", "onboarding.steps.share_profile.title": "Share your profile", + "onboarding.tips.2fa": "Το ήξερες; Μπορείς να ασφαλίσεις το λογαριασμό σου ρυθμίζοντας ταυτότητα δύο παραγόντων στις ρυθμίσεις του λογαριασμού σου. Λειτουργεί με οποιαδήποτε εφαρμογή TOTP της επιλογής σας, δεν απαιτείται αριθμός τηλεφώνου!", + "onboarding.tips.accounts_from_other_servers": "Το ήξερες; Από τη στιγμή που το Mastodon είναι αποκεντρωμένο, κάποια προφίλ που συναντάς θα φιλοξενούνται σε διακομιστές διαφορετικούς από τον δικό σου. Και παρόλα αυτά μπορείς να αλληλεπιδράσεις μαζί τους απρόσκοπτα! Ο διακομιστής τους είναι στο δεύτερο μισό του ονόματος χρήστη!", + "onboarding.tips.migration": "Το ήξερες; Αν αισθάνεσαι ότι το {domain} δεν είναι η κατάλληλη επιλογή διακομιστή για σένα στο μέλλον, μπορείς να μετακινηθείς σε άλλο διακομιστή Mastodon χωρίς να χάσεις τους ακόλουθούς σου. Μπορείς να κάνεις ακόμα και τον δικό σου διακομιστή!", + "onboarding.tips.verification": "Το ήξερες; Μπορείς να επαληθεύσεις τον λογαριασμό σου βάζοντας έναν σύνδεσμο του προφίλ σου στο Mastodon στην ιστοσελίδα σου και να προσθέσεις την ιστοσελίδα στο προφίλ σου. Χωρίς έξοδα ή έγγραφα!", "password_confirmation.exceeds_maxlength": "Η επιβεβαίωση κωδικού πρόσβασης υπερβαίνει το μέγιστο μήκος κωδικού πρόσβασης", "password_confirmation.mismatching": "Η επιβεβαίωση του κωδικού πρόσβασης δε συμπίπτει", "picture_in_picture.restore": "Βάλε το πίσω", @@ -469,7 +608,11 @@ "privacy.direct.short": "Συγκεκριμένα άτομα", "privacy.private.long": "Μόνο οι ακόλουθοί σας", "privacy.private.short": "Ακόλουθοι", + "privacy.public.long": "Όλοι εντός και εκτός του Mastodon", "privacy.public.short": "Δημόσιο", + "privacy.unlisted.additional": "Αυτό συμπεριφέρεται ακριβώς όπως το δημόσιο, εκτός από το ότι η ανάρτηση δεν θα εμφανιστεί σε ζωντανές ροές ή ετικέτες, εξερεύνηση ή αναζήτηση στο Mastodon, ακόμη και αν το έχεις επιλέξει για τον λογαριασμό σου.", + "privacy.unlisted.long": "Λιγότερα αλγοριθμικά κόλπα", + "privacy.unlisted.short": "Ήσυχα δημόσια", "privacy_policy.last_updated": "Τελευταία ενημέρωση {date}", "privacy_policy.title": "Πολιτική Απορρήτου", "recommended": "Προτεινόμενα", @@ -487,6 +630,7 @@ "relative_time.minutes": "{number}λ", "relative_time.seconds": "{number}δ", "relative_time.today": "σήμερα", + "reply_indicator.attachments": "{count, plural, one {# συνημμένο} other {# συνημμένα}}", "reply_indicator.cancel": "Άκυρο", "reply_indicator.poll": "Δημοσκόπηση", "report.block": "Αποκλεισμός", @@ -530,9 +674,14 @@ "report.unfollow": "Κατάργηση ακολούθησης του @{name}", "report.unfollow_explanation": "Ακολουθείς αυτό τον λογαριασμό. Για να μη βλέπεις τις αναρτήσεις τους στη δική σου ροή, πάψε να τον ακολουθείς.", "report_notification.attached_statuses": "{count, plural, one {{count} ανάρτηση} other {{count} αναρτήσεις}} επισυνάπτονται", + "report_notification.categories.legal": "Νομικά", + "report_notification.categories.legal_sentence": "παράνομο περιεχόμενο", "report_notification.categories.other": "Άλλες", + "report_notification.categories.other_sentence": "άλλο", "report_notification.categories.spam": "Ανεπιθύμητα", + "report_notification.categories.spam_sentence": "ανεπιθύμητα", "report_notification.categories.violation": "Παραβίαση κανόνα", + "report_notification.categories.violation_sentence": "παραβίαση κανόνα", "report_notification.open": "Ανοιχτή αναφορά", "search.no_recent_searches": "Καμία πρόσφατη αναζήτηση", "search.placeholder": "Αναζήτηση", @@ -542,8 +691,13 @@ "search.quick_action.open_url": "Άνοιγμα διεύθυνσης URL στο Mastodon", "search.quick_action.status_search": "Αναρτήσεις που ταιριάζουν με {x}", "search.search_or_paste": "Αναζήτηση ή εισαγωγή URL", + "search_popout.full_text_search_disabled_message": "Μη διαθέσιμο στο {domain}.", + "search_popout.full_text_search_logged_out_message": "Διαθέσιμο μόνο όταν συνδεθείς.", + "search_popout.language_code": "Κωδικός γλώσσας ISO", + "search_popout.options": "Επιλογές αναζήτησης", "search_popout.quick_actions": "Γρήγορες ενέργειες", "search_popout.recent": "Πρόσφατες αναζητήσεις", + "search_popout.specific_date": "συγκεκριμένη ημερομηνία", "search_popout.user": "χρήστης", "search_results.accounts": "Προφίλ", "search_results.all": "Όλα", @@ -555,8 +709,11 @@ "server_banner.about_active_users": "Άτομα που χρησιμοποιούν αυτόν τον διακομιστή κατά τις τελευταίες 30 ημέρες (Μηνιαία Ενεργοί Χρήστες)", "server_banner.active_users": "ενεργοί χρήστες", "server_banner.administered_by": "Διαχειριστής:", + "server_banner.is_one_of_many": "Το {domain} είναι ένας από τους πολλούς ανεξάρτητους διακομιστές Mastodon που μπορείς να χρησιμοποιήσεις για να συμμετάσχεις στο fediverse.", "server_banner.server_stats": "Στατιστικά διακομιστή:", "sign_in_banner.create_account": "Δημιουργία λογαριασμού", + "sign_in_banner.follow_anyone": "Ακολούθησε οποιονδήποτε κατά μήκος του fediverse και δες τα όλα με χρονολογική σειρά. Δεν υπάρχουν αλγόριθμοι, διαφημίσεις ή clickbait ούτε για δείγμα.", + "sign_in_banner.mastodon_is": "Το Mastodon είναι ο καλύτερος τρόπος για να συμβαδίσεις με τα γεγονότα.", "sign_in_banner.sign_in": "Σύνδεση", "sign_in_banner.sso_redirect": "Συνδεθείτε ή Εγγραφείτε", "status.admin_account": "Άνοιγμα διεπαφής συντονισμού για τον/την @{name}", @@ -572,15 +729,19 @@ "status.direct": "Ιδιωτική επισήμανση @{name}", "status.direct_indicator": "Ιδιωτική επισήμανση", "status.edit": "Επεξεργασία", + "status.edited": "Τελευταία επεξεργασία {date}", "status.edited_x_times": "Επεξεργάστηκε {count, plural, one {{count} φορά} other {{count} φορές}}", "status.embed": "Ενσωμάτωσε", "status.favourite": "Αγαπημένα", + "status.favourites": "{count, plural, one {# αγαπημένο} other {# αγαπημένα}}", "status.filter": "Φιλτράρισμα αυτής της ανάρτησης", "status.filtered": "Φιλτραρισμένα", "status.hide": "Απόκρυψη ανάρτησης", "status.history.created": "{name} δημιούργησε στις {date}", "status.history.edited": "{name} επεξεργάστηκε στις {date}", "status.load_more": "Φόρτωσε περισσότερα", + "status.media.open": "Κάνε κλικ για άνοιγμα", + "status.media.show": "Κάνε κλικ για εμφάνιση", "status.media_hidden": "Κρυμμένο πολυμέσο", "status.mention": "Επισήμανε @{name}", "status.more": "Περισσότερα", @@ -593,6 +754,7 @@ "status.reblog": "Ενίσχυση", "status.reblog_private": "Ενίσχυση με αρχική ορατότητα", "status.reblogged_by": "{name} προώθησε", + "status.reblogs": "{count, plural, one {# ενίσχυση} other {# ενισχύσεις}}", "status.reblogs.empty": "Κανείς δεν ενίσχυσε αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.", "status.redraft": "Σβήσε & ξαναγράψε", "status.remove_bookmark": "Αφαίρεση σελιδοδείκτη", @@ -611,6 +773,7 @@ "status.title.with_attachments": "{user} δημοσίευσε {attachmentCount, plural, one {ένα συνημμένο} other {{attachmentCount} συνημμένα}}", "status.translate": "Μετάφραση", "status.translated_from_with": "Μεταφράστηκε από {lang} χρησιμοποιώντας {provider}", + "status.uncached_media_warning": "Μη διαθέσιμη προεπισκόπηση", "status.unmute_conversation": "Αναίρεση σίγασης συνομιλίας", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", "subscribed_languages.lead": "Μόνο αναρτήσεις σε επιλεγμένες γλώσσες θα εμφανίζονται στην αρχική σου και θα παραθέτονται χρονοδιαγράμματα μετά την αλλαγή. Επέλεξε καμία για να λαμβάνεις αναρτήσεις σε όλες τις γλώσσες.", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 94d7defc7e..6143c6e1ca 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Your account has been limited.", "notification.moderation_warning.action_suspend": "Your account has been suspended.", "notification.own_poll": "Your poll has ended", - "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.relationships_severance_event": "Lost connections with {name}", "notification.relationships_severance_event.account_suspension": "An admin from {from} has suspended {target}, which means you can no longer receive updates from them or interact with them.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index e7cfc03468..211f4ad8d9 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -405,7 +405,6 @@ "notification.follow_request": "{name} petis sekvi vin", "notification.mention": "{name} menciis vin", "notification.own_poll": "Via enketo finiĝis", - "notification.poll": "Partoprenita balotenketo finiĝis", "notification.reblog": "{name} diskonigis vian afiŝon", "notification.status": "{name} ĵus afiŝis", "notification.update": "{name} redaktis afiŝon", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 28e8de9237..2e22865493 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -443,6 +443,8 @@ "mute_modal.title": "¿Silenciar usuario?", "mute_modal.you_wont_see_mentions": "No verás mensajes que los mencionen.", "mute_modal.you_wont_see_posts": "Todavía pueden ver tus mensajes, pero vos no verás los suyos.", + "name_and_others": "{name} y {count, plural, one {# cuenta más} other {# cuentas más}}", + "name_and_others_with_link": "{name} y {count, plural, one {# cuenta más} other {# cuentas más}}", "navigation_bar.about": "Información", "navigation_bar.advanced_interface": "Abrir en interface web avanzada", "navigation_bar.blocks": "Usuarios bloqueados", @@ -470,6 +472,10 @@ "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitás iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} denunció a {target}", + "notification.admin.report_account": "{name} denunció {count, plural, one {un mensaje} other {# mensajes}} de {target} por {category}", + "notification.admin.report_account_other": "{name} denunció {count, plural, one {un mensaje} other {# mensajes}} de {target}", + "notification.admin.report_statuses": "{name} denunció a {target} por {category}", + "notification.admin.report_statuses_other": "{name} denunció a {target}", "notification.admin.sign_up": "Se registró {name}", "notification.favourite": "{name} marcó tu mensaje como favorito", "notification.follow": "{name} te empezó a seguir", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "Tu cuenta fue suspendida.", "notification.own_poll": "Tu encuesta finalizó", "notification.poll": "Finalizó una encuesta en la que votaste", + "notification.private_mention": "{name} te mencionó en privado", "notification.reblog": "{name} adhirió a tu mensaje", "notification.relationships_severance_event": "Conexiones perdidas con {name}", "notification.relationships_severance_event.account_suspension": "Un administrador de {from} suspendió a {target}, lo que significa que ya no podés recibir actualizaciones de esa cuenta o interactuar con la misma.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nuevas denuncias:", "notifications.column_settings.admin.sign_up": "Nuevos registros:", "notifications.column_settings.alert": "Notificaciones de escritorio", + "notifications.column_settings.beta.category": "Funciones experimentales", + "notifications.column_settings.beta.grouping": "Agrupar notificaciones", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Estás siguiendo a esta cuenta. Para no ver sus mensajes en tu línea temporal principal, dejá de seguirla.", "report_notification.attached_statuses": "{count, plural, one {{count} mensaje adjunto} other {{count} mensajes adjuntos}}", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "contenido ilegal", "report_notification.categories.other": "Otros", + "report_notification.categories.other_sentence": "[otras categorías]", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Violación de regla", + "report_notification.categories.violation_sentence": "violación de regla", "report_notification.open": "Abrir denuncia", "search.no_recent_searches": "Sin búsquedas recientes", "search.placeholder": "Buscar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index c10a161015..837bbbc2ce 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -443,6 +443,8 @@ "mute_modal.title": "¿Silenciar usuario?", "mute_modal.you_wont_see_mentions": "No verás publicaciones que los mencionen.", "mute_modal.you_wont_see_posts": "Todavía pueden ver tus publicaciones, pero tú no verás las de ellos.", + "name_and_others": "{name} y {count, plural, one {# más} other {# más}}", + "name_and_others_with_link": "{name} y {count, plural, one {# más} other {# más}}", "navigation_bar.about": "Acerca de", "navigation_bar.advanced_interface": "Abrir en interfaz web avanzada", "navigation_bar.blocks": "Usuarios bloqueados", @@ -470,6 +472,10 @@ "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}", + "notification.admin.report_account": "{name} informó de {count, plural, one {una publicación} other {# publicaciones}} de {target} por {category}", + "notification.admin.report_account_other": "{name} informó de {count, plural, one {una publicación} other {# publicaciones}} de {target}", + "notification.admin.report_statuses": "{name} informó de {target} por {category}", + "notification.admin.report_statuses_other": "{name} informó de {target}", "notification.admin.sign_up": "{name} se unio", "notification.favourite": "{name} marcó como favorita tu publicación", "notification.follow": "{name} te empezó a seguir", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Tu cuenta ha sido limitada.", "notification.moderation_warning.action_suspend": "Tu cuenta ha sido suspendida.", "notification.own_poll": "Tu encuesta ha terminado", - "notification.poll": "Una encuesta en la que has votado ha terminado", + "notification.poll": "Una encuesta ha terminado", + "notification.private_mention": "{name} te mencionó en privado", "notification.reblog": "{name} ha retooteado tu estado", "notification.relationships_severance_event": "Conexiones perdidas con {name}", "notification.relationships_severance_event.account_suspension": "Un administrador de {from} ha suspendido {target}, lo que significa que ya no puedes recibir actualizaciones de sus cuentas o interactuar con ellas.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nuevas denuncias:", "notifications.column_settings.admin.sign_up": "Registros nuevos:", "notifications.column_settings.alert": "Notificaciones de escritorio", + "notifications.column_settings.beta.category": "Características experimentales", + "notifications.column_settings.beta.grouping": "Agrupar notificaciones", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu inicio, deja de seguirla.", "report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "contenido ilegal", "report_notification.categories.other": "Otro", + "report_notification.categories.other_sentence": "otra", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Infracción de regla", + "report_notification.categories.violation_sentence": "infracción de regla", "report_notification.open": "Abrir denuncia", "search.no_recent_searches": "Sin búsquedas recientes", "search.placeholder": "Buscar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 259fc1795b..a6cecf1605 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -443,6 +443,8 @@ "mute_modal.title": "¿Silenciar usuario?", "mute_modal.you_wont_see_mentions": "No verás mensajes que los mencionen.", "mute_modal.you_wont_see_posts": "Todavía pueden ver tus publicaciones, pero tú no verás las suyas.", + "name_and_others": "{name} y {count, plural, one {# más} other {# más}}", + "name_and_others_with_link": "{name} y {count, plural, one {# más} other {# más}}", "navigation_bar.about": "Acerca de", "navigation_bar.advanced_interface": "Abrir en la interfaz web avanzada", "navigation_bar.blocks": "Usuarios bloqueados", @@ -470,6 +472,10 @@ "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}", + "notification.admin.report_account": "{name} informó de {count, plural, one {una publicación} other {# publicaciones}} de {target} por {category}", + "notification.admin.report_account_other": "{name} informó de {count, plural, one {una publicación} other {# publicaciones}} de {target}", + "notification.admin.report_statuses": "{name} informó de {target} por {category}", + "notification.admin.report_statuses_other": "{name} informó de {target}", "notification.admin.sign_up": "{name} se registró", "notification.favourite": "{name} marcó como favorita tu publicación", "notification.follow": "{name} te empezó a seguir", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Tu cuenta ha sido limitada.", "notification.moderation_warning.action_suspend": "Tu cuenta ha sido suspendida.", "notification.own_poll": "Tu encuesta ha terminado", - "notification.poll": "Una encuesta en la que has votado ha terminado", + "notification.poll": "Una encuesta ha terminado", + "notification.private_mention": "{name} te mencionó en privado", "notification.reblog": "{name} ha impulsado tu publicación", "notification.relationships_severance_event": "Conexiones perdidas con {name}", "notification.relationships_severance_event.account_suspension": "Un administrador de {from} ha suspendido {target}, lo que significa que ya no puedes recibir actualizaciones de sus cuentas o interactuar con ellas.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nuevos informes:", "notifications.column_settings.admin.sign_up": "Nuevos registros:", "notifications.column_settings.alert": "Notificaciones de escritorio", + "notifications.column_settings.beta.category": "Características experimentales", + "notifications.column_settings.beta.grouping": "Agrupar notificaciones", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu muro de inicio, deja de seguirla.", "report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "contenido ilegal", "report_notification.categories.other": "Otros", + "report_notification.categories.other_sentence": "otra", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Infracción de regla", + "report_notification.categories.violation_sentence": "infracción de regla", "report_notification.open": "Abrir informe", "search.no_recent_searches": "No hay búsquedas recientes", "search.placeholder": "Buscar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 94f5ef5d9e..b07229adec 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -482,7 +482,6 @@ "notification.moderation_warning.action_silence": "Su kontole pandi piirang.", "notification.moderation_warning.action_suspend": "Su konto on peatatud.", "notification.own_poll": "Su küsitlus on lõppenud", - "notification.poll": "Küsitlus, milles osalesid, on lõppenud", "notification.reblog": "{name} jagas edasi postitust", "notification.relationships_severance_event": "Kadunud ühendus kasutajaga {name}", "notification.relationships_severance_event.account_suspension": "{from} admin on kustutanud {target}, mis tähendab, et sa ei saa enam neilt uuendusi või suhelda nendega.", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 97c4250d22..bd1b51ba3e 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -480,7 +480,6 @@ "notification.moderation_warning.action_silence": "Kontua murriztu egin da.", "notification.moderation_warning.action_suspend": "Kontua itxi da.", "notification.own_poll": "Zure inkesta amaitu da", - "notification.poll": "Zuk erantzun duzun inkesta bat bukatu da", "notification.reblog": "{name}(e)k bultzada eman dio zure bidalketari", "notification.relationships_severance_event": "{name} erabiltzailearekin galdutako konexioak", "notification.relationships_severance_event.account_suspension": "{from} zerbitzariko administratzaile batek {target} bertan behera utzi du, hau da, ezin izango dituzu jaso hango eguneratzerik edo hangoekin elkarreragin.", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 18f6466d48..9dc429f7de 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -424,7 +424,6 @@ "notification.follow_request": "{name} درخواست پی‌گیریتان را داد", "notification.mention": "‫{name}‬ به شما اشاره کرد", "notification.own_poll": "نظرسنجیتان پایان یافت", - "notification.poll": "نظرسنجی‌ای که در آن رأی دادید به پایان رسیده است", "notification.reblog": "‫{name}‬ فرسته‌تان را تقویت کرد", "notification.status": "{name} چیزی فرستاد", "notification.update": "{name} فرسته‌ای را ویرایش کرد", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 0767dd5e37..5ba77dd72e 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -157,8 +157,8 @@ "compose_form.poll.multiple": "Monivalinta", "compose_form.poll.option_placeholder": "Vaihtoehto {number}", "compose_form.poll.single": "Valitse yksi", - "compose_form.poll.switch_to_multiple": "Muuta kysely monivalinnaksi", - "compose_form.poll.switch_to_single": "Muuta kysely sallimaan vain yksi valinta", + "compose_form.poll.switch_to_multiple": "Muuta äänestys monivalinnaksi", + "compose_form.poll.switch_to_single": "Muuta äänestys yksittäisvalinnaksi", "compose_form.poll.type": "Tyyli", "compose_form.publish": "Julkaise", "compose_form.publish_form": "Uusi julkaisu", @@ -443,6 +443,8 @@ "mute_modal.title": "Mykistetäänkö käyttäjä?", "mute_modal.you_wont_see_mentions": "Et tule enää näkemään julkaisuja, joissa hänet mainitaan.", "mute_modal.you_wont_see_posts": "Hän voi yhä nähdä julkaisusi, mutta sinä et näe hänen.", + "name_and_others": "{name} ja {count, plural, one {# muu} other {# muuta}}", + "name_and_others_with_link": "{name} ja {count, plural, one {# muu} other {# muuta}}", "navigation_bar.about": "Tietoja", "navigation_bar.advanced_interface": "Avaa edistyneessä selainkäyttöliittymässä", "navigation_bar.blocks": "Estetyt käyttäjät", @@ -469,7 +471,11 @@ "navigation_bar.search": "Hae", "navigation_bar.security": "Turvallisuus", "not_signed_in_indicator.not_signed_in": "Sinun on kirjauduttava sisään käyttääksesi resurssia.", - "notification.admin.report": "{name} teki ilmoituksen käytäjästä {target}", + "notification.admin.report": "{name} raportoi käyttäjän {target}", + "notification.admin.report_account": "{name} raportoi {count, plural, one {julkaisun} other {# julkaisua}} käyttäjältä {target}, syynä {category}", + "notification.admin.report_account_other": "{name} raportoi {count, plural, one {julkaisun} other {# julkaisua}} käyttäjältä {target}", + "notification.admin.report_statuses": "{name} raportoi käyttäjän {target}, syynä {category}", + "notification.admin.report_statuses_other": "{name} raportoi käyttäjän {target}", "notification.admin.sign_up": "{name} rekisteröityi", "notification.favourite": "{name} lisäsi julkaisusi suosikkeihinsa", "notification.follow": "{name} seurasi sinua", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Tiliäsi on rajoitettu.", "notification.moderation_warning.action_suspend": "Tilisi on jäädytetty.", "notification.own_poll": "Äänestyksesi on päättynyt", - "notification.poll": "Kysely, johon osallistuit, on päättynyt", + "notification.poll": "Äänestys, johon osallistuit, on päättynyt", + "notification.private_mention": "{name} mainitsi sinut yksityisesti", "notification.reblog": "{name} tehosti julkaisuasi", "notification.relationships_severance_event": "Menetettiin yhteydet palvelimeen {name}", "notification.relationships_severance_event.account_suspension": "Palvelimen {from} ylläpitäjä on jäädyttänyt palvelimen {target} vuorovaikutuksen. Enää et voi siis vastaanottaa päivityksiä heiltä tai olla yhteyksissä heidän kanssaan.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Uudet ilmoitukset:", "notifications.column_settings.admin.sign_up": "Uudet rekisteröitymiset:", "notifications.column_settings.alert": "Työpöytäilmoitukset", + "notifications.column_settings.beta.category": "Kokeelliset ominaisuudet", + "notifications.column_settings.beta.grouping": "Ryhmittele ilmoitukset", "notifications.column_settings.favourite": "Suosikit:", "notifications.column_settings.filter_bar.advanced": "Näytä kaikki luokat", "notifications.column_settings.filter_bar.category": "Pikasuodatuspalkki", @@ -592,8 +601,8 @@ "poll.vote": "Äänestä", "poll.voted": "Äänestit tätä vastausta", "poll.votes": "{votes, plural, one {# ääni} other {# ääntä}}", - "poll_button.add_poll": "Lisää kysely", - "poll_button.remove_poll": "Poista kysely", + "poll_button.add_poll": "Lisää äänestys", + "poll_button.remove_poll": "Poista äänestys", "privacy.change": "Muuta julkaisun näkyvyyttä", "privacy.direct.long": "Kaikki tässä julkaisussa mainitut", "privacy.direct.short": "Tietyt henkilöt", @@ -623,7 +632,7 @@ "relative_time.today": "tänään", "reply_indicator.attachments": "{count, plural, one {# liite} other {# liitettä}}", "reply_indicator.cancel": "Peruuta", - "reply_indicator.poll": "Kysely", + "reply_indicator.poll": "Äänestys", "report.block": "Estä", "report.block_explanation": "Et näe hänen viestejään, eikä hän voi nähdä viestejäsi tai seurata sinua. Hän näkee, että olet estänyt hänet.", "report.categories.legal": "Juridiset tiedot", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Seuraat tätä tiliä. Estääksesi tilin viestejä näykymästä kotisyötteessäsi, lopeta sen seuraaminen.", "report_notification.attached_statuses": "{count, plural, one {{count} julkaisu} other {{count} julkaisua}} liitteenä", "report_notification.categories.legal": "Laillinen", + "report_notification.categories.legal_sentence": "laiton sisältö", "report_notification.categories.other": "Muu", + "report_notification.categories.other_sentence": "jokin muu", "report_notification.categories.spam": "Roskaposti", + "report_notification.categories.spam_sentence": "roskaposti", "report_notification.categories.violation": "Sääntörikkomus", + "report_notification.categories.violation_sentence": "sääntörikkomus", "report_notification.open": "Avaa raportti", "search.no_recent_searches": "Ei viimeaikaisia hakuja", "search.placeholder": "Hae", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index c27ffe0aa7..dd3d448834 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -443,6 +443,8 @@ "mute_modal.title": "Sløkk brúkara?", "mute_modal.you_wont_see_mentions": "Tú sært ikki postar, sum nevna tey.", "mute_modal.you_wont_see_posts": "Tey síggja framvegis tínar postar, men tú sært ikki teirra.", + "name_and_others": "{name} og {count, plural, one {# annar} other {# onnur}}", + "name_and_others_with_link": "{name} og {count, plural, one {# annar} other {# onnur}}", "navigation_bar.about": "Um", "navigation_bar.advanced_interface": "Lat upp í framkomnum vevmarkamóti", "navigation_bar.blocks": "Bannaðir brúkarar", @@ -470,6 +472,10 @@ "navigation_bar.security": "Trygd", "not_signed_in_indicator.not_signed_in": "Tú mást rita inn fyri at fáa atgongd til hetta tilfarið.", "notification.admin.report": "{name} hevur meldað {target}", + "notification.admin.report_account": "{name} meldaði {count, plural, one {ein post} other {# postar}} frá {target} fyri {category}", + "notification.admin.report_account_other": "{name} meldaði {count, plural, one {ein post} other {# postar}} frá {target}", + "notification.admin.report_statuses": "{name} melaði {target} fyri {category}", + "notification.admin.report_statuses_other": "{name} meldaði {target}", "notification.admin.sign_up": "{name} meldaði seg til", "notification.favourite": "{name} dámdi postin hjá tær", "notification.follow": "{name} fylgdi tær", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Konta tín er avmarkað.", "notification.moderation_warning.action_suspend": "Konta tín er ógildað.", "notification.own_poll": "Tín atkvøðugreiðsla er endað", - "notification.poll": "Ein atkvøðugreiðsla, har tú hevur atkvøtt, er endað", + "notification.poll": "Ein atkvøðugreiðsla, har tú atkvøddi, er endað", + "notification.private_mention": "{name} nevndi teg í privatum boðum", "notification.reblog": "{name} lyfti tín post", "notification.relationships_severance_event": "Mist sambond við {name}", "notification.relationships_severance_event.account_suspension": "Ein umsitari frá {from} hevur gjørt {target} óvirkna, sum merkir, at tú ikki kanst móttaka dagføringar ella virka saman við teimum longur.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nýggjar fráboðanir:", "notifications.column_settings.admin.sign_up": "Nýggjar tilmeldingar:", "notifications.column_settings.alert": "Skriviborðsfráboðanir", + "notifications.column_settings.beta.category": "Royndarhentleikar", + "notifications.column_settings.beta.grouping": "Bólkafráboðanir", "notifications.column_settings.favourite": "Dámdir postar:", "notifications.column_settings.filter_bar.advanced": "Vís allar bólkar", "notifications.column_settings.filter_bar.category": "Skjótfilturbjálki", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Tú fylgir hesi kontuni. Gevst at fylgja henni, um tú ikki longur ynskir at síggja postarnar á heimarásini hjá tær.", "report_notification.attached_statuses": "{count, plural, one {{count} postur atknýttur} other {{count} postar atknýttir}}", "report_notification.categories.legal": "Løgfrøðisligt", + "report_notification.categories.legal_sentence": "ólógligt innihald", "report_notification.categories.other": "Aðrir", + "report_notification.categories.other_sentence": "aðrir", "report_notification.categories.spam": "Ruskpostur", + "report_notification.categories.spam_sentence": "ruskpostur", "report_notification.categories.violation": "Brotin regla", + "report_notification.categories.violation_sentence": "brot á reglu", "report_notification.open": "Opna melding", "search.no_recent_searches": "Ongar nýggjar leitingar", "search.placeholder": "Leita", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 4324855003..94b73bbf18 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -466,7 +466,6 @@ "notification.follow_request": "{name} a demandé à vous suivre", "notification.mention": "{name} vous a mentionné·e", "notification.own_poll": "Votre sondage est terminé", - "notification.poll": "Un sondage auquel vous avez participé est terminé", "notification.reblog": "{name} a boosté votre message", "notification.relationships_severance_event": "Connexions perdues avec {name}", "notification.relationships_severance_event.account_suspension": "Un·e administrateur·rice de {from} a suspendu {target}, ce qui signifie que vous ne pourrez plus recevoir de mises à jour ou interagir avec lui.", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index cd67cda539..fd256fe716 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -466,7 +466,6 @@ "notification.follow_request": "{name} a demandé à vous suivre", "notification.mention": "{name} vous a mentionné·e :", "notification.own_poll": "Votre sondage est terminé", - "notification.poll": "Un sondage auquel vous avez participé vient de se terminer", "notification.reblog": "{name} a partagé votre message", "notification.relationships_severance_event": "Connexions perdues avec {name}", "notification.relationships_severance_event.account_suspension": "Un·e administrateur·rice de {from} a suspendu {target}, ce qui signifie que vous ne pourrez plus recevoir de mises à jour ou interagir avec lui.", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index d787c16bf3..e3b3a96568 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -422,6 +422,7 @@ "mute_modal.hide_options": "Opsjes ferstopje", "mute_modal.indefinite": "Oant ik se net mear negearje", "mute_modal.show_options": "Opsjes toane", + "mute_modal.title": "Brûker negearje?", "navigation_bar.about": "Oer", "navigation_bar.advanced_interface": "Yn avansearre webomjouwing iepenje", "navigation_bar.blocks": "Blokkearre brûkers", @@ -455,7 +456,6 @@ "notification.follow_request": "{name} hat dy in folchfersyk stjoerd", "notification.mention": "{name} hat dy fermeld", "notification.own_poll": "Jo poll is beëinige", - "notification.poll": "In enkête dêr’t jo yn stimd hawwe is beëinige", "notification.reblog": "{name} hat jo berjocht boost", "notification.relationships_severance_event.learn_more": "Mear ynfo", "notification.status": "{name} hat in berjocht pleatst", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 8c5039e2a4..711c97f66c 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -207,7 +207,7 @@ "dismissable_banner.dismiss": "Diúltaigh", "dismissable_banner.explore_links": "Tá na scéalta nuachta seo á phlé anseo agus ar fhreastalaithe eile ar an líonra díláraithe faoi láthair.", "dismissable_banner.explore_statuses": "Is postálacha iad seo ó ar fud an ghréasáin shóisialta atá ag éirí níos tarraingtí inniu. Rangaítear poist níos nuaí le níos mó teanntáin agus ceanáin níos airde.", - "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": "Is hashtags iad seo atá ag tarraingt ar an ngréasán sóisialta inniu. Tá na hashtags a úsáideann níos mó daoine difriúla rangaithe níos airde.", "dismissable_banner.public_timeline": "Seo iad na postálacha poiblí is déanaí ó dhaoine ar an ngréasán sóisialta a leanann daoine ar {domain}.", "domain_block_modal.block": "Bloc freastalaí", "domain_block_modal.block_account_instead": "Cuir bac ar @{name} ina ionad sin", @@ -263,7 +263,7 @@ "empty_column.followed_tags": "Níor lean tú aon hashtags fós. Nuair a dhéanann tú, beidh siad a thaispeáint suas anseo.", "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.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.list": "Níl aon rud ar an liosta seo fós. Nuair a fhoilseoidh baill an liosta seo postálacha nua, beidh siad le feiceáil anseo.", "empty_column.lists": "Níl aon liostaí fós agat. Nuair a chruthaíonn tú ceann, feicfear anseo é.", "empty_column.mutes": "Níl aon úsáideoir balbhaithe agat fós.", "empty_column.notification_requests": "Gach soiléir! Níl aon rud anseo. Nuair a gheobhaidh tú fógraí nua, beidh siad le feiceáil anseo de réir do shocruithe.", @@ -298,7 +298,7 @@ "filter_modal.select_filter.title": "Déan scagadh ar an bpostáil seo", "filter_modal.title.status": "Déan scagadh ar phostáil", "filtered_notifications_banner.mentions": "{count, plural, one {tagairt} other {tagairtí}}", - "filtered_notifications_banner.pending_requests": "Fógraí ó {count, plural, =0 {níl éinne} one {duine amháin} two {# daoine} few {# daoine} many {# daoine} other {# daoine}} b'fhéidir go mbeadh a fhios agat", + "filtered_notifications_banner.pending_requests": "Fógraí ó {count, plural, =0 {duine ar bith} one {duine amháin} two {# daoine} few {# daoine} many {# daoine} other {# daoine}} b'fhéidir go mbeadh a fhios agat", "filtered_notifications_banner.title": "Fógraí scagtha", "firehose.all": "Gach", "firehose.local": "An freastalaí seo", @@ -340,7 +340,7 @@ "hashtag.column_settings.tag_mode.all": "Iad seo go léir", "hashtag.column_settings.tag_mode.any": "Aon cheann díobh seo", "hashtag.column_settings.tag_mode.none": "Níl aon cheann díobh seo", - "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.column_settings.tag_toggle": "Cuir clibeanna breise san áireamh don cholún seo", "hashtag.counter_by_accounts": "{count, plural, one {{counter} rannpháirtí} two {{counter} rannpháirtí} few {{counter} rannpháirtí} many {{counter} rannpháirtí} other {{counter} rannpháirtí}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} post} two {{counter} post} few {{counter} post} many {{counter} post} other {{counter} poist}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} post inniu} other {{counter} poist inniu}} inniu", @@ -375,10 +375,10 @@ "keyboard_shortcuts.back": "Nasclean siar", "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", + "keyboard_shortcuts.column": "Colún fócas", + "keyboard_shortcuts.compose": "Fócas a chumadh textarea", "keyboard_shortcuts.description": "Cur síos", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "chun colún lua príobháideach a oscailt", "keyboard_shortcuts.down": "Bog síos ar an liosta", "keyboard_shortcuts.enter": "Oscail postáil", "keyboard_shortcuts.favourite": "Postáil is fearr leat", @@ -387,12 +387,12 @@ "keyboard_shortcuts.heading": "Aicearraí méarchláir", "keyboard_shortcuts.home": "Oscail amlíne bhaile", "keyboard_shortcuts.hotkey": "Eochair aicearra", - "keyboard_shortcuts.legend": "to display this legend", + "keyboard_shortcuts.legend": "Taispeáin an finscéal seo", "keyboard_shortcuts.local": "Oscail an amlíne áitiúil", "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", + "keyboard_shortcuts.notifications": "Oscail colún fógraí", "keyboard_shortcuts.open_media": "Oscail meáin", "keyboard_shortcuts.pinned": "Oscail liosta postálacha pinn", "keyboard_shortcuts.profile": "Oscail próifíl an t-údar", @@ -443,6 +443,8 @@ "mute_modal.title": "An bhfuil fonn ort úsáideoir a bhalbhú?", "mute_modal.you_wont_see_mentions": "Ní fheicfidh tú postálacha a luann iad.", "mute_modal.you_wont_see_posts": "Is féidir leo do phoist a fheiceáil go fóill, ach ní fheicfidh tú a gcuid postanna.", + "name_and_others": "{name} and {count, plural, one {# eile} two {# eile} few {# eile} many {# eile} other {# eile}}", + "name_and_others_with_link": "{name} agus {count, plural, one {# eile} two {# eile} few {# eile} many {# eile} other {# eile}}", "navigation_bar.about": "Maidir le", "navigation_bar.advanced_interface": "Oscail i gcomhéadan gréasáin chun cinn", "navigation_bar.blocks": "Cuntais bhactha", @@ -468,8 +470,12 @@ "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.", + "not_signed_in_indicator.not_signed_in": "Ní mór duit logáil isteach chun rochtain a fháil ar an acmhainn seo.", "notification.admin.report": "Tuairiscigh {name} {target}", + "notification.admin.report_account": "{name} thuairiscigh {count, plural, one {aon phost} two {# phost} few {# phost} many {# bpost} other {# bpost}} ó {target} do {category}", + "notification.admin.report_account_other": "{name} thuairiscigh {count, plural, one {aon phost} two {# phost} few {# phost} many {# bpost} other {# bpost}} ó {target}", + "notification.admin.report_statuses": "Thuairiscigh {name} {target} le haghaidh {category}", + "notification.admin.report_statuses_other": "{name} tuairiscithe {target}", "notification.admin.sign_up": "Chláraigh {name}", "notification.favourite": "Is fearr le {name} do phostáil", "notification.follow": "Lean {name} thú", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Tá do chuntas teoranta.", "notification.moderation_warning.action_suspend": "Cuireadh do chuntas ar fionraí.", "notification.own_poll": "Tá do suirbhé críochnaithe", - "notification.poll": "Tá suirbhé inar vótáil tú tar éis críochnú", + "notification.poll": "Tá deireadh le vótaíocht inar vótáil tú", + "notification.private_mention": "luaigh {name} tú go príobháideach", "notification.reblog": "Mhol {name} do phostáil", "notification.relationships_severance_event": "Cailleadh naisc le {name}", "notification.relationships_severance_event.account_suspension": "Chuir riarthóir ó {from} {target} ar fionraí, rud a chiallaíonn nach féidir leat nuashonruithe a fháil uathu a thuilleadh ná idirghníomhú leo.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Tuairiscí nua:", "notifications.column_settings.admin.sign_up": "Clárúcháin nua:", "notifications.column_settings.alert": "Fógraí deisce", + "notifications.column_settings.beta.category": "Gnéithe turgnamhacha", + "notifications.column_settings.beta.grouping": "Fógraí grúpa", "notifications.column_settings.favourite": "Ceanáin:", "notifications.column_settings.filter_bar.advanced": "Taispeáin gach catagóir", "notifications.column_settings.filter_bar.category": "Barra scagairí tapa", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Tá tú ag leanúint an chuntais seo. Chun nach bhfeicfidh tú a bpoist i do fhotha baile a thuilleadh, dílean ​​iad.", "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", "report_notification.categories.legal": "Dlíthiúil", + "report_notification.categories.legal_sentence": "ábhar mídhleathach", "report_notification.categories.other": "Eile", + "report_notification.categories.other_sentence": "eile", "report_notification.categories.spam": "Turscar", + "report_notification.categories.spam_sentence": "turscar", "report_notification.categories.violation": "Sárú rialach", + "report_notification.categories.violation_sentence": "sárú riail", "report_notification.open": "Oscail tuairisc", "search.no_recent_searches": "Níl aon chuardach le déanaí", "search.placeholder": "Cuardaigh", @@ -787,11 +800,11 @@ "upload_button.label": "Cuir íomhánna, físeán nó comhad fuaime leis", "upload_error.limit": "Sáraíodh an teorainn uaslódála comhaid.", "upload_error.poll": "Ní cheadaítear uaslódáil comhad le pobalbhreith.", - "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.audio_description": "Déan cur síos ar dhaoine bodhra nó lagéisteachta", "upload_form.description": "Describe for the visually impaired", "upload_form.edit": "Cuir in eagar", "upload_form.thumbnail": "Athraigh mionsamhail", - "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_form.video_description": "Déan cur síos ar dhaoine atá bodhar, lagéisteachta, dall nó lagamhairc", "upload_modal.analyzing_picture": "Ag anailísiú íomhá…", "upload_modal.apply": "Cuir i bhFeidhm", "upload_modal.applying": "Á gcur i bhfeidhm…", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index fec025045c..93268c2715 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -470,7 +470,6 @@ "notification.mention": "Thug {name} iomradh ort", "notification.moderation-warning.learn_more": "Barrachd fiosrachaidh", "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", "notification.reblog": "Bhrosnaich {name} am post agad", "notification.relationships_severance_event": "Chaill thu dàimhean le {name}", "notification.relationships_severance_event.account_suspension": "Chuir rianaire aig {from} {target} à rèim agus is ciall dha sin nach fhaigh thu naidheachdan uapa ’s nach urrainn dhut conaltradh leotha.", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c1e0f97f80..d64789b86c 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -443,6 +443,8 @@ "mute_modal.title": "Acalar usuaria?", "mute_modal.you_wont_see_mentions": "Non verás as publicacións que a mencionen.", "mute_modal.you_wont_see_posts": "Seguirá podendo ler as túas publicacións, pero non verás as súas.", + "name_and_others": "{name} e {count, plural, one {outra máis} other {# máis}}", + "name_and_others_with_link": "{name} e {count, plural, one {outra máis} other {# máis}}", "navigation_bar.about": "Sobre", "navigation_bar.advanced_interface": "Abrir coa interface web avanzada", "navigation_bar.blocks": "Usuarias bloqueadas", @@ -470,6 +472,10 @@ "navigation_bar.security": "Seguranza", "not_signed_in_indicator.not_signed_in": "Debes acceder para ver este recurso.", "notification.admin.report": "{name} denunciou a {target}", + "notification.admin.report_account": "{name} denunciou {count, plural, one {unha publicación} other {# publicacións}} de {target} por {category}", + "notification.admin.report_account_other": "{name} denunciou {count, plural, one {unha publicación} other {# publicacións}} de {target}", + "notification.admin.report_statuses": "{name} deununciou a {target} por {category}", + "notification.admin.report_statuses_other": "{name} denunciou a {target}", "notification.admin.sign_up": "{name} rexistrouse", "notification.favourite": "{name} marcou como favorita a túa publicación", "notification.follow": "{name} comezou a seguirte", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "A túa conta foi suspendida.", "notification.own_poll": "A túa enquisa rematou", "notification.poll": "Rematou a enquisa na que votaches", + "notification.private_mention": "{name} mencionoute de xeito privado", "notification.reblog": "{name} compartiu a túa publicación", "notification.relationships_severance_event": "Perdeuse a conexión con {name}", "notification.relationships_severance_event.account_suspension": "A administración de {from} suspendeu a {target}, o que significa que xa non vas recibir actualizacións de esa conta ou interactuar con ela.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Novas denuncias:", "notifications.column_settings.admin.sign_up": "Novas usuarias:", "notifications.column_settings.alert": "Notificacións de escritorio", + "notifications.column_settings.beta.category": "Características experimentais", + "notifications.column_settings.beta.grouping": "Notificacións de grupo", "notifications.column_settings.favourite": "Favoritas:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Estás a seguir esta conta. Deixar de ver as súas publicacións na túa cronoloxía, non seguila.", "report_notification.attached_statuses": "Achegou {count, plural, one {{count} publicación} other {{count} publicacións}}", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "contido ilegal", "report_notification.categories.other": "Outro", + "report_notification.categories.other_sentence": "outra", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Faltou ás regras", + "report_notification.categories.violation_sentence": "violación das regras", "report_notification.open": "Abrir a denuncia", "search.no_recent_searches": "Non hai buscas recentes", "search.placeholder": "Procurar", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 8111a56e89..3687df7b87 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -443,6 +443,8 @@ "mute_modal.title": "להשתיק משתמש?", "mute_modal.you_wont_see_mentions": "לא תראה הודעות שמאזכרות אותם.", "mute_modal.you_wont_see_posts": "הם יכולים לראות את הודעותכם, אבל אתם לא תוכלו לראות את שלהם.", + "name_and_others": "{name} ועוד {count, plural,one {אחד נוסף}other {# נוספים}}", + "name_and_others_with_link": "{name} ועוד {count, plural,one {אחד נוסף}other {# נוספים}}", "navigation_bar.about": "אודות", "navigation_bar.advanced_interface": "פתח במנשק ווב מתקדם", "navigation_bar.blocks": "משתמשים חסומים", @@ -470,6 +472,10 @@ "navigation_bar.security": "אבטחה", "not_signed_in_indicator.not_signed_in": "יש להיות מאומת כדי לגשת למשאב זה.", "notification.admin.report": "{name} דיווח.ה על {target}", + "notification.admin.report_account": "{name} דווחו על {count, plural, one {הודעה אחת} two {הודעותיים} many {# הודעות} other {# הודעות}} מאת {target} בגין {category}", + "notification.admin.report_account_other": "{name} דווחו על {count, plural, one {הודעה אחת} two {הודעותיים} many {# הודעות} other {# הודעות}} מאת {target}", + "notification.admin.report_statuses": "{name} דווחו על {target} בגין {category}", + "notification.admin.report_statuses_other": "{name} דיווח.ה על {target}", "notification.admin.sign_up": "{name} נרשמו", "notification.favourite": "הודעתך חובבה על ידי {name}", "notification.follow": "{name} במעקב אחרייך", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "חשבונך הושעה.", "notification.own_poll": "הסקר שלך הסתיים", "notification.poll": "סקר שהצבעת בו הסתיים", + "notification.private_mention": "{name} פנה/פנתה אליך בפרטיות", "notification.reblog": "הודעתך הודהדה על ידי {name}", "notification.relationships_severance_event": "אבד הקשר עם {name}", "notification.relationships_severance_event.account_suspension": "מנהל.ת משרת {from} השע(ת)ה את {target}, ולפיכך לא תעודכנו יותר על ידם ולא תוכלו להיות איתם בקשר.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "דו\"חות חדשים", "notifications.column_settings.admin.sign_up": "הרשמות חדשות:", "notifications.column_settings.alert": "התראות לשולחן העבודה", + "notifications.column_settings.beta.category": "יכולות ניסיוניות", + "notifications.column_settings.beta.grouping": "התראות קבוצה", "notifications.column_settings.favourite": "חיבובים:", "notifications.column_settings.filter_bar.advanced": "להציג את כל הקטגוריות", "notifications.column_settings.filter_bar.category": "שורת סינון מהיר", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "אתם עוקבים אחרי החשבון הזה. כדי להפסיק לראות את הפרסומים שלו בפיד הבית שלכם, הפסיקו לעקוב אחריו.", "report_notification.attached_statuses": "{count, plural, one {הודעה מצורפת} two {הודעותיים מצורפות} many {{count} הודעות מצורפות} other {{count} הודעות מצורפות}}", "report_notification.categories.legal": "חוקי", + "report_notification.categories.legal_sentence": "תוכן בלתי חוקי", "report_notification.categories.other": "שונות", + "report_notification.categories.other_sentence": "אחר", "report_notification.categories.spam": "ספאם (דואר זבל)", + "report_notification.categories.spam_sentence": "ספאם (דואר זבל)", "report_notification.categories.violation": "הפרת כלל", + "report_notification.categories.violation_sentence": "הפרת כלל", "report_notification.open": "פתח דו\"ח", "search.no_recent_searches": "לא נמצאו חיפושים אחרונים", "search.placeholder": "חיפוש", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index c8f6f01862..5d087dae94 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -342,7 +342,6 @@ "notification.follow_request": "{name} zatražio/la je da Vas prati", "notification.mention": "{name} Vas je spomenuo", "notification.own_poll": "Vaša anketa je završila", - "notification.poll": "Anketa u kojoj ste glasali je završila", "notification.reblog": "{name} je boostao/la Vaš status", "notifications.clear": "Očisti obavijesti", "notifications.clear_confirmation": "Želite li zaista trajno očistiti sve Vaše obavijesti?", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 1fcadc8f9c..fd9ce38eb1 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -443,6 +443,8 @@ "mute_modal.title": "Elnémítsuk a felhasználót?", "mute_modal.you_wont_see_mentions": "Nem látsz majd őt említő bejegyzéseket.", "mute_modal.you_wont_see_posts": "Továbbra is látni fogja a bejegyzéseidet, de te nem fogod látni az övéit.", + "name_and_others": "{name} és {count, plural, one {# másik} other {# másik}}", + "name_and_others_with_link": "{name} és {count, plural, one {# másik} other {# másik}}", "navigation_bar.about": "Névjegy", "navigation_bar.advanced_interface": "Megnyitás a speciális webes felületben", "navigation_bar.blocks": "Letiltott felhasználók", @@ -470,6 +472,10 @@ "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}", + "notification.admin.report_account": "{name} jelentett {count, plural, one {egy bejegyzést} other {# bejegyzést}} itt: {target}, ezért: {category}", + "notification.admin.report_account_other": "{name} jelentett {count, plural, one {egy bejegyzést} other {# bejegyzést}} itt: {target}", + "notification.admin.report_statuses": "{name} jelentette: {target}, ezért: {category}", + "notification.admin.report_statuses_other": "{name} jelentette: {target}", "notification.admin.sign_up": "{name} regisztrált", "notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet", "notification.follow": "{name} követ téged", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "A fiókod korlátozásra került.", "notification.moderation_warning.action_suspend": "A fiókod felfüggesztésre került.", "notification.own_poll": "A szavazásod véget ért", - "notification.poll": "Egy szavazás, melyben részt vettél, véget ért", + "notification.poll": "Véget ért egy szavazás, melyben részt vettél", + "notification.private_mention": "{name} privátban megemlített", "notification.reblog": "{name} megtolta a bejegyzésedet", "notification.relationships_severance_event": "Elvesztek a kapcsolatok vele: {name}", "notification.relationships_severance_event.account_suspension": "Egy admin a(z) {from} kiszolgálóról felfüggesztette {target} fiókját, ami azt jelenti, hogy mostantól nem fogsz róla értesítést kapni, és nem fogsz tudni vele kapcsolatba lépni.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Új jelentések:", "notifications.column_settings.admin.sign_up": "Új regisztrálók:", "notifications.column_settings.alert": "Asztali értesítések", + "notifications.column_settings.beta.category": "Kísérleti funkciók", + "notifications.column_settings.beta.grouping": "Csoportértesítések", "notifications.column_settings.favourite": "Kedvencek:", "notifications.column_settings.filter_bar.advanced": "Minden kategória megjelenítése", "notifications.column_settings.filter_bar.category": "Gyorsszűrő sáv", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Követed ezt a fiókot. Hogy ne lásd a bejegyzéseit a saját idővonaladon, szüntesd meg a követését.", "report_notification.attached_statuses": "{count} bejegyzés mellékelve", "report_notification.categories.legal": "Jogi", + "report_notification.categories.legal_sentence": "illegális tartalom", "report_notification.categories.other": "Egyéb", + "report_notification.categories.other_sentence": "egyéb", "report_notification.categories.spam": "Kéretlen üzenet", + "report_notification.categories.spam_sentence": "kéretlen üzenet", "report_notification.categories.violation": "Szabálysértés", + "report_notification.categories.violation_sentence": "szabálysértés", "report_notification.open": "Bejelentés megnyitása", "search.no_recent_searches": "Nincsenek keresési előzmények", "search.placeholder": "Keresés", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index b4abe9bf09..4a197185e3 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -324,7 +324,6 @@ "notification.follow_request": "{name} քեզ հետեւելու հայց է ուղարկել", "notification.mention": "{name} նշեց քեզ", "notification.own_poll": "Հարցումդ աւարտուեց", - "notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։", "notification.reblog": "{name} տարածեց գրառումդ", "notification.status": "{name} հենց նոր գրառում արեց", "notification.update": "{name}-ը փոխել է գրառումը", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index ace6402ee1..db1ead30c8 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Tu conto ha essite limitate.", "notification.moderation_warning.action_suspend": "Tu conto ha essite suspendite.", "notification.own_poll": "Tu sondage ha finite", - "notification.poll": "Un sondage in le qual tu ha votate ha finite", "notification.reblog": "{name} ha impulsate tu message", "notification.relationships_severance_event": "Connexiones perdite con {name}", "notification.relationships_severance_event.account_suspension": "Un administrator de {from} ha suspendiute {target}. Isto significa que tu non pote plus reciper actualisationes de iste persona o interager con ille.", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index f4e5e1baea..e139796bf1 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -426,7 +426,6 @@ "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 kiriman Anda", "notification.status": "{name} baru saja mengirim", "notification.update": "{name} mengedit kiriman", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index c75788c430..3ece43918b 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -480,7 +480,6 @@ "notification.moderation_warning.action_silence": "Tui conto ha esset limitat.", "notification.moderation_warning.action_suspend": "Tui conto ha esset suspendet.", "notification.own_poll": "Tui balotation ha finit", - "notification.poll": "Un balotation in quel tu votat ha finit", "notification.reblog": "{name} boostat tui posta", "notification.relationships_severance_event": "Perdit conexiones con {name}", "notification.relationships_severance_event.account_suspension": "Un admin de {from} ha suspendet {target}, dunc con ti person tu ne plu posse reciver actualisationes ni far interactiones.", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 6aa954ae57..839939687d 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -402,7 +402,6 @@ "notification.follow_request": "{name} demandas sequar vu", "notification.mention": "{name} mencionis tu", "notification.own_poll": "Vua votposto finigis", - "notification.poll": "Votposto quo havas vua voto finigis", "notification.reblog": "{name} repetis tua mesajo", "notification.status": "{name} nove postigis", "notification.update": "{name} modifikis posto", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 1a38591b85..27d23aafd0 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -443,6 +443,8 @@ "mute_modal.title": "Þagga niður í notanda?", "mute_modal.you_wont_see_mentions": "Þú munt ekki sjá færslur sem minnast á viðkomandi aðila.", "mute_modal.you_wont_see_posts": "Viðkomandi geta áfram séð færslurnar þínar en þú munt ekki sjá færslurnar þeirra.", + "name_and_others": "{name} og {count, plural, one {# annar} other {# aðrir}}", + "name_and_others_with_link": "{name} og {count, plural, one {# annar} other {# aðrir}}", "navigation_bar.about": "Um hugbúnaðinn", "navigation_bar.advanced_interface": "Opna í ítarlegu vefviðmóti", "navigation_bar.blocks": "Útilokaðir notendur", @@ -470,6 +472,10 @@ "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}", + "notification.admin.report_account": "{name} kærði {count, plural, one {eina færslu} other {# færslur}} frá {target} fyrir {category}", + "notification.admin.report_account_other": "{name} kærði {count, plural, one {eina færslu} other {# færslur}} frá {target}", + "notification.admin.report_statuses": "{name} kærði {target} fyrir {category}", + "notification.admin.report_statuses_other": "{name} kærði {target}", "notification.admin.sign_up": "{name} skráði sig", "notification.favourite": "{name} setti færsluna þína í eftirlæti", "notification.follow": "{name} fylgist með þér", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Notandaaðgangurinn þinn hefur verið takmarkaður.", "notification.moderation_warning.action_suspend": "Notandaaðgangurinn þinn hefur verið settur í frysti.", "notification.own_poll": "Könnuninni þinni er lokið", - "notification.poll": "Könnun sem þú tókst þátt í er lokið", + "notification.poll": "Könnun sem þú greiddir atkvæði í er lokið", + "notification.private_mention": "{name} minntist á þig í einrúmi", "notification.reblog": "{name} endurbirti færsluna þína", "notification.relationships_severance_event": "Missti tengingar við {name}", "notification.relationships_severance_event.account_suspension": "Stjórnandi á {from} hefur fryst {target}, sem þýðir að þú færð ekki lengur skilaboð frá viðkomandi né átt í samskiptum við viðkomandi.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nýjar kærur:", "notifications.column_settings.admin.sign_up": "Nýjar skráningar:", "notifications.column_settings.alert": "Tilkynningar á skjáborði", + "notifications.column_settings.beta.category": "Eiginleikar á tilraunastigi", + "notifications.column_settings.beta.grouping": "Tilkynningar hópa", "notifications.column_settings.favourite": "Eftirlæti:", "notifications.column_settings.filter_bar.advanced": "Birta alla flokka", "notifications.column_settings.filter_bar.category": "Skyndisíustika", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Þú ert að fylgjast með þessum aðgangi. Til að hætta að sjá viðkomandi færslur á streyminu þínu, skaltu hætta að fylgjast með viðkomandi.", "report_notification.attached_statuses": "{count, plural, one {{count} færsla} other {{count} færslur}} viðhengdar", "report_notification.categories.legal": "Löglegt", + "report_notification.categories.legal_sentence": "ólöglegt efni", "report_notification.categories.other": "Annað", + "report_notification.categories.other_sentence": "annað", "report_notification.categories.spam": "Ruslpóstur", + "report_notification.categories.spam_sentence": "ruslpóstur", "report_notification.categories.violation": "Brot á reglum", + "report_notification.categories.violation_sentence": "brot á reglum", "report_notification.open": "Opin kæra", "search.no_recent_searches": "Engar nýlegar leitir", "search.placeholder": "Leita", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 73c4f9ba60..419b6bcd9f 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -443,6 +443,8 @@ "mute_modal.title": "Silenziare l'utente?", "mute_modal.you_wont_see_mentions": "Non vedrai i post che li menzionano.", "mute_modal.you_wont_see_posts": "Possono ancora vedere i tuoi post, ma tu non vedrai i loro.", + "name_and_others": "{name} e {count, plural, one {# un altro} other {# altri}}", + "name_and_others_with_link": "{name} e {count, plural, one {# un altro} other {# altri}}", "navigation_bar.about": "Info", "navigation_bar.advanced_interface": "Apri nell'interfaccia web avanzata", "navigation_bar.blocks": "Utenti bloccati", @@ -470,6 +472,10 @@ "navigation_bar.security": "Sicurezza", "not_signed_in_indicator.not_signed_in": "Devi accedere per consultare questa risorsa.", "notification.admin.report": "{name} ha segnalato {target}", + "notification.admin.report_account": "{name} ha segnalato {count, plural, one {un post} other {# post}} da {target} per {category}", + "notification.admin.report_account_other": "{name} ha segnalato {count, plural, one {un post} other {# post}} da {target}", + "notification.admin.report_statuses": "{name} ha segnalato {target} per {category}", + "notification.admin.report_statuses_other": "{name} ha segnalato {target}", "notification.admin.sign_up": "{name} si è iscritto", "notification.favourite": "{name} ha aggiunto il tuo post ai preferiti", "notification.follow": "{name} ha iniziato a seguirti", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "Il tuo account è stato sospeso.", "notification.own_poll": "Il tuo sondaggio è terminato", "notification.poll": "Un sondaggio in cui hai votato è terminato", + "notification.private_mention": "{name} ti ha citato privatamente", "notification.reblog": "{name} ha rebloggato il tuo post", "notification.relationships_severance_event": "Connessioni perse con {name}", "notification.relationships_severance_event.account_suspension": "Un amministratore da {from} ha sospeso {target}, il che significa che non puoi più ricevere aggiornamenti da loro o interagire con loro.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nuove segnalazioni:", "notifications.column_settings.admin.sign_up": "Nuove iscrizioni:", "notifications.column_settings.alert": "Notifiche desktop", + "notifications.column_settings.beta.category": "Funzioni sperimentali", + "notifications.column_settings.beta.grouping": "Notifiche di gruppo", "notifications.column_settings.favourite": "Preferiti:", "notifications.column_settings.filter_bar.advanced": "Mostra tutte le categorie", "notifications.column_settings.filter_bar.category": "Barra del filtro veloce", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Segui questo profilo. Per non visualizzare più i suoi post nel feed della tua home, smetti di seguirlo.", "report_notification.attached_statuses": "{count, plural, one {{count} post allegato} other {{count} post allegati}}", "report_notification.categories.legal": "Legale", + "report_notification.categories.legal_sentence": "contenuti illegali", "report_notification.categories.other": "Altro", + "report_notification.categories.other_sentence": "altri", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Violazione delle regole", + "report_notification.categories.violation_sentence": "violazione delle regole", "report_notification.open": "Apri segnalazione", "search.no_recent_searches": "Nessuna ricerca recente", "search.placeholder": "Cerca", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 36974c7602..5168c1c0c0 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "あなたのアカウントは制限されています。", "notification.moderation_warning.action_suspend": "あなたのアカウントは停止されました。", "notification.own_poll": "アンケートが終了しました", - "notification.poll": "アンケートが終了しました", "notification.reblog": "{name}さんがあなたの投稿をブーストしました", "notification.relationships_severance_event": "{name} との関係が失われました", "notification.relationships_severance_event.account_suspension": "{from} の管理者が {target} さんを停止したため、今後このユーザーとの交流や新しい投稿の受け取りができなくなりました。", @@ -503,6 +502,8 @@ "notifications.column_settings.admin.report": "新しい通報:", "notifications.column_settings.admin.sign_up": "新規登録:", "notifications.column_settings.alert": "デスクトップ通知", + "notifications.column_settings.beta.category": "実験段階の機能", + "notifications.column_settings.beta.grouping": "通知をグループにまとめる", "notifications.column_settings.favourite": "お気に入り:", "notifications.column_settings.filter_bar.advanced": "すべてのカテゴリを表示", "notifications.column_settings.filter_bar.category": "クイックフィルターバー:", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index ab0a6ce22b..776b3446a2 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -20,10 +20,10 @@ "account.cancel_follow_request": "Sefsex taḍfart", "account.copy": "Nɣel assaɣ ɣer umaɣnu", "account.direct": "Bder-d @{name} weḥd-s", - "account.disable_notifications": "Ḥbes ur iyi-d-ttazen ara ilɣa mi ara d-isuffeɣ @{name}", + "account.disable_notifications": "Ḥbes ur iyi-d-ttazen ara alɣuten 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.enable_notifications": "Azen-iyi-d alɣuten mi ara d-isuffeɣ @{name}", "account.endorse": "Welleh fell-as deg umaɣnu-inek", "account.featured_tags.last_status_at": "Tasuffeɣt taneggarut ass n {date}", "account.featured_tags.last_status_never": "Ulac tisuffaɣ", @@ -45,7 +45,7 @@ "account.mention": "Bder-d @{name}", "account.moved_to": "{name} yenna-d dakken amiḍan-is amaynut yuɣal :", "account.mute": "Sgugem @{name}", - "account.mute_notifications_short": "Susem ilɣa", + "account.mute_notifications_short": "Susem alɣuten", "account.mute_short": "Sgugem", "account.muted": "Yettwasgugem", "account.no_bio": "Ulac aglam i d-yettunefken.", @@ -103,7 +103,7 @@ "column.home": "Agejdan", "column.lists": "Tibdarin", "column.mutes": "Imiḍanen yettwasgugmen", - "column.notifications": "Tilɣa", + "column.notifications": "Alɣuten", "column.pins": "Tisuffaɣ yettwasenṭḍen", "column.public": "Tasuddemt tamatut", "column_back_button.label": "Tuɣalin", @@ -210,7 +210,7 @@ "empty_column.list": "Ar tura ur yelli kra deg umuɣ-a. Ad d-yettwasken da ticki iɛeggalen n wumuɣ-a suffɣen-d kra.", "empty_column.lists": "Ulac ɣur-k·m kra n wumuɣ yakan. Ad d-tettwasken da ticki tesluleḍ-d yiwet.", "empty_column.mutes": "Ulac ɣur-k·m imseqdacen i yettwasgugmen.", - "empty_column.notifications": "Ulac ɣur-k·m tilɣa. Sedmer akked yemdanen-nniḍen akken ad tebduḍ adiwenni.", + "empty_column.notifications": "Ulac ɣur-k·m alɣuten. Sedmer akked yemdanen-nniḍen akken ad tebduḍ adiwenni.", "empty_column.public": "Ulac kra da! Aru kra, neɣ ḍfeṛ imdanen i yellan deg yiqeddacen-nniḍen akken ad d-teččar tsuddemt tazayezt", "error.unexpected_crash.next_steps": "Smiren asebter-a, ma ur yekkis ara wugur, ẓer d akken tzemreḍ ad tesqedceḍ Maṣṭudun deg yiminig-nniḍen neɣ deg usnas anaṣli.", "errors.unexpected_crash.copy_stacktrace": "Nɣel stacktrace ɣef wafus", @@ -247,7 +247,7 @@ "footer.keyboard_shortcuts": "Inegzumen n unasiw", "footer.privacy_policy": "Tasertit tabaḍnit", "footer.source_code": "Wali tangalt taɣbalut", - "footer.status": "N tsuffeɣt", + "footer.status": "Addad", "generic.saved": "Yettwasekles", "getting_started.heading": "Bdu", "hashtag.column_header.tag_mode.all": "d {additional}", @@ -305,7 +305,7 @@ "keyboard_shortcuts.mention": "akken ad d-bedreḍ ameskar", "keyboard_shortcuts.muted": "akken ad teldiḍ tabdart n yimseqdacen yettwasgugmen", "keyboard_shortcuts.my_profile": "akken ad d-teldiḍ amaɣnu-ik", - "keyboard_shortcuts.notifications": "akken ad d-teldiḍ ajgu n tilɣa", + "keyboard_shortcuts.notifications": "akken ad d-teldiḍ ajgu n walɣuten", "keyboard_shortcuts.open_media": "i tiɣwalin yeldin", "keyboard_shortcuts.pinned": "akken ad teldiḍ tabdart n tjewwiqin yettwasentḍen", "keyboard_shortcuts.profile": "akken ad d-teldiḍ amaɣnu n umeskar", @@ -327,7 +327,7 @@ "limited_account_hint.action": "Wali amaɣnu akken yebɣu yili", "link_preview.author": "S-ɣur {name}", "link_preview.more_from_author": "Ugar sɣur {name}", - "link_preview.shares": "{count, plural, one {{counter} post} other {{counter} posts}}", + "link_preview.shares": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}", "lists.account.add": "Rnu ɣer tebdart", "lists.account.remove": "Kkes seg tebdart", "lists.delete": "Kkes tabdart", @@ -383,17 +383,17 @@ "notification.moderation-warning.learn_more": "Issin ugar", "notification.moderation_warning.action_suspend": "Yettwaseḥbes umiḍan-ik.", "notification.own_poll": "Tafrant-ik·im tfuk", - "notification.poll": "Tfukk tefrant ideg tettekkaḍ", "notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen", "notification.relationships_severance_event.learn_more": "Issin ugar", "notification.status": "{name} akken i d-yessufeɣ", "notification_requests.accept": "Qbel", "notification_requests.dismiss": "Agi", - "notification_requests.notifications_from": "Ilɣa sɣur {name}", - "notifications.clear": "Sfeḍ tilɣa", - "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?", + "notification_requests.notifications_from": "Alɣuten sɣur {name}", + "notifications.clear": "Sfeḍ alɣuten", + "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk alɣuten-inek·em i lebda?", "notifications.column_settings.admin.report": "Ineqqisen imaynuten:", - "notifications.column_settings.alert": "Tilɣa n tnarit", + "notifications.column_settings.alert": "Alɣuten n tnarit", + "notifications.column_settings.beta.grouping": "Segrew alɣuten", "notifications.column_settings.favourite": "Imenyafen:", "notifications.column_settings.filter_bar.advanced": "Sken-d akk taggayin", "notifications.column_settings.filter_bar.category": "Iri n usizdeg uzrib", @@ -401,12 +401,12 @@ "notifications.column_settings.follow_request": "Isuturen imaynuten n teḍfeṛt:", "notifications.column_settings.mention": "Abdar:", "notifications.column_settings.poll": "Igemmaḍ n usenqed:", - "notifications.column_settings.push": "Tilɣa yettudemmren", + "notifications.column_settings.push": "Alɣuten yettudemmren", "notifications.column_settings.reblog": "Seǧhed:", "notifications.column_settings.show": "Ssken-d tilɣa deg ujgu", "notifications.column_settings.sound": "Rmed imesli", "notifications.column_settings.status": "Tisuffaɣ timaynutin :", - "notifications.column_settings.unread_notifications.category": "Ilɣa ur nettwaɣra", + "notifications.column_settings.unread_notifications.category": "Alɣuten ur nettwaɣra", "notifications.column_settings.update": "Iẓreg:", "notifications.filter.all": "Akk", "notifications.filter.boosts": "Seǧhed", @@ -416,9 +416,9 @@ "notifications.filter.polls": "Igemmaḍ n usenqed", "notifications.filter.statuses": "Ileqman n yimdanen i teṭṭafareḍ", "notifications.grant_permission": "Mudd tasiregt.", - "notifications.group": "{count} n tilɣa", - "notifications.mark_as_read": "Creḍ meṛṛa iilɣa am wakken ttwaɣran", - "notifications.permission_denied": "D awezɣi ad yili wermad n yilɣa n tnarit axateṛ turagt tettwagdel.", + "notifications.group": "{count} n walɣuten", + "notifications.mark_as_read": "Creḍ meṛṛa alɣuten am wakken ttwaɣran", + "notifications.permission_denied": "D awezɣi ad yili wermad n walɣuten n tnarit axateṛ turagt tettwagdel", "notifications.policy.filter_new_accounts.hint": "Imiḍanen imaynuten i d-yennulfan deg {days, plural, one {yiwen n wass} other {# n wussan}} yezrin", "notifications.policy.filter_new_accounts_title": "Imiḍan imaynuten", "notifications.policy.filter_not_followers_hint": "Ula d wid akked tid i k·m-id-iḍefren, ur wwiḍen ara {days, plural, one {yiwen n wass} other {# n wussan}}", @@ -426,8 +426,8 @@ "notifications.policy.filter_not_following_hint": "Alamma tqebleḍ-ten s ufus", "notifications.policy.filter_not_following_title": "Wid akked tid ur tettḍafareḍ ara", "notifications.policy.filter_private_mentions_title": "Abdar uslig ur yettwasferken ara", - "notifications.policy.title": "Sizdeg ilɣa sɣur …", - "notifications_permission_banner.enable": "Rmed talɣutin n tnarit", + "notifications.policy.title": "Sizdeg alɣuten sɣur …", + "notifications_permission_banner.enable": "Rmed alɣuten n tnarit", "notifications_permission_banner.title": "Ur zeggel acemma", "onboarding.action.back": "Tuɣalin ɣer deffir", "onboarding.actions.back": "Tuɣalin ɣer deffir", @@ -522,7 +522,7 @@ "report.thanks.title": "Ur tebɣiḍ ara ad twaliḍ aya?", "report.thanks.title_actionable": "Tanemmirt ɣef uneqqis, ad nwali deg waya.", "report.unfollow": "Seḥbes aḍfar n @{name}", - "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", + "report_notification.attached_statuses": "{count, plural, one {{count} n tsuffeɣt} other {{count} n tsuffiɣin}} ttwaqnent", "report_notification.categories.legal": "Azerfan", "report_notification.categories.other": "Ayen nniḍen", "report_notification.categories.spam": "Aspam", @@ -609,7 +609,7 @@ "status.unpin": "Kkes asenteḍ seg umaɣnu", "subscribed_languages.save": "Sekles ibeddilen", "tabs_bar.home": "Agejdan", - "tabs_bar.notifications": "Tilɣa", + "tabs_bar.notifications": "Alɣuten", "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 efeee16c65..74fb33a91a 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -248,7 +248,6 @@ "notification.follow_request": "{name} сізге жазылғысы келеді", "notification.mention": "{name} сізді атап өтті", "notification.own_poll": "Сауалнама аяқталды", - "notification.poll": "Бұл сауалнаманың мерзімі аяқталыпты", "notification.reblog": "{name} жазбаңызды бөлісті", "notifications.clear": "Ескертпелерді тазарт", "notifications.clear_confirmation": "Шынымен барлық ескертпелерді өшіресіз бе?", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index fe3582c1d8..6619cdb2d6 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "계정이 제한되었습니다.", "notification.moderation_warning.action_suspend": "계정이 정지되었습니다.", "notification.own_poll": "설문을 마침", - "notification.poll": "참여한 설문이 종료됨", "notification.reblog": "{name} 님이 부스트했습니다", "notification.relationships_severance_event": "{name} 님과의 연결이 끊어졌습니다", "notification.relationships_severance_event.account_suspension": "{from}의 관리자가 {target}를 정지시켰기 때문에 그들과 더이상 상호작용 할 수 없고 정보를 받아볼 수 없습니다.", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 5248cdfa51..3821216a9a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -349,7 +349,6 @@ "notification.follow_request": "{name} dixwazê te bişopîne", "notification.mention": "{name} qale te kir", "notification.own_poll": "Rapirsîya te qediya", - "notification.poll": "Rapirsiyeke ku te deng daye qediya", "notification.reblog": "{name} şandiya te bilind kir", "notification.status": "{name} niha şand", "notification.update": "{name} şandiyek serrast kir", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 1afcf645cf..f59f342cbe 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -239,7 +239,6 @@ "notification.follow_request": "{name} a bysis agas holya", "notification.mention": "{name} a wrug agas meneges", "notification.own_poll": "Agas sondyans a worfennas", - "notification.poll": "An sondyans may hwrussowgh ragleva a worfennas", "notification.reblog": "{name} a generthas agas post", "notification.status": "{name} a wrug nowydh postya", "notifications.clear": "Dilea gwarnyansow", diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json index aa209fcc00..e35e7112be 100644 --- a/app/javascript/mastodon/locales/la.json +++ b/app/javascript/mastodon/locales/la.json @@ -150,7 +150,6 @@ "notification.moderation_warning.action_silence": "Ratio tua est limitata.", "notification.moderation_warning.action_suspend": "Ratio tua suspensus est.", "notification.own_poll": "Suffragium tuum terminatum est.", - "notification.poll": "Electione in quam suffragium dedisti finita est.", "notification.reblog": "{name} tuum nuntium amplificavit.", "notification.relationships_severance_event.account_suspension": "Admin ab {from} {target} suspendit, quod significat nōn iam posse tē novitātēs ab eīs accipere aut cum eīs interagere.", "notification.relationships_severance_event.domain_block": "Admin ab {from} {target} obsēcāvit, includēns {followersCount} ex tuīs sectātōribus et {followingCount, plural, one {# ratione} other {# rationibus}} quās sequeris.", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 292f00818c..2dc360f9ed 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -300,6 +300,7 @@ "follow_suggestions.hints.similar_to_recently_followed": "Este profil es similar a otros ke tienes segido resientemente.", "follow_suggestions.personalized_suggestion": "Sujestion personalizada", "follow_suggestions.popular_suggestion": "Sujestion populara", + "follow_suggestions.popular_suggestion_longer": "Popular en {domain}", "follow_suggestions.view_all": "Ve todos", "follow_suggestions.who_to_follow": "A ken segir", "followed_tags": "Etiketas segidas", @@ -396,6 +397,7 @@ "limited_account_hint.title": "Este profil fue eskondido por los moderadores de {domain}.", "link_preview.author": "Publikasyon de {name}", "link_preview.more_from_author": "Mas de {name}", + "link_preview.shares": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}", "lists.account.add": "Adjusta a lista", "lists.account.remove": "Kita de lista", "lists.delete": "Efasa lista", @@ -448,12 +450,16 @@ "navigation_bar.security": "Segurita", "not_signed_in_indicator.not_signed_in": "Nesesitas konektarse kon tu kuento para akseder este rekurso.", "notification.admin.report": "{name} raporto {target}", + "notification.admin.report_statuses_other": "{name} raporto {target}", "notification.admin.sign_up": "{name} kriyo un konto", "notification.favourite": "A {name} le plaze tu publikasyon", "notification.follow": "{name} te ampeso a segir", "notification.follow_request": "{name} tiene solisitado segirte", "notification.mention": "{name} te enmento", "notification.moderation-warning.learn_more": "Ambezate mas", + "notification.moderation_warning.action_disable": "Tu kuento tiene sido inkapasitado.", + "notification.moderation_warning.action_mark_statuses_as_sensitive": "Algunas de tus publikasyones tienen sido markadas komo sensivles.", + "notification.moderation_warning.action_sensitive": "Tus publikasyones seran markadas komo sensivles dizde agora.", "notification.moderation_warning.action_silence": "Tu kuento tiene sido limitado.", "notification.moderation_warning.action_suspend": "Tu kuento tiene sido suspendido.", "notification.own_poll": "Tu anketa eskapo", @@ -634,8 +640,11 @@ "report_notification.attached_statuses": "{count, plural, one {{count} publikasyon} other {{count} publikasyones}} atadas", "report_notification.categories.legal": "Legal", "report_notification.categories.other": "Otros", + "report_notification.categories.other_sentence": "otros", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Violasyon de reglas", + "report_notification.categories.violation_sentence": "violasyon de reglas", "report_notification.open": "Avre raporto", "search.no_recent_searches": "No ay bushkedas resientes", "search.placeholder": "Bushka", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 258e8ce08e..f8a2995c57 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Tavo paskyra buvo apribota.", "notification.moderation_warning.action_suspend": "Tavo paskyra buvo sustabdyta.", "notification.own_poll": "Tavo apklausa baigėsi", - "notification.poll": "Apklausa, kurioje balsavai, pasibaigė", "notification.reblog": "{name} pakėlė tavo įrašą", "notification.relationships_severance_event": "Prarasti sąryšiai su {name}", "notification.relationships_severance_event.learn_more": "Sužinoti daugiau", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 701569fa05..d4623a8b31 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -440,7 +440,6 @@ "notification.moderation_warning.action_silence": "Tavs konts tika ierobežots.", "notification.moderation_warning.action_suspend": "Tava konta darbība tika apturēta.", "notification.own_poll": "Tava aptauja ir noslēgusies", - "notification.poll": "Aptauja, kurā tu piedalījies, ir noslēgusies", "notification.reblog": "{name} pastiprināja Tavu ierakstu", "notification.relationships_severance_event": "Zaudēti savienojumi ar {name}", "notification.relationships_severance_event.learn_more": "Uzzināt vairāk", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 88c093bdee..dc34867106 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -421,7 +421,6 @@ "notification.follow_request": "{name} meminta untuk mengikuti anda", "notification.mention": "{name} menyebut anda", "notification.own_poll": "Undian anda telah tamat", - "notification.poll": "Sebuah undian yang anda undi telah tamat", "notification.reblog": "{name} menggalak hantaran anda", "notification.status": "{name} baru sahaja mengirim hantaran", "notification.update": "{name} menyunting hantaran", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index 46c8d18069..cb3ea9723b 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -402,7 +402,6 @@ "notification.follow_request": "{name} က သင့်ကို စောင့်ကြည့်ရန် တောင်းဆိုထားသည်", "notification.mention": "{name} က သင့်ကို ဖော်ပြခဲ့သည်", "notification.own_poll": "စစ်တမ်းကောက်မှု ပြီးဆုံးပါပြီ", - "notification.poll": "သင်ပါဝင်ခဲ့သော စစ်တမ်းပြီးပါပြီ", "notification.reblog": "{name} boosted your status", "notification.status": "{name} က အခုလေးတင် ပို့စ်တင်လိုက်ပါပြီ", "notification.update": "{name} က ပို့စ်တစ်ခုကို ပြင်ဆင်ခဲ့သည်", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 8246d8dfd2..027c09280c 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -443,6 +443,8 @@ "mute_modal.title": "Gebruiker negeren?", "mute_modal.you_wont_see_mentions": "Je ziet geen berichten meer die dit account vermelden.", "mute_modal.you_wont_see_posts": "De persoon kan nog steeds jouw berichten zien, maar diens berichten zie je niet meer.", + "name_and_others": "{name} en {count, plural, one {# ander} other {# anderen}}", + "name_and_others_with_link": "{name} en {count, plural, one {# ander} other {# anderen}}", "navigation_bar.about": "Over", "navigation_bar.advanced_interface": "In geavanceerde webinterface openen", "navigation_bar.blocks": "Geblokkeerde gebruikers", @@ -470,6 +472,10 @@ "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", + "notification.admin.report_account": "{name} rapporteerde {count, plural, one {een bericht} other {# berichten}} van {target} voor {category}", + "notification.admin.report_account_other": "{name} rapporteerde {count, plural, one {een bericht} other {# berichten}} van {target}", + "notification.admin.report_statuses": "{name} rapporteerde {target} voor {category}", + "notification.admin.report_statuses_other": "{name} rapporteerde {target}", "notification.admin.sign_up": "{name} heeft zich geregistreerd", "notification.favourite": "{name} markeerde jouw bericht als favoriet", "notification.follow": "{name} volgt jou nu", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "Jouw account is opgeschort.", "notification.own_poll": "Jouw peiling is beëindigd", "notification.poll": "Een peiling waaraan jij hebt meegedaan is beëindigd", + "notification.private_mention": "{name} heeft je een privébericht gestuurd", "notification.reblog": "{name} boostte jouw bericht", "notification.relationships_severance_event": "Verloren verbindingen met {name}", "notification.relationships_severance_event.account_suspension": "Een beheerder van {from} heeft {target} geschorst, wat betekent dat je geen updates meer van hen kunt ontvangen of met hen kunt communiceren.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nieuwe rapportages:", "notifications.column_settings.admin.sign_up": "Nieuwe registraties:", "notifications.column_settings.alert": "Desktopmeldingen", + "notifications.column_settings.beta.category": "Experimentele functies", + "notifications.column_settings.beta.grouping": "Gegroepeerde meldingen", "notifications.column_settings.favourite": "Favorieten:", "notifications.column_settings.filter_bar.advanced": "Alle categorieën tonen", "notifications.column_settings.filter_bar.category": "Snelle filterbalk", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Je volgt dit account. Om diens berichten niet meer op jouw starttijdlijn te zien, kun je diegene ontvolgen.", "report_notification.attached_statuses": "{count, plural, one {{count} bericht} other {{count} berichten}} toegevoegd", "report_notification.categories.legal": "Juridisch", + "report_notification.categories.legal_sentence": "illegale inhoud", "report_notification.categories.other": "Overig", + "report_notification.categories.other_sentence": "overig", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Overtreden regel(s)", + "report_notification.categories.violation_sentence": "serverregel overtreden", "report_notification.open": "Rapportage openen", "search.no_recent_searches": "Geen recente zoekopdrachten", "search.placeholder": "Zoeken", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 0fb0edf0a0..f5efedb1ae 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Kontoen din har blitt avgrensa.", "notification.moderation_warning.action_suspend": "Kontoen din har blitt suspendert.", "notification.own_poll": "Rundspørjinga di er ferdig", - "notification.poll": "Ei rundspørjing du har røysta i er ferdig", "notification.reblog": "{name} framheva innlegget ditt", "notification.relationships_severance_event": "Tapte samband med {name}", "notification.relationships_severance_event.account_suspension": "Ein administrator på {from} har utvist {target}, som tyder at du ikkje lenger får oppdateringar frå dei eller kan samhandla med dei.", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 2bda373404..f2476bf14c 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -414,7 +414,6 @@ "notification.follow_request": "{name} har bedt om å få følge deg", "notification.mention": "{name} nevnte deg", "notification.own_poll": "Avstemningen din er ferdig", - "notification.poll": "En avstemning du stemte på har avsluttet", "notification.reblog": "{name} fremhevet ditt innlegg", "notification.status": "{name} la nettopp ut", "notification.update": "{name} redigerte et innlegg", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index d977eed4af..c02c821afc 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -357,7 +357,6 @@ "notification.follow_request": "{name} a demandat a vos sègre", "notification.mention": "{name} vos a mencionat", "notification.own_poll": "Vòstre sondatge es acabat", - "notification.poll": "Avètz participat a un sondatge que ven de s’acabar", "notification.reblog": "{name} a partejat vòstre estatut", "notification.status": "{name} ven de publicar", "notification.update": "{name} modiquè sa publicacion", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index ddfe1d4fbc..75987f5d29 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -443,6 +443,8 @@ "mute_modal.title": "Wyciszyć użytkownika?", "mute_modal.you_wont_see_mentions": "Nie zobaczysz wpisów, które wspominają tego użytkownika.", "mute_modal.you_wont_see_posts": "Użytkownik dalej będzie widzieć Twoje posty, ale Ty nie będziesz widzieć jego.", + "name_and_others": "{name} i {count, plural, one {# inny} few {# inne} many {# innych} other {# innych}}", + "name_and_others_with_link": "{name} i {count, plural, one {# inny} few {# inne} many {# innych} other {# innych}}", "navigation_bar.about": "O serwerze", "navigation_bar.advanced_interface": "Otwórz w zaawansowanym interfejsie użytkownika", "navigation_bar.blocks": "Zablokowani użytkownicy", @@ -470,6 +472,10 @@ "navigation_bar.security": "Bezpieczeństwo", "not_signed_in_indicator.not_signed_in": "Musisz się zalogować, aby uzyskać dostęp do tego zasobu.", "notification.admin.report": "{name} zgłosił {target}", + "notification.admin.report_account": "{name} zgłosił(a) {count, plural, one {1 wpis} few {# wpisy} other {# wpisów}} z {target} w kategorii {category}", + "notification.admin.report_account_other": "{name} zgłosił(a) {count, plural, one {1 wpis} few {# wpisy} other {# wpisów}} z {target}", + "notification.admin.report_statuses": "{name} zgłosił(a) {target} w kategorii {category}", + "notification.admin.report_statuses_other": "{name} zgłosił(a) {target}", "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodaje Twój wpis do ulubionych", "notification.follow": "{name} obserwuje Cię", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Twoje konto zostało ograniczone.", "notification.moderation_warning.action_suspend": "Twoje konto zostało zawieszone.", "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ę", + "notification.poll": "Głosowanie, w którym brałeś(-aś) udział, zostało zakończone", + "notification.private_mention": "{name} prywatnie o tobie wspomniał(a)", "notification.reblog": "Twój post został podbity przez {name}", "notification.relationships_severance_event": "Utracone związki z {name}", "notification.relationships_severance_event.account_suspension": "Administrator z {from} zawiesił {target}, więc nie dostaniesz wieści ani nie wejdziesz w interakcje z użytkownikami z tego serwera.", @@ -502,6 +509,8 @@ "notifications.column_settings.admin.report": "Nowe zgłoszenia:", "notifications.column_settings.admin.sign_up": "Nowe rejestracje:", "notifications.column_settings.alert": "Powiadomienia na pulpicie", + "notifications.column_settings.beta.category": "Funkcje eksperymentalne", + "notifications.column_settings.beta.grouping": "Powiadomienia grupowe", "notifications.column_settings.favourite": "Ulubione:", "notifications.column_settings.filter_bar.advanced": "Wyświetl wszystkie kategorie", "notifications.column_settings.filter_bar.category": "Szybkie filtrowanie", @@ -665,9 +674,13 @@ "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.legal": "Prawne", + "report_notification.categories.legal_sentence": "treść nielegalna", "report_notification.categories.other": "Inne", + "report_notification.categories.other_sentence": "inne", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Naruszenie zasad", + "report_notification.categories.violation_sentence": "naruszenie zasad", "report_notification.open": "Otwórz zgłoszenie", "search.no_recent_searches": "Brak ostatnich wyszukiwań", "search.placeholder": "Szukaj", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 34d0ba36e6..9ebde4e6a4 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -482,7 +482,6 @@ "notification.moderation_warning.action_silence": "Sua conta foi limitada.", "notification.moderation_warning.action_suspend": "Sua conta foi suspensa.", "notification.own_poll": "Sua enquete terminou", - "notification.poll": "Uma enquete que você votou terminou", "notification.reblog": "{name} deu boost no teu toot", "notification.relationships_severance_event": "Conexões perdidas com {name}", "notification.relationships_severance_event.account_suspension": "Um administrador de {from} suspendeu {target}, o que significa que você não pode mais receber atualizações deles ou interagir com eles.", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 6a6feca309..a0359fd868 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "A sua conta foi limitada.", "notification.moderation_warning.action_suspend": "A sua conta foi suspensa.", "notification.own_poll": "A sua votação terminou", - "notification.poll": "Uma votação em que participaste chegou ao fim", "notification.reblog": "{name} reforçou a tua publicação", "notification.relationships_severance_event": "Perdeu as ligações com {name}", "notification.relationships_severance_event.account_suspension": "Um administrador de {from} suspendeu {target}, o que significa que já não pode receber atualizações dele ou interagir com ele.", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 35abf1b021..bbae711269 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -393,7 +393,6 @@ "notification.follow_request": "{name} a trimis o cerere de abonare", "notification.mention": "{name} te-a menționat", "notification.own_poll": "Sondajul tău s-a încheiat", - "notification.poll": "Un sondaj pentru care ai votat s-a încheiat", "notification.reblog": "{name} ți-a distribuit postarea", "notification.status": "{name} tocmai a postat", "notification.update": "{name} și-a modificat o postare", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 97a1f0b09c..971d6c77ca 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -482,7 +482,6 @@ "notification.moderation_warning.action_silence": "Ваша учётная запись была ограничена.", "notification.moderation_warning.action_suspend": "Действие вашей учётной записи приостановлено.", "notification.own_poll": "Ваш опрос закончился", - "notification.poll": "Опрос, в котором вы приняли участие, завершился", "notification.reblog": "{name} продвинул(а) ваш пост", "notification.relationships_severance_event": "Потеряно соединение с {name}", "notification.relationships_severance_event.account_suspension": "Администратор {from} заблокировал {target}, что означает, что вы больше не сможете получать обновления от них или взаймодествовать с ними.", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index c3880a6b03..7f8dae326e 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -355,7 +355,6 @@ "notification.follow_request": "{name} त्वामनुसर्तुमयाचीत्", "notification.mention": "{name} त्वामुल्लिलेख", "notification.own_poll": "तव निर्वाचनं समाप्तम्", - "notification.poll": "यस्मिन्निर्वाचने मतमदास्तन्निर्वाचनं समाप्तम्", "notification.reblog": "{name} तव पत्रं बुस्तिमिति अकार्षीत्", "notification.status": "{name} अधुना अस्थापयिष्ट", "notification.update": "{name} पत्रमेकं समपादयिष्ट", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 8955573737..f13514fd02 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -282,7 +282,6 @@ "notification.follow_request": "{name} at dimandadu de ti sighire", "notification.mention": "{name} t'at mentovadu", "notification.own_poll": "Sondàgiu acabbadu", - "notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu", "notification.reblog": "{name} at cumpartzidu sa publicatzione tua", "notification.status": "{name} at publicadu cosa", "notifications.clear": "Lìmpia notìficas", diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json index 397f63fed4..7c4d1db60e 100644 --- a/app/javascript/mastodon/locales/sco.json +++ b/app/javascript/mastodon/locales/sco.json @@ -338,7 +338,6 @@ "notification.follow_request": "{name} is wantin tae follae ye", "notification.mention": "{name} menshied ye", "notification.own_poll": "Yer poll is duin", - "notification.poll": "A poll thit ye votit in is duin", "notification.reblog": "{name} heezed yer post", "notification.status": "{name} juist postit", "notification.update": "{name} editit a post", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 3a67beed52..c4f82c4133 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -289,7 +289,6 @@ "notification.follow": "{name} ඔබව අනුගමනය කළා", "notification.mention": "{name} ඔබව සඳහන් කර ඇත", "notification.own_poll": "ඔබගේ මත විමසුම නිමයි", - "notification.poll": "ඔබ ඡන්දය දුන් මත විමසුමක් නිමයි", "notification.status": "{name} දැන් පළ කළා", "notification.update": "{name} ලිපියක් සංස්කරණය කළා", "notifications.clear": "දැනුම්දීම් මකන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index ed877f7667..cff79c6b9b 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -452,7 +452,6 @@ "notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.", "notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.", "notification.own_poll": "Vaša anketa sa skončila", - "notification.poll": "Anketa, v ktorej ste hlasovali, sa skončila", "notification.reblog": "{name} zdieľa váš príspevok", "notification.relationships_severance_event": "Stratené prepojenia s {name}", "notification.relationships_severance_event.account_suspension": "Správca z {from} pozastavil/a {target}, čo znamená, že od nich viac nemôžeš dostávať aktualizácie, alebo s nimi interaktovať.", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 2a3d74a80f..b8c995b8d1 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -443,6 +443,8 @@ "mute_modal.title": "Utišaj uporabnika?", "mute_modal.you_wont_see_mentions": "Objav, ki jih omenjajo, ne boste videli.", "mute_modal.you_wont_see_posts": "Še vedno vidijo vaše objave, vi pa ne njihovih.", + "name_and_others": "{name} in {count, plural, one {# drug} two {# druga} few {# drugi} other {# drugih}}", + "name_and_others_with_link": "{name} in {count, plural, one {# drug} two {# druga} few {# drugi} other {# drugih}}", "navigation_bar.about": "O Mastodonu", "navigation_bar.advanced_interface": "Odpri v naprednem spletnem vmesniku", "navigation_bar.blocks": "Blokirani uporabniki", @@ -470,6 +472,10 @@ "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}", + "notification.admin.report_account": "{name} je prijavil/a {count, plural, one {# objavo} two {# objavi} few {# objave} other {# objav}} od {target} zaradi {category}", + "notification.admin.report_account_other": "{name} je prijavil/a {count, plural, one {# objavo} two {# objavi} few {# objave} other {# objav}} od {target}", + "notification.admin.report_statuses": "{name} je prijavil/a {target} zaradi {category}", + "notification.admin.report_statuses_other": "{name} je prijavil/a {target}", "notification.admin.sign_up": "{name} se je vpisal/a", "notification.favourite": "{name} je vzljubil/a vašo objavo", "notification.follow": "{name} vam sledi", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "Vaš račun je bil suspendiran.", "notification.own_poll": "Vaša anketa je zaključena", "notification.poll": "Anketa, v kateri ste sodelovali, je zaključena", + "notification.private_mention": "{name} vas je zasebno omenil/a", "notification.reblog": "{name} je izpostavila/a vašo objavo", "notification.relationships_severance_event": "Povezave z {name} prekinjene", "notification.relationships_severance_event.account_suspension": "Skrbnik na {from} je suspendiral račun {target}, kar pomeni, da od računa ne morete več prejemati posodobitev ali imeti z njim interakcij.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nove prijave:", "notifications.column_settings.admin.sign_up": "Novi vpisi:", "notifications.column_settings.alert": "Namizna obvestila", + "notifications.column_settings.beta.category": "Poskusne funkcionalnosti", + "notifications.column_settings.beta.grouping": "Skupine obvestil", "notifications.column_settings.favourite": "Priljubljeni:", "notifications.column_settings.filter_bar.advanced": "Prikaži vse kategorije", "notifications.column_settings.filter_bar.category": "Vrstica za hitro filtriranje", @@ -666,9 +675,13 @@ "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}}", "report_notification.categories.legal": "Legalno", + "report_notification.categories.legal_sentence": "nedovoljena vsebina", "report_notification.categories.other": "Drugo", + "report_notification.categories.other_sentence": "drugo", "report_notification.categories.spam": "Neželeno", + "report_notification.categories.spam_sentence": "neželeno", "report_notification.categories.violation": "Kršitev pravila", + "report_notification.categories.violation_sentence": "kršitev pravila", "report_notification.open": "Odpri prijavo", "search.no_recent_searches": "Ni nedavnih iskanj", "search.placeholder": "Iskanje", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 96b7b3fefc..6f378b145e 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -443,6 +443,8 @@ "mute_modal.title": "Të heshtohet përdoruesi?", "mute_modal.you_wont_see_mentions": "S’do të shihni postime ku përmenden.", "mute_modal.you_wont_see_posts": "Ata munden ende të shohin postimet tuaja, por ju s’do të shihni të tyret.", + "name_and_others": "{name} dhe {count, plural, one {# tjetër} other {# të tjerë}}", + "name_and_others_with_link": "{name} dhe {count, plural, one {# tjetër} other {# të tjerë}}", "navigation_bar.about": "Mbi", "navigation_bar.advanced_interface": "Hape në ndërfaqe web të thelluar", "navigation_bar.blocks": "Përdorues të bllokuar", @@ -470,6 +472,10 @@ "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}", + "notification.admin.report_account": "{name} raportoi për {count, plural, one {një postim} other {# postime}} nga {target} për {category}", + "notification.admin.report_account_other": "{name} raportoi për {count, plural, one {një postim} other {# postime}} nga {target}", + "notification.admin.report_statuses": "{name} raportoi {target} për {category}", + "notification.admin.report_statuses_other": "{name} raportoi {target}", "notification.admin.sign_up": "{name} u regjistrua", "notification.favourite": "{name} i vuri shenjë postimit tuaj si të parapëlqyer", "notification.follow": "{name} zuri t’ju ndjekë", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Llogaria juaj është kufizuar.", "notification.moderation_warning.action_suspend": "Llogaria juaj është pezulluar.", "notification.own_poll": "Pyetësori juaj ka përfunduar", - "notification.poll": "Ka përfunduar një pyetësor ku keni votuar", + "notification.poll": "Ka përfunduar një pyetësor në të cilin keni marrë pjesë", + "notification.private_mention": "{name} ju përmendi privatisht", "notification.reblog": "{name} përforcoi mesazhin tuaj", "notification.relationships_severance_event": "Lidhje të humbura me {name}", "notification.relationships_severance_event.account_suspension": "Një përgjegjës nga {from} ka pezulluar {target}, që do të thotë se s’mund të merrni më përditësime prej tij, apo të ndërveproni me të.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Raportime të reja:", "notifications.column_settings.admin.sign_up": "Regjistrime të reja:", "notifications.column_settings.alert": "Njoftime desktopi", + "notifications.column_settings.beta.category": "Veçori eksperimentale", + "notifications.column_settings.beta.grouping": "Njoftime grupi", "notifications.column_settings.favourite": "Të parapëlqyer:", "notifications.column_settings.filter_bar.advanced": "Shfaq krejt kategoritë", "notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Po e ndiqni këtë llogari. Për të mos parë më postimet e tyre te prurja juaj e kreut, ndalni ndjekjen e tyre.", "report_notification.attached_statuses": "{count, plural, one {{count} postim} other {{count} postime}} bashkëngjitur", "report_notification.categories.legal": "Ligjore", + "report_notification.categories.legal_sentence": "lëndë e paligjshme", "report_notification.categories.other": "Tjetër", + "report_notification.categories.other_sentence": "tjetër", "report_notification.categories.spam": "I padëshiruar", + "report_notification.categories.spam_sentence": "mesazh i padëshiruar", "report_notification.categories.violation": "Cenim rregullash", + "report_notification.categories.violation_sentence": "cenim rregullash", "report_notification.open": "Hape raportimin", "search.no_recent_searches": "Pa kërkime së fundi", "search.placeholder": "Kërkoni", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 71b69d428a..38ff12bdcf 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Vaš nalog je ograničen.", "notification.moderation_warning.action_suspend": "Vaš nalog je suspendovan.", "notification.own_poll": "Vaša anketa je završena", - "notification.poll": "Završena je anketa u kojoj ste glasali", "notification.reblog": "{name} je podržao vašu objavu", "notification.relationships_severance_event": "Izgubljena veza sa {name}", "notification.relationships_severance_event.account_suspension": "Administrator sa {from} je suspendovao {target}, što znači da više ne možete da primate ažuriranja od njih niti da komunicirate sa njima.", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 2c4649f9d0..047e8cf3a8 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Ваш налог је ограничен.", "notification.moderation_warning.action_suspend": "Ваш налог је суспендован.", "notification.own_poll": "Ваша анкета је завршена", - "notification.poll": "Завршена је анкета у којој сте гласали", "notification.reblog": "{name} је подржао вашу објаву", "notification.relationships_severance_event": "Изгубљена веза са {name}", "notification.relationships_severance_event.account_suspension": "Администратор са {from} је суспендовао {target}, што значи да више не можете да примате ажурирања од њих нити да комуницирате са њима.", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 1833a2cfde..53e2dde42e 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -442,6 +442,8 @@ "mute_modal.title": "Tysta användare?", "mute_modal.you_wont_see_mentions": "Du kommer inte att se inlägg som nämner dem.", "mute_modal.you_wont_see_posts": "De kan fortfarande se dina inlägg, men du kan inte se deras.", + "name_and_others": "{name} och {count, plural, one {# annan} other {# andra}}", + "name_and_others_with_link": "{name} och {count, plural, one {# annan} other {# andra}}", "navigation_bar.about": "Om", "navigation_bar.advanced_interface": "Öppna i avancerat webbgränssnitt", "navigation_bar.blocks": "Blockerade användare", @@ -469,6 +471,7 @@ "navigation_bar.security": "Säkerhet", "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.report_statuses_other": "{name} rapporterade {target}", "notification.admin.sign_up": "{name} registrerade sig", "notification.favourite": "{name} favoritmarkerade ditt inlägg", "notification.follow": "{name} följer dig", @@ -484,7 +487,7 @@ "notification.moderation_warning.action_silence": "Ditt konto har begränsats.", "notification.moderation_warning.action_suspend": "Ditt konto har stängts av.", "notification.own_poll": "Din röstning har avslutats", - "notification.poll": "En omröstning du röstat i har avslutats", + "notification.private_mention": "{name} nämnde dig privat", "notification.reblog": "{name} boostade ditt inlägg", "notification.relationships_severance_event": "Förlorade kontakter med {name}", "notification.relationships_severance_event.account_suspension": "En administratör från {from} har stängt av {target}, vilket innebär att du inte längre kan ta emot uppdateringar från dem eller interagera med dem.", @@ -502,6 +505,7 @@ "notifications.column_settings.admin.report": "Nya rapporter:", "notifications.column_settings.admin.sign_up": "Nya registreringar:", "notifications.column_settings.alert": "Skrivbordsaviseringar", + "notifications.column_settings.beta.category": "Experimentella funktioner", "notifications.column_settings.favourite": "Favoriter:", "notifications.column_settings.filter_bar.advanced": "Visa alla kategorier", "notifications.column_settings.filter_bar.category": "Snabbfilter", @@ -666,8 +670,11 @@ "report_notification.attached_statuses": "bifogade {count, plural, one {{count} inlägg} other {{count} inlägg}}", "report_notification.categories.legal": "Rättsligt", "report_notification.categories.other": "Övrigt", + "report_notification.categories.other_sentence": "övrigt", "report_notification.categories.spam": "Skräppost", + "report_notification.categories.spam_sentence": "skräppost", "report_notification.categories.violation": "Regelöverträdelse", + "report_notification.categories.violation_sentence": "regelöverträdelse", "report_notification.open": "Öppna rapport", "search.no_recent_searches": "Inga sökningar nyligen", "search.placeholder": "Sök", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index d44ac424f4..bb26986b81 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -278,7 +278,6 @@ "notification.follow_request": "{name} உங்களைப் பின்தொடரக் கோருகிறார்", "notification.mention": "{name} நீங்கள் குறிப்பிட்டுள்ளீர்கள்", "notification.own_poll": "கருத்துக்கணிப்பு நிறைவடைந்தது", - "notification.poll": "நீங்கள் வாக்களித்த வாக்கெடுப்பு முடிவடைந்தது", "notification.reblog": "{name} உங்கள் நிலை அதிகரித்தது", "notifications.clear": "அறிவிப்புகளை அழிக்கவும்", "notifications.clear_confirmation": "உங்கள் எல்லா அறிவிப்புகளையும் நிரந்தரமாக அழிக்க விரும்புகிறீர்களா?", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index c06472561f..471890b9a3 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -187,7 +187,6 @@ "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.follow": "{name} మిమ్మల్ని అనుసరిస్తున్నారు", "notification.mention": "{name} మిమ్మల్ని ప్రస్తావించారు", - "notification.poll": "మీరు పాల్గొనిన ఎన్సిక ముగిసినది", "notification.reblog": "{name} మీ స్టేటస్ ను బూస్ట్ చేసారు", "notifications.clear": "ప్రకటనలను తుడిచివేయు", "notifications.clear_confirmation": "మీరు మీ అన్ని నోటిఫికేషన్లను శాశ్వతంగా తొలగించాలనుకుంటున్నారా?", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 64abb394bf..ab8179863c 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -443,6 +443,7 @@ "mute_modal.title": "ซ่อนผู้ใช้?", "mute_modal.you_wont_see_mentions": "คุณจะไม่เห็นโพสต์ที่กล่าวถึงเขา", "mute_modal.you_wont_see_posts": "เขายังคงสามารถเห็นโพสต์ของคุณ แต่คุณจะไม่เห็นโพสต์ของเขา", + "name_and_others": "{name} และ {count, plural, one {# อื่น ๆ } other {# อื่น ๆ}}", "navigation_bar.about": "เกี่ยวกับ", "navigation_bar.advanced_interface": "เปิดในส่วนติดต่อเว็บขั้นสูง", "navigation_bar.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", @@ -470,6 +471,7 @@ "navigation_bar.security": "ความปลอดภัย", "not_signed_in_indicator.not_signed_in": "คุณจำเป็นต้องเข้าสู่ระบบเพื่อเข้าถึงทรัพยากรนี้", "notification.admin.report": "{name} ได้รายงาน {target}", + "notification.admin.report_statuses_other": "{name} รายงาน {target}", "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", @@ -485,7 +487,7 @@ "notification.moderation_warning.action_silence": "จำกัดบัญชีของคุณแล้ว", "notification.moderation_warning.action_suspend": "ระงับบัญชีของคุณแล้ว", "notification.own_poll": "การสำรวจความคิดเห็นของคุณได้สิ้นสุดแล้ว", - "notification.poll": "การสำรวจความคิดเห็นที่คุณได้ลงคะแนนได้สิ้นสุดแล้ว", + "notification.poll": "โพลที่คุณโหวตได้จบลงแล้ว", "notification.reblog": "{name} ได้ดันโพสต์ของคุณ", "notification.relationships_severance_event": "สูญเสียการเชื่อมต่อกับ {name}", "notification.relationships_severance_event.account_suspension": "ผู้ดูแลจาก {from} ได้ระงับ {target} ซึ่งหมายความว่าคุณจะไม่สามารถรับการอัปเดตจากเขาหรือโต้ตอบกับเขาได้อีกต่อไป", @@ -667,8 +669,11 @@ "report_notification.attached_statuses": "{count, plural, other {{count} โพสต์}}ที่แนบมา", "report_notification.categories.legal": "กฎหมาย", "report_notification.categories.other": "อื่น ๆ", + "report_notification.categories.other_sentence": "อื่น ๆ", "report_notification.categories.spam": "สแปม", + "report_notification.categories.spam_sentence": "สแปม", "report_notification.categories.violation": "การละเมิดกฎ", + "report_notification.categories.violation_sentence": "ละเมิดกฎ", "report_notification.open": "รายงานที่เปิด", "search.no_recent_searches": "ไม่มีการค้นหาล่าสุด", "search.placeholder": "ค้นหา", diff --git a/app/javascript/mastodon/locales/tok.json b/app/javascript/mastodon/locales/tok.json index fcdef5f32c..e581978f24 100644 --- a/app/javascript/mastodon/locales/tok.json +++ b/app/javascript/mastodon/locales/tok.json @@ -294,7 +294,6 @@ "notification.follow_request": "{name} li wile kute e sina", "notification.mention": "jan {name} li toki e sina", "notification.moderation-warning.learn_more": "o kama sona e ijo ante", - "notification.poll": "sina pana lon pana la pana ni li pini", "notification.reblog": "{name} li wawa e toki sina", "notification.status": "{name} li toki", "notification.update": "{name} li ante e toki", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index ac39a3fd7b..ae7b5ba25d 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -443,6 +443,8 @@ "mute_modal.title": "Kullanıcıyı sustur?", "mute_modal.you_wont_see_mentions": "Onlardan bahseden gönderiler göremezsiniz.", "mute_modal.you_wont_see_posts": "Onlar sizin gönderilerinizi görmeye devam edebilir, ancak siz onlarınkini göremezsiniz.", + "name_and_others": "{name} ve {count, plural, one {# diğer} other {# diğerleri}}", + "name_and_others_with_link": "{name} ve {count, plural, one {# diğer} other {# diğerleri}}", "navigation_bar.about": "Hakkında", "navigation_bar.advanced_interface": "Gelişmiş web arayüzünde aç", "navigation_bar.blocks": "Engellenen kullanıcılar", @@ -470,6 +472,10 @@ "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", + "notification.admin.report_account": "{name}, {category} kategorisi için {target} kişisini {count, plural, one {bir gönderi} other {# gönderi}} bildirdi", + "notification.admin.report_account_other": "{name}, {target} kişisinden {count, plural, one {bir gönderi} other {# gönderi}} bildirdi", + "notification.admin.report_statuses": "{name}, {category} kategorisi için {target} kişisini bildirdi", + "notification.admin.report_statuses_other": "{name}, {target} kişisini bildirdi", "notification.admin.sign_up": "{name} kaydoldu", "notification.favourite": "{name} gönderinizi beğendi", "notification.follow": "{name} seni takip etti", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "Hesabınız askıya alındı.", "notification.own_poll": "Anketiniz sona erdi", "notification.poll": "Oy verdiğiniz bir anket sona erdi", + "notification.private_mention": "{name} gizlice sizden bahsetti", "notification.reblog": "{name} gönderini yeniden paylaştı", "notification.relationships_severance_event": "{name} ile bağlantılar koptu", "notification.relationships_severance_event.account_suspension": "{from} yöneticisi, {target} askıya aldı, bunun anlamı onlardan artık güncelleme alamayacak veya etkileşemeyeceksiniz demektir.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Yeni bildirimler:", "notifications.column_settings.admin.sign_up": "Yeni kayıtlar:", "notifications.column_settings.alert": "Masaüstü bildirimleri", + "notifications.column_settings.beta.category": "Deneysel özellikler", + "notifications.column_settings.beta.grouping": "Grup bildirimleri", "notifications.column_settings.favourite": "Favorilerin:", "notifications.column_settings.filter_bar.advanced": "Tüm kategorileri görüntüle", "notifications.column_settings.filter_bar.category": "Hızlı filtre çubuğu", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Bu hesabı takip ediyorsunuz. Ana akışınızda gönderilerini görmek istemiyorsanız, onu takip etmeyi bırakın.", "report_notification.attached_statuses": "{count, plural, one {{count} gönderi} other {{count} gönderi}} eklendi", "report_notification.categories.legal": "Yasal", + "report_notification.categories.legal_sentence": "yasadışı içerik", "report_notification.categories.other": "Diğer", + "report_notification.categories.other_sentence": "diğer", "report_notification.categories.spam": "İstenmeyen", + "report_notification.categories.spam_sentence": "i̇stenmeyen", "report_notification.categories.violation": "Kural ihlali", + "report_notification.categories.violation_sentence": "kural ihlali", "report_notification.open": "Bildirim aç", "search.no_recent_searches": "Son arama yok", "search.placeholder": "Ara", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 67ebb031ae..b5cd1f7b28 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -443,6 +443,8 @@ "mute_modal.title": "Ігнорувати користувача?", "mute_modal.you_wont_see_mentions": "Ви не бачитимете дописів, де їх згадано.", "mute_modal.you_wont_see_posts": "Вони все ще можуть бачити ваші дописи, але ви не бачитимете їхніх.", + "name_and_others": "{name} і {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}}", + "name_and_others_with_link": "{name} і {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}}", "navigation_bar.about": "Про застосунок", "navigation_bar.advanced_interface": "Відкрити в розширеному вебінтерфейсі", "navigation_bar.blocks": "Заблоковані користувачі", @@ -470,6 +472,10 @@ "navigation_bar.security": "Безпека", "not_signed_in_indicator.not_signed_in": "Ви повинні увійти, щоб отримати доступ до цього ресурсу.", "notification.admin.report": "Скарга від {name} на {target}", + "notification.admin.report_account": "{name} повідомив(ла) про {count, plural, one {один допис} few {# дописи} many {# дописів} other {# дописів}} від {target} в категорії {category}", + "notification.admin.report_account_other": "{name} повідомив(ла) про {count, plural, one {один допис} few {# дописи} many {# дописів} other {# дописів}} від {target}", + "notification.admin.report_statuses": "{name} повідомив(ла) про {target} в категорії {category}", + "notification.admin.report_statuses_other": "{name} повідомив(ла) про {target}", "notification.admin.sign_up": "{name} приєдналися", "notification.favourite": "Ваш допис сподобався {name}", "notification.follow": "{name} підписалися на вас", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Ваш обліковий запис було обмежено.", "notification.moderation_warning.action_suspend": "Ваш обліковий запис було заблоковано.", "notification.own_poll": "Ваше опитування завершилося", - "notification.poll": "Опитування, у якому ви голосували, скінчилося", + "notification.poll": "Опитування, в якому ви проголосували, завершено", + "notification.private_mention": "{name} приватно згадав(ла) вас", "notification.reblog": "{name} поширює ваш допис", "notification.relationships_severance_event": "Втрачено з'єднання з {name}", "notification.relationships_severance_event.account_suspension": "Адміністратор з {from} призупинив {target}, що означає, що ви більше не можете отримувати оновлення від них або взаємодіяти з ними.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Нові скарги:", "notifications.column_settings.admin.sign_up": "Нові реєстрації:", "notifications.column_settings.alert": "Сповіщення стільниці", + "notifications.column_settings.beta.category": "Експериментальні функції", + "notifications.column_settings.beta.grouping": "Групові сповіщення", "notifications.column_settings.favourite": "Уподобане:", "notifications.column_settings.filter_bar.advanced": "Показати всі категорії", "notifications.column_settings.filter_bar.category": "Панель швидкого фільтра", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Ви підписані на цього користувача. Щоб більше не бачити їхні дописи у вашій стрічці, відпишіться від них.", "report_notification.attached_statuses": "{count, plural, one {{count} допис} few {{count} дописи} many {{count} дописів} other {{count} дописи}} прикріплено", "report_notification.categories.legal": "Правові", + "report_notification.categories.legal_sentence": "незаконний контент", "report_notification.categories.other": "Інше", + "report_notification.categories.other_sentence": "інше", "report_notification.categories.spam": "Спам", + "report_notification.categories.spam_sentence": "спам", "report_notification.categories.violation": "Порушення правил", + "report_notification.categories.violation_sentence": "порушення правил", "report_notification.open": "Відкрити скаргу", "search.no_recent_searches": "Немає останніх пошуків", "search.placeholder": "Пошук", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index cf53eb6fe8..3c61846e9c 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -240,7 +240,6 @@ "notification.follow_request": "{name} نے آپ کی پیروی کی درخواست کی", "notification.mention": "{name} نے آپ کا تذکرہ کیا", "notification.own_poll": "آپ کا پول ختم ہو گیا ہے", - "notification.poll": "آپ کا ووٹ دیا گیا ایک پول ختم ہو گیا ہے", "notification.reblog": "{name} boosted your status", "notification.status": "{name} نے ابھی ابھی پوسٹ کیا", "notifications.clear": "اطلاعات ہٹائیں", diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json index 4824b1d332..90ad67d287 100644 --- a/app/javascript/mastodon/locales/uz.json +++ b/app/javascript/mastodon/locales/uz.json @@ -328,7 +328,6 @@ "navigation_bar.security": "Xavfsizlik", "not_signed_in_indicator.not_signed_in": "Ushbu manbaga kirish uchun tizimga kirishingiz kerak.", "notification.own_poll": "So‘rovingiz tugadi", - "notification.poll": "Siz ovoz bergan soʻrovnoma yakunlandi", "notification.reblog": "{name} boosted your status", "onboarding.actions.go_to_explore": "See what's trending", "onboarding.actions.go_to_home": "Go to your home feed", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 70932d10be..0f2cc996a2 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -443,6 +443,8 @@ "mute_modal.title": "Ẩn người này?", "mute_modal.you_wont_see_mentions": "Bạn sẽ không nhìn thấy tút có nhắc đến họ.", "mute_modal.you_wont_see_posts": "Bạn sẽ không nhìn thấy tút của họ.", + "name_and_others": "{name} và {count, plural, other {# người khác}}", + "name_and_others_with_link": "{name} và {count, plural, other {# người khác}}", "navigation_bar.about": "Giới thiệu", "navigation_bar.advanced_interface": "Dùng bố cục nhiều cột", "navigation_bar.blocks": "Người đã chặn", @@ -470,6 +472,10 @@ "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.report_account": "{name} báo cáo {count, plural, other {# tút}} của {target} vì {category}", + "notification.admin.report_account_other": "{name} báo cáo {count, plural, other {# tút}} của {target}", + "notification.admin.report_statuses": "{name} báo cáo {target} vì {category}", + "notification.admin.report_statuses_other": "{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", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Tài khoản của bạn đã bị hạn chế.", "notification.moderation_warning.action_suspend": "Tài khoản của bạn đã bị vô hiệu hóa.", "notification.own_poll": "Cuộc bình chọn của bạn đã kết thúc", - "notification.poll": "Cuộc bình chọn đã kết thúc", + "notification.poll": "Cuộc bình chọn có bạn tham gia đã kết thúc", + "notification.private_mention": "{name} nhắn riêng đến bạn", "notification.reblog": "{name} đăng lại tút của bạn", "notification.relationships_severance_event": "Mất kết nối với {name}", "notification.relationships_severance_event.account_suspension": "Quản trị viên {from} đã vô hiệu hóa {target}, điều này có nghĩa là bạn không còn có thể nhận được cập nhật từ họ hoặc tương tác với họ nữa.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Báo cáo mới:", "notifications.column_settings.admin.sign_up": "Người mới tham gia:", "notifications.column_settings.alert": "Báo trên máy tính", + "notifications.column_settings.beta.category": "Tính năng thử nghiệm", + "notifications.column_settings.beta.grouping": "Gộp thông báo theo loại", "notifications.column_settings.favourite": "Lượt thích:", "notifications.column_settings.filter_bar.advanced": "Toàn bộ", "notifications.column_settings.filter_bar.category": "Thanh lọc nhanh", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Bạn đang theo dõi người này. Để không thấy tút của họ trên trang chủ nữa, hãy bỏ theo dõi.", "report_notification.attached_statuses": "{count, plural, other {{count} tút}} đính kèm", "report_notification.categories.legal": "Pháp lý", + "report_notification.categories.legal_sentence": "nội dung bất hợp pháp", "report_notification.categories.other": "Khác", + "report_notification.categories.other_sentence": "khác", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Vi phạm nội quy", + "report_notification.categories.violation_sentence": "vi phạm nội quy", "report_notification.open": "Mở báo cáo", "search.no_recent_searches": "Không có tìm kiếm gần đây", "search.placeholder": "Tìm kiếm", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index f2accae0d0..f6c0feecfd 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -443,6 +443,8 @@ "mute_modal.title": "隐藏用户?", "mute_modal.you_wont_see_mentions": "你看不到提及他们的嘟文。", "mute_modal.you_wont_see_posts": "他们可以看到你的嘟文,但是你看不到他们的。", + "name_and_others": "{name} 和其它 {count, plural, other {# 人}}", + "name_and_others_with_link": "{name} 和其它 {count, plural, other {# 人}}", "navigation_bar.about": "关于", "navigation_bar.advanced_interface": "在高级网页界面中打开", "navigation_bar.blocks": "已屏蔽的用户", @@ -470,6 +472,10 @@ "navigation_bar.security": "安全", "not_signed_in_indicator.not_signed_in": "您需要登录才能访问此资源。", "notification.admin.report": "{name} 举报了 {target}", + "notification.admin.report_account": "{name} 举报了来自 {target} 的 {count, plural, other {# 条嘟文}},原因为 {category}", + "notification.admin.report_account_other": "{name} 举报了来自 {target} 的 {count, plural, other {# 条嘟文}}", + "notification.admin.report_statuses": "{name} 举报了 {target},原因为 {category}", + "notification.admin.report_statuses_other": "{name} 举报了 {target}", "notification.admin.sign_up": "{name} 注册了", "notification.favourite": "{name} 喜欢了你的嘟文", "notification.follow": "{name} 开始关注你", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "你的账号已被限制。", "notification.moderation_warning.action_suspend": "你的账号已被封禁.", "notification.own_poll": "你的投票已经结束", - "notification.poll": "你参与的一个投票已经结束", + "notification.poll": "你参与的一项投票已结束", + "notification.private_mention": "{name} 私下提及了你", "notification.reblog": "{name} 转发了你的嘟文", "notification.relationships_severance_event": "与 {name} 的联系已断开", "notification.relationships_severance_event.account_suspension": "一名来自 {from} 的管理员已经封禁了{target},这意味着你将无法再收到他们的更新或与他们互动。", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "新举报:", "notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.alert": "桌面通知", + "notifications.column_settings.beta.category": "实验性功能", + "notifications.column_settings.beta.grouping": "通知分组", "notifications.column_settings.favourite": "喜欢:", "notifications.column_settings.filter_bar.advanced": "显示所有类别", "notifications.column_settings.filter_bar.category": "快速筛选栏", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "你正在关注此账户。如果不想继续在主页看到他们的嘟文,取消对他们的关注即可。", "report_notification.attached_statuses": "附上 {count} 条嘟文", "report_notification.categories.legal": "法律义务", + "report_notification.categories.legal_sentence": "非法内容", "report_notification.categories.other": "其他", + "report_notification.categories.other_sentence": "其它", "report_notification.categories.spam": "骚扰", + "report_notification.categories.spam_sentence": "骚扰", "report_notification.categories.violation": "违反规则", + "report_notification.categories.violation_sentence": "违反规则", "report_notification.open": "打开举报", "search.no_recent_searches": "无最近搜索", "search.placeholder": "搜索", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 09a497e889..4b717a77da 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -479,7 +479,6 @@ "notification.moderation_warning.action_silence": "你的帳號已受到限制。", "notification.moderation_warning.action_suspend": "你的帳號已被停權。", "notification.own_poll": "你的投票已結束", - "notification.poll": "你參與過的一個投票已經結束", "notification.reblog": "{name} 轉推你的文章", "notification.relationships_severance_event": "失去與 {name} 的連結", "notification.relationships_severance_event.account_suspension": "{from} 的管理員已將 {target} 停權,這表示你無法再收到他們的更新或與他們互動。", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index b9a5fc0714..dca4cd134a 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -443,6 +443,8 @@ "mute_modal.title": "是否靜音該使用者?", "mute_modal.you_wont_see_mentions": "您不會見到提及他們的嘟文。", "mute_modal.you_wont_see_posts": "他們仍可讀取您的嘟文,但您不會見到他們的。", + "name_and_others": "{name} 與 {count, plural, other {# 個人}}", + "name_and_others_with_link": "{name} 與 {count, plural, other {# 個人}}", "navigation_bar.about": "關於", "navigation_bar.advanced_interface": "以進階網頁介面開啟", "navigation_bar.blocks": "已封鎖的使用者", @@ -470,6 +472,10 @@ "navigation_bar.security": "安全性", "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。", "notification.admin.report": "{name} 已檢舉 {target}", + "notification.admin.report_account": "{name} 已檢舉來自 {target} 關於 {category} 之 {count, plural, other {# 則嘟文}} ", + "notification.admin.report_account_other": "{name} 已檢舉來自 {target} 之 {count, plural, other {# 則嘟文}} ", + "notification.admin.report_statuses": "{name} 已檢舉 {target} 關於 {category}", + "notification.admin.report_statuses_other": "{name} 已檢舉 {target}", "notification.admin.sign_up": "{name} 已經註冊", "notification.favourite": "{name} 已將您的嘟文加入最愛", "notification.follow": "{name} 已跟隨您", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "您的帳號已被停權。", "notification.own_poll": "您的投票已結束", "notification.poll": "您曾投過的投票已經結束", + "notification.private_mention": "{name} 私訊您", "notification.reblog": "{name} 已轉嘟您的嘟文", "notification.relationships_severance_event": "與 {name} 失去連結", "notification.relationships_severance_event.account_suspension": "{from} 之管理員已將 {target} 停權,意味著您將不再收到來自他們的更新或與之互動。", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "新檢舉報告:", "notifications.column_settings.admin.sign_up": "新註冊帳號:", "notifications.column_settings.alert": "桌面通知", + "notifications.column_settings.beta.category": "實驗性功能", + "notifications.column_settings.beta.grouping": "分組通知", "notifications.column_settings.favourite": "最愛:", "notifications.column_settings.filter_bar.advanced": "顯示所有分類", "notifications.column_settings.filter_bar.category": "快速過濾器", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁時間軸再見到他們的嘟文,請取消跟隨。", "report_notification.attached_statuses": "{count, plural, one {{count} 則} other {{count} 則}} 嘟文", "report_notification.categories.legal": "合法性", + "report_notification.categories.legal_sentence": "違法內容", "report_notification.categories.other": "其他", + "report_notification.categories.other_sentence": "其他", "report_notification.categories.spam": "垃圾訊息", + "report_notification.categories.spam_sentence": "垃圾訊息", "report_notification.categories.violation": "違反規則", + "report_notification.categories.violation_sentence": "違反規則", "report_notification.open": "開啟檢舉報告", "search.no_recent_searches": "尚無最近的搜尋紀錄", "search.placeholder": "搜尋", diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index a41272364a..635bab5460 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -23,7 +23,7 @@ html { // Change default background colors of columns .interaction-modal { background: $white; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); } .rules-list li::before { @@ -75,8 +75,8 @@ html { } .getting-started .navigation-bar { - border-top: 1px solid lighten($ui-base-color, 8%); - border-bottom: 1px solid lighten($ui-base-color, 8%); + border-top: 1px solid var(--background-border-color); + border-bottom: 1px solid var(--background-border-color); @media screen and (max-width: $no-gap-breakpoint) { border-top: 0; @@ -88,7 +88,7 @@ html { .setting-text, .report-dialog-modal__textarea, .audio-player { - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); } .report-dialog-modal .dialog-option .poll__input { @@ -140,7 +140,6 @@ html { .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, -.admin-wrapper .sidebar ul .simple-navigation-active-leaf a, .simple_form .block-button, .simple_form .button, .simple_form button { @@ -175,7 +174,7 @@ html { .picture-in-picture__footer, .reactions-bar__item { background: $white; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); } .reactions-bar__item:hover, @@ -217,7 +216,7 @@ html { .column-header__collapsible-inner { background: darken($ui-base-color, 4%); - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); border-bottom: 0; } @@ -259,7 +258,7 @@ html { .embed-modal .embed-modal__container .embed-modal__html { background: $white; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); &:focus { border-color: lighten($ui-base-color, 12%); @@ -298,7 +297,7 @@ html { .directory__tag > a, .directory__tag > div { background: $white; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); @media screen and (max-width: $no-gap-breakpoint) { border-left: 0; @@ -307,18 +306,6 @@ html { } } -.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%); @@ -346,7 +333,7 @@ html { } .activity-stream { - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); &--under-tabs { border-top: 0; @@ -411,6 +398,22 @@ html { color: $ui-highlight-color; background-color: rgba($ui-highlight-color, 0.1); } + + input[type='text'], + input[type='number'], + input[type='email'], + input[type='password'], + input[type='url'], + input[type='datetime-local'], + textarea { + background: darken($ui-base-color, 10%); + } + + select { + background: darken($ui-base-color, 10%) + url("data:image/svg+xml;utf8,") + no-repeat right 8px center / auto 14px; + } } .compose-form .compose-form__warning { @@ -449,8 +452,24 @@ html { box-shadow: none; } +.card { + &__img { + background: darken($ui-base-color, 10%); + } + + & > a { + &:hover, + &:active, + &:focus { + .card__bar { + background: darken($ui-base-color, 10%); + } + } + } +} + .mute-modal select { - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); background: $simple-background-color url("data:image/svg+xml;utf8,") no-repeat right 8px center / auto 16px; @@ -491,6 +510,7 @@ html { .search__popout, .emoji-mart-search input, .language-dropdown__dropdown .emoji-mart-search input, +// .strike-card, .poll__option input[type='text'] { background: darken($ui-base-color, 10%); } @@ -507,3 +527,43 @@ html { .inline-follow-suggestions__body__scroll-button__icon { color: $white; } + +a.sparkline { + &:hover, + &:focus, + &:active { + background: darken($ui-base-color, 10%); + } +} + +.dashboard__counters { + & > div { + & > a { + &:hover, + &:focus, + &:active { + background: darken($ui-base-color, 10%); + } + } + } +} + +.directory { + &__tag { + & > a { + &:hover, + &:focus, + &:active { + background: darken($ui-base-color, 10%); + } + } + } +} + +.strike-entry { + &:hover, + &:focus, + &:active { + background: darken($ui-base-color, 10%); + } +} diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index 80d6c13cef..e63601fa9f 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -10,7 +10,7 @@ &:active, &:focus { .card__bar { - background: lighten($ui-base-color, 8%); + background: $ui-base-color; } } } @@ -18,7 +18,9 @@ &__img { height: 130px; position: relative; - background: darken($ui-base-color, 12%); + background: $ui-base-color; + border: 1px solid var(--background-border-color); + border-bottom: none; img { display: block; @@ -39,7 +41,9 @@ display: flex; justify-content: flex-start; align-items: center; - background: lighten($ui-base-color, 4%); + background: var(--background-color); + border: 1px solid var(--background-border-color); + border-top: none; .avatar { flex: 0 0 auto; diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 1556b69e9d..41ccbc3746 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1,7 +1,7 @@ @use 'sass:math'; $no-columns-breakpoint: 600px; -$sidebar-width: 240px; +$sidebar-width: 300px; $content-width: 840px; .admin-wrapper { @@ -26,7 +26,7 @@ $content-width: 840px; &__inner { display: flex; justify-content: flex-end; - background: $ui-base-color; + background: var(--background-color); height: 100%; } } @@ -38,7 +38,7 @@ $content-width: 840px; &__toggle { display: none; - background: darken($ui-base-color, 4%); + background: var(--background-color); border-bottom: 1px solid lighten($ui-base-color, 4%); align-items: center; @@ -103,7 +103,6 @@ $content-width: 840px; ul { list-style: none; - border-radius: 4px 0 0 4px; overflow: hidden; margin-bottom: 20px; @@ -112,13 +111,13 @@ $content-width: 840px; } a { + font-size: 14px; display: block; padding: 15px; color: $darker-text-color; text-decoration: none; transition: all 200ms linear; transition-property: color, background-color; - border-radius: 4px 0 0 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -129,19 +128,13 @@ $content-width: 840px; &:hover { color: $primary-text-color; - background-color: darken($ui-base-color, 5%); transition: all 100ms linear; transition-property: color, background-color; } - - &.selected { - border-radius: 4px 0 0; - } } ul { - background: darken($ui-base-color, 4%); - border-radius: 0 0 0 4px; + background: var(--background-color); margin: 0; a { @@ -156,16 +149,10 @@ $content-width: 840px; } .simple-navigation-active-leaf a { - color: $primary-text-color; - background-color: $ui-highlight-color; + color: $highlight-text-color; border-bottom: 0; - border-radius: 0; } } - - & > ul > .simple-navigation-active-leaf a { - border-radius: 4px 0 0 4px; - } } .content-wrapper { @@ -299,7 +286,7 @@ $content-width: 840px; color: $darker-text-color; padding-bottom: 8px; margin-bottom: 8px; - border-bottom: 1px solid lighten($ui-base-color, 8%); + border-bottom: 1px solid var(--background-border-color); } h6 { @@ -372,7 +359,7 @@ $content-width: 840px; width: 100%; height: 0; border: 0; - border-bottom: 1px solid rgba($ui-base-lighter-color, 0.6); + border-bottom: 1px solid var(--background-border-color); margin: 20px 0; &.spacer { @@ -410,14 +397,14 @@ $content-width: 840px; inset-inline-start: 0; bottom: 0; overflow-y: auto; - background: $ui-base-color; + background: var(--background-color); } } ul a, ul ul a { + font-size: 16px; border-radius: 0; - border-bottom: 1px solid lighten($ui-base-color, 4%); transition: none; &:hover { @@ -699,8 +686,10 @@ body, line-height: 20px; padding: 15px; padding-inline-start: 15px * 2 + 40px; - background: $ui-base-color; - border-bottom: 1px solid darken($ui-base-color, 8%); + background: var(--background-color); + border-right: 1px solid var(--background-border-color); + border-left: 1px solid var(--background-border-color); + border-bottom: 1px solid var(--background-border-color); position: relative; text-decoration: none; color: $darker-text-color; @@ -709,18 +698,13 @@ body, &:first-child { border-top-left-radius: 4px; border-top-right-radius: 4px; + border-top: 1px solid var(--background-border-color); } &:last-child { border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; - border-bottom: 0; - } - - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 4%); + border-bottom: 1px solid var(--background-border-color); } &__avatar { @@ -760,6 +744,47 @@ body, } } +.strike-entry { + display: block; + line-height: 20px; + padding: 15px; + padding-inline-start: 15px * 2 + 40px; + background: var(--background-color); + border: 1px solid var(--background-border-color); + border-radius: 4px; + position: relative; + text-decoration: none; + color: $darker-text-color; + font-size: 14px; + margin-bottom: 15px; + + &__avatar { + position: absolute; + inset-inline-start: 15px; + top: 15px; + + .avatar { + border-radius: 4px; + width: 40px; + height: 40px; + } + } + + &__title { + word-wrap: break-word; + } + + &__timestamp { + color: $dark-text-color; + } + + &:hover, + &:focus, + &:active { + background: $ui-base-color; + } +} + a.name-tag, .name-tag, a.inline-name-tag, @@ -767,6 +792,10 @@ a.inline-name-tag, text-decoration: none; color: $secondary-text-color; + &:hover { + color: $highlight-text-color; + } + .username { font-weight: 500; } @@ -846,7 +875,8 @@ a.name-tag, } .report-card { - background: $ui-base-color; + background: var(--background-color); + border: 1px solid var(--background-border-color); border-radius: 4px; margin-bottom: 20px; @@ -858,7 +888,6 @@ a.name-tag, .account { padding: 0; - border: 0; &__avatar-wrapper { margin-inline-start: 0; @@ -879,7 +908,7 @@ a.name-tag, &:focus, &:hover, &:active { - color: lighten($darker-text-color, 8%); + color: $highlight-text-color; } } @@ -893,11 +922,7 @@ a.name-tag, &__item { display: flex; justify-content: flex-start; - border-top: 1px solid darken($ui-base-color, 4%); - - &:hover { - background: lighten($ui-base-color, 2%); - } + border-top: 1px solid var(--background-border-color); &__reported-by, &__assigned { @@ -920,7 +945,6 @@ a.name-tag, max-width: calc(100% - 300px); &__icon { - color: $dark-text-color; margin-inline-end: 4px; font-weight: 500; } @@ -933,6 +957,10 @@ a.name-tag, padding: 15px; text-decoration: none; color: $darker-text-color; + + &:hover { + color: $highlight-text-color; + } } } } @@ -968,14 +996,15 @@ a.name-tag, .account__header__fields, .account__header__content { - background: lighten($ui-base-color, 8%); + background: var(--background-color); + border: 1px solid var(--background-border-color); border-radius: 4px; height: 100%; } .account__header__fields { margin: 0; - border: 0; + border: 1px solid var(--background-border-color); a { color: $highlight-text-color; @@ -1004,8 +1033,8 @@ a.name-tag, .applications-list__item, .filters-list__item { padding: 15px 0; - background: $ui-base-color; - border: 1px solid lighten($ui-base-color, 4%); + background: var(--background-color); + border: 1px solid var(--background-border-color); border-radius: 4px; margin-top: 15px; } @@ -1016,13 +1045,13 @@ a.name-tag, .announcements-list, .filters-list { - border: 1px solid lighten($ui-base-color, 4%); + border: 1px solid var(--background-border-color); border-radius: 4px; + border-bottom: none; &__item { padding: 15px 0; - background: $ui-base-color; - border-bottom: 1px solid lighten($ui-base-color, 4%); + border-bottom: 1px solid var(--background-border-color); &__title { padding: 0 15px; @@ -1034,6 +1063,10 @@ a.name-tag, text-decoration: none; margin-bottom: 10px; + &:hover { + color: $highlight-text-color; + } + .account-role { vertical-align: middle; } @@ -1072,10 +1105,6 @@ a.name-tag, &__permissions { margin-top: 10px; } - - &:last-child { - border-bottom: 0; - } } } @@ -1125,7 +1154,7 @@ a.name-tag, &__table { &__number { - color: $secondary-text-color; + color: var(--background-color); padding: 10px; } @@ -1152,7 +1181,7 @@ a.name-tag, &__box { box-sizing: border-box; - background: $ui-highlight-color; + background: var(--background-color); padding: 10px; font-weight: 500; color: $primary-text-color; @@ -1174,8 +1203,9 @@ a.name-tag, .sparkline { display: block; text-decoration: none; - background: lighten($ui-base-color, 4%); + background: var(--background-color); border-radius: 4px; + border: 1px solid var(--background-border-color); padding: 0; position: relative; padding-bottom: 55px + 20px; @@ -1247,12 +1277,12 @@ a.sparkline { &:hover, &:focus, &:active { - background: lighten($ui-base-color, 6%); + background: $ui-base-color; } } .skeleton { - background-color: lighten($ui-base-color, 8%); + background-color: var(--background-color); background-image: linear-gradient( 90deg, lighten($ui-base-color, 8%), @@ -1332,17 +1362,13 @@ a.sparkline { .report-reason-selector { border-radius: 4px; - background: $ui-base-color; + background: var(--background-color); margin-bottom: 20px; &__category { cursor: pointer; border-bottom: 1px solid darken($ui-base-color, 8%); - &:last-child { - border-bottom: 0; - } - &__label { padding: 15px; display: flex; @@ -1371,7 +1397,7 @@ a.sparkline { &__details { &__item { - border-bottom: 1px solid lighten($ui-base-color, 8%); + border-bottom: 1px solid var(--background-border-color); padding: 15px 0; &:last-child { @@ -1402,7 +1428,7 @@ a.sparkline { .account-card { border-radius: 4px; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); position: relative; &__warning-badge { @@ -1490,7 +1516,6 @@ a.sparkline { position: absolute; bottom: 0; inset-inline-end: 15px; - background: linear-gradient(to left, $ui-base-color, transparent); pointer-events: none; } @@ -1566,11 +1591,11 @@ a.sparkline { margin-bottom: 20px; &__item { - background: $ui-base-color; + background: var(--background-color); position: relative; padding: 15px; padding-inline-start: 15px * 2 + 40px; - border-bottom: 1px solid darken($ui-base-color, 8%); + border: 1px solid var(--background-border-color); &:first-child { border-top-left-radius: 4px; @@ -1580,11 +1605,6 @@ a.sparkline { &:last-child { border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; - border-bottom: 0; - } - - &:hover { - background-color: lighten($ui-base-color, 4%); } &__avatar { @@ -1662,13 +1682,10 @@ a.sparkline { } .report-actions { - border: 1px solid darken($ui-base-color, 8%); - &__item { display: flex; align-items: center; line-height: 18px; - border-bottom: 1px solid darken($ui-base-color, 8%); &:last-child { border-bottom: 0; @@ -1731,8 +1748,6 @@ a.sparkline { .strike-card { padding: 15px; - border-radius: 4px; - background: $ui-base-color; font-size: 15px; line-height: 20px; word-wrap: break-word; @@ -1740,6 +1755,8 @@ a.sparkline { color: $primary-text-color; box-sizing: border-box; min-height: 100%; + border: 1px solid var(--background-border-color); + border-radius: 4px; a { color: $highlight-text-color; @@ -1780,15 +1797,14 @@ a.sparkline { &__statuses-list { border-radius: 4px; - border: 1px solid darken($ui-base-color, 8%); + border: 1px solid var(--background-border-color); font-size: 13px; line-height: 18px; overflow: hidden; &__item { padding: 16px; - background: lighten($ui-base-color, 2%); - border-bottom: 1px solid darken($ui-base-color, 8%); + border-bottom: 1px solid var(--background-border-color); &:last-child { border-bottom: 0; diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss index 2e7d5e5e9c..456e042c53 100644 --- a/app/javascript/styles/mastodon/basics.scss +++ b/app/javascript/styles/mastodon/basics.scss @@ -122,7 +122,7 @@ body { } &.admin { - background: darken($ui-base-color, 4%); + background: var(--background-color); padding: 0; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index c74405ea0f..581ba3c64a 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -521,7 +521,7 @@ body > [data-popper-placement] { gap: 16px; flex: 0 1 auto; border-radius: 4px; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); transition: border-color 300ms linear; min-height: 0; position: relative; @@ -587,7 +587,7 @@ body > [data-popper-placement] { .autosuggest-input { flex: 1 1 auto; - border-bottom: 1px solid lighten($ui-base-color, 8%); + border-bottom: 1px solid var(--background-border-color); } } @@ -1452,7 +1452,7 @@ body > [data-popper-placement] { } &--first-in-thread { - border-top: 1px solid lighten($ui-base-color, 8%); + border-top: 1px solid var(--background-border-color); } &__line { @@ -1794,7 +1794,6 @@ body > [data-popper-placement] { .account { padding: 16px; - border-bottom: 1px solid var(--background-border-color); .account__display-name { flex: 1 1 auto; @@ -3325,7 +3324,7 @@ $ui-header-logo-wordmark-width: 99px; .copy-paste-text { background: lighten($ui-base-color, 4%); border-radius: 8px; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); padding: 16px; color: $primary-text-color; font-size: 15px; @@ -4728,7 +4727,7 @@ a.status-card { section { padding: 16px; - border-bottom: 1px solid lighten($ui-base-color, 8%); + border-bottom: 1px solid var(--background-border-color); &:last-child { border-bottom: 0; @@ -5316,7 +5315,7 @@ a.status-card { input { padding: 8px 12px; background: $ui-base-color; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); color: $darker-text-color; @media screen and (width <= 600px) { @@ -5402,7 +5401,7 @@ a.status-card { margin-top: -2px; width: 100%; background: $ui-base-color; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); border-radius: 0 0 4px 4px; box-shadow: var(--dropdown-shadow); z-index: 99; @@ -7380,6 +7379,11 @@ a.status-card { display: flex; flex-shrink: 0; + @media screen and (max-width: $no-gap-breakpoint) { + border-right: 0; + border-left: 0; + } + button { background: transparent; border: 0; @@ -8784,13 +8788,13 @@ noscript { } .search__input { - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); padding: 10px; padding-inline-end: 30px; } .search__popout { - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); } .search .icon { @@ -9109,7 +9113,7 @@ noscript { &__input { @include search-input; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); padding: 4px 6px; color: $primary-text-color; font-size: 16px; @@ -9144,7 +9148,7 @@ noscript { margin-top: -1px; padding-top: 5px; padding-bottom: 5px; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); } &.focused &__input { @@ -10452,6 +10456,8 @@ noscript { } &__embedded-status { + cursor: pointer; + &__account { display: flex; align-items: center; @@ -10473,7 +10479,6 @@ noscript { font-size: 15px; line-height: 22px; color: $dark-text-color; - cursor: pointer; -webkit-line-clamp: 4; -webkit-box-orient: vertical; max-height: 4 * 22px; diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss index 8a472d75b1..9363e428b3 100644 --- a/app/javascript/styles/mastodon/containers.scss +++ b/app/javascript/styles/mastodon/containers.scss @@ -63,7 +63,7 @@ padding: 20px 0; margin-top: 40px; margin-bottom: 10px; - border-bottom: 1px solid lighten($ui-base-color, 8%); + border-bottom: 1px solid var(--background-border-color); @media screen and (width <= 440px) { width: 100%; diff --git a/app/javascript/styles/mastodon/dashboard.scss b/app/javascript/styles/mastodon/dashboard.scss index 36a7f44253..12d0a6b92f 100644 --- a/app/javascript/styles/mastodon/dashboard.scss +++ b/app/javascript/styles/mastodon/dashboard.scss @@ -13,8 +13,9 @@ & > div, & > a { padding: 20px; - background: lighten($ui-base-color, 4%); + background: var(--background-color); border-radius: 4px; + border: 1px solid var(--background-border-color); box-sizing: border-box; height: 100%; } @@ -27,7 +28,7 @@ &:hover, &:focus, &:active { - background: lighten($ui-base-color, 8%); + background: $ui-base-color; } } } diff --git a/app/javascript/styles/mastodon/emoji_picker.scss b/app/javascript/styles/mastodon/emoji_picker.scss index b9fdaa5847..3652ad4abb 100644 --- a/app/javascript/styles/mastodon/emoji_picker.scss +++ b/app/javascript/styles/mastodon/emoji_picker.scss @@ -105,7 +105,7 @@ width: 100%; background: $ui-base-color; color: $darker-text-color; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); border-radius: 4px; &::-moz-focus-inner { diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 26bb2bee14..13a731f7f6 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -414,7 +414,7 @@ code { } .input.static .label_input__wrapper { - font-size: 16px; + font-size: 14px; padding: 10px; border: 1px solid $dark-text-color; border-radius: 4px; @@ -436,13 +436,14 @@ code { outline: 0; font-family: inherit; resize: vertical; - background: darken($ui-base-color, 10%); - border: 1px solid darken($ui-base-color, 10%); - border-radius: 8px; + background: $ui-base-color; + border: 1px solid var(--background-border-color); + border-radius: 4px; padding: 10px 16px; &::placeholder { - color: lighten($darker-text-color, 4%); + color: $dark-text-color; + opacity: 1; } &:invalid { @@ -453,11 +454,6 @@ code { border-color: $valid-value-color; } - &:active, - &:focus { - border-color: $highlight-text-color; - } - @media screen and (width <= 600px) { font-size: 16px; } @@ -576,21 +572,25 @@ code { select { appearance: none; box-sizing: border-box; - font-size: 16px; + font-size: 14px; color: $primary-text-color; display: block; width: 100%; outline: 0; font-family: inherit; resize: vertical; - background: darken($ui-base-color, 10%) + background: $ui-base-color url("data:image/svg+xml;utf8,") - no-repeat right 8px center / auto 16px; - border: 1px solid darken($ui-base-color, 14%); + no-repeat right 8px center / auto 14px; + border: 1px solid var(--background-border-color); border-radius: 4px; padding-inline-start: 10px; padding-inline-end: 30px; height: 41px; + + @media screen and (width <= 600px) { + font-size: 16px; + } } h4 { @@ -644,8 +644,9 @@ code { } .flash-message { - background: lighten($ui-base-color, 8%); - color: $darker-text-color; + background: var(--background-color); + color: $highlight-text-color; + border: 1px solid $highlight-text-color; border-radius: 4px; padding: 15px 10px; margin-bottom: 30px; @@ -1335,7 +1336,7 @@ code { &__toggle > div { display: flex; - border-inline-start: 1px solid lighten($ui-base-color, 8%); + border-inline-start: 1px solid var(--background-border-color); padding-inline-start: 16px; } } diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index b5c4836bcd..8d3efcb572 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -46,7 +46,7 @@ body.rtl { } .simple_form select { - background: darken($ui-base-color, 10%) + background: $ui-base-color url("data:image/svg+xml;utf8,") no-repeat left 8px center / auto 16px; } diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index dd5b483ec4..eab7937150 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -9,9 +9,9 @@ padding: 8px; line-height: 18px; vertical-align: top; - border-top: 1px solid $ui-base-color; + border-bottom: 1px solid var(--background-border-color); text-align: start; - background: darken($ui-base-color, 4%); + background: var(--background-color); &.critical { font-weight: 700; @@ -21,8 +21,6 @@ & > thead > tr > th { vertical-align: bottom; - border-bottom: 2px solid $ui-base-color; - border-top: 0; font-weight: 500; } @@ -32,15 +30,20 @@ & > tbody > tr:nth-child(odd) > td, & > tbody > tr:nth-child(odd) > th { - background: $ui-base-color; + background: var(--background-color); + } + + & > tbody > tr:last-child > td, + & > tbody > tr:last-child > th { + border-bottom: 0; } a { - color: $highlight-text-color; - text-decoration: underline; + color: $darker-text-color; + text-decoration: none; &:hover { - text-decoration: none; + color: $highlight-text-color; } } @@ -78,7 +81,7 @@ & > tbody > tr > td { padding: 11px 10px; background: transparent; - border: 1px solid lighten($ui-base-color, 8%); + border: 1px solid var(--background-border-color); color: $secondary-text-color; } @@ -90,18 +93,18 @@ &.batch-table { & > thead > tr > th { - background: $ui-base-color; - border-top: 1px solid darken($ui-base-color, 8%); - border-bottom: 1px solid darken($ui-base-color, 8%); + background: var(--background-color); + border-top: 1px solid var(--background-border-color); + border-bottom: 1px solid var(--background-border-color); &:first-child { border-radius: 4px 0 0; - border-inline-start: 1px solid darken($ui-base-color, 8%); + border-inline-start: 1px solid var(--background-border-color); } &:last-child { border-radius: 0 4px 0 0; - border-inline-end: 1px solid darken($ui-base-color, 8%); + border-inline-end: 1px solid var(--background-border-color); } } } @@ -136,7 +139,7 @@ a.table-action-link { font-weight: 500; &:hover { - color: $primary-text-color; + color: $highlight-text-color; } i.fa { @@ -186,9 +189,9 @@ a.table-action-link { position: sticky; top: 0; z-index: 1; - border: 1px solid darken($ui-base-color, 8%); - background: $ui-base-color; - border-radius: 4px 0 0; + border: 1px solid var(--background-border-color); + background: var(--background-color); + border-radius: 4px 4px 0 0; height: 47px; align-items: center; @@ -199,11 +202,11 @@ a.table-action-link { } &__select-all { - background: $ui-base-color; + background: var(--background-color); height: 47px; align-items: center; justify-content: center; - border: 1px solid darken($ui-base-color, 8%); + border: 1px solid var(--background-border-color); border-top: 0; color: $secondary-text-color; display: none; @@ -249,9 +252,9 @@ a.table-action-link { &__form { padding: 16px; - border: 1px solid darken($ui-base-color, 8%); + border: 1px solid var(--background-border-color); border-top: 0; - background: $ui-base-color; + background: var(--background-color); .fields-row { padding-top: 0; @@ -260,26 +263,18 @@ a.table-action-link { } &__row { - border: 1px solid darken($ui-base-color, 8%); + border: 1px solid var(--background-border-color); border-top: 0; - background: darken($ui-base-color, 4%); + background: var(--background-color); @media screen and (max-width: $no-gap-breakpoint) { .optional &:first-child { - border-top: 1px solid darken($ui-base-color, 8%); + border-top: 1px solid var(--background-border-color); } } - &:hover { - background: darken($ui-base-color, 2%); - } - &:nth-child(even) { - background: $ui-base-color; - - &:hover { - background: lighten($ui-base-color, 2%); - } + background: var(--background-color); } &__content { @@ -357,12 +352,13 @@ a.table-action-link { } .nothing-here { - border: 1px solid darken($ui-base-color, 8%); + border: 1px solid var(--background-border-color); border-top: 0; box-shadow: none; + background: var(--background-color); @media screen and (max-width: $no-gap-breakpoint) { - border-top: 1px solid darken($ui-base-color, 8%); + border-top: 1px solid var(--background-border-color); } } diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss index 1f69f0cf01..0d56bd9c48 100644 --- a/app/javascript/styles/mastodon/widgets.scss +++ b/app/javascript/styles/mastodon/widgets.scss @@ -204,7 +204,7 @@ } .directory { - background: $ui-base-color; + background: var(--background-color); border-radius: 4px; box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); @@ -217,7 +217,7 @@ display: flex; align-items: center; justify-content: space-between; - background: $ui-base-color; + border: 1px solid lighten($ui-base-color, 8%); border-radius: 4px; padding: 15px; text-decoration: none; @@ -229,7 +229,7 @@ &:hover, &:active, &:focus { - background: lighten($ui-base-color, 8%); + background: $ui-base-color; } } @@ -351,7 +351,7 @@ &:focus, &:hover, &:active { - text-decoration: underline; + color: $highlight-text-color; } } } diff --git a/app/lib/activitypub/adapter.rb b/app/lib/activitypub/adapter.rb index 098b6296fb..5b9437eb8d 100644 --- a/app/lib/activitypub/adapter.rb +++ b/app/lib/activitypub/adapter.rb @@ -20,6 +20,6 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base serialized_hash = serialized_hash.select { |k, _| options[:fields].include?(k) } if options[:fields] serialized_hash = self.class.transform_key_casing!(serialized_hash, instance_options) - { '@context' => serialized_context(named_contexts, context_extensions) }.merge(serialized_hash) + { '@context': serialized_context(named_contexts, context_extensions) }.merge(serialized_hash) end end diff --git a/app/lib/webfinger.rb b/app/lib/webfinger.rb index aeafe19702..01a5dbc21d 100644 --- a/app/lib/webfinger.rb +++ b/app/lib/webfinger.rb @@ -6,6 +6,8 @@ class Webfinger class RedirectError < Error; end class Response + ACTIVITYPUB_READY_TYPE = ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].freeze + attr_reader :uri def initialize(uri, body) @@ -20,17 +22,28 @@ class Webfinger end def link(rel, attribute) - links.dig(rel, attribute) + links.dig(rel, 0, attribute) + end + + def self_link_href + self_link.fetch('href') end private def links - @links ||= @json.fetch('links', []).index_by { |link| link['rel'] } + @links ||= @json.fetch('links', []).group_by { |link| link['rel'] } + end + + def self_link + links.fetch('self', []).find do |link| + ACTIVITYPUB_READY_TYPE.include?(link['type']) + end end def validate_response! raise Webfinger::Error, "Missing subject in response for #{@uri}" if subject.blank? + raise Webfinger::Error, "Missing self link in response for #{@uri}" if self_link.blank? end end diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index fc984b2445..1f48e0a497 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -5,6 +5,14 @@ class Admin::ActionLogFilter action_type account_id target_account_id + target_domain + ).freeze + + INSTANCE_TARGET_TYPES = %w( + DomainBlock + DomainAllow + Instance + UnavailableDomain ).freeze ACTION_TYPE_MAP = { @@ -95,6 +103,9 @@ class Admin::ActionLogFilter when 'target_account_id' account = Account.find_or_initialize_by(id: value) latest_action_logs.where(target: [account, account.user].compact) + when 'target_domain' + normalized_domain = TagManager.instance.normalize_domain(value) + latest_action_logs.where(human_identifier: normalized_domain, target_type: INSTANCE_TARGET_TYPES) else raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end diff --git a/app/models/notification.rb b/app/models/notification.rb index 2d0733f296..65ab62c1fa 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -157,7 +157,7 @@ class Notification < ApplicationRecord .with_recursive( grouped_notifications: [ query - .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] groups") + .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] AS groups") .limit(1), query .joins('CROSS JOIN grouped_notifications') @@ -185,7 +185,7 @@ class Notification < ApplicationRecord .with_recursive( grouped_notifications: [ query - .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] groups") + .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] AS groups") .limit(1), query .joins('CROSS JOIN grouped_notifications') diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb index 86a134bb4e..2c372c2ec3 100644 --- a/app/services/activitypub/fetch_remote_actor_service.rb +++ b/app/services/activitypub/fetch_remote_actor_service.rb @@ -49,7 +49,7 @@ class ActivityPub::FetchRemoteActorService < BaseService confirmed_username, confirmed_domain = split_acct(webfinger.subject) if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? - raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.self_link_href != @uri return end @@ -58,8 +58,7 @@ class ActivityPub::FetchRemoteActorService < BaseService @username, @domain = split_acct(webfinger.subject) raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{@uri} (stopped at #{@username}@#{@domain})" unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? - - raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.self_link_href != @uri rescue Webfinger::RedirectError => e raise Error, e.message rescue Webfinger::Error => e diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb index 94be214eb2..b5f49c46eb 100644 --- a/app/services/backup_service.rb +++ b/app/services/backup_service.rb @@ -19,8 +19,8 @@ class BackupService < BaseService def build_outbox_json!(file) skeleton = serialize(collection_presenter, ActivityPub::CollectionSerializer) - skeleton['@context'] = full_context - skeleton['orderedItems'] = ['!PLACEHOLDER!'] + skeleton[:@context] = full_context + skeleton[:orderedItems] = ['!PLACEHOLDER!'] skeleton = Oj.dump(skeleton) prepend, append = skeleton.split('"!PLACEHOLDER!"') add_comma = false @@ -33,7 +33,7 @@ class BackupService < BaseService file.write(statuses.map do |status| item = serialize_payload(ActivityPub::ActivityPresenter.from_status(status), ActivityPub::ActivitySerializer, allow_local_only: true) - item.delete('@context') + item.delete(:@context) unless item[:type] == 'Announce' || item[:object][:attachment].blank? item[:object][:attachment].each do |attachment| diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb index 078a0423f2..8a5863baba 100644 --- a/app/services/resolve_account_service.rb +++ b/app/services/resolve_account_service.rb @@ -106,8 +106,6 @@ class ResolveAccountService < BaseService end def fetch_account! - return unless activitypub_ready? - with_redis_lock("resolve:#{@username}@#{@domain}") do @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url, suppress_errors: @options[:suppress_errors]) end @@ -122,12 +120,8 @@ class ResolveAccountService < BaseService @options[:skip_cache] || @account.nil? || @account.possibly_stale? end - def activitypub_ready? - ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(@webfinger.link('self', 'type')) - end - def actor_url - @actor_url ||= @webfinger.link('self', 'href') + @actor_url ||= @webfinger.self_link_href end def gone_from_origin? diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml index d916203d0c..c55eb89dc9 100644 --- a/app/views/admin/instances/show.html.haml +++ b/app/views/admin/instances/show.html.haml @@ -114,6 +114,16 @@ - if @instance.persisted? %hr.spacer/ + %h3= t('admin.instances.audit_log.title') + - if @action_logs.empty? + %p= t('accounts.nothing_here') + - else + .report-notes + = render partial: 'admin/action_logs/action_log', collection: @action_logs + = link_to t('admin.instances.audit_log.view_all'), admin_action_logs_path(target_domain: @instance.domain), class: 'button' + + %hr.spacer/ + %h3= t('admin.instances.availability.title') %p diff --git a/app/views/admin/roles/index.html.haml b/app/views/admin/roles/index.html.haml index 4f6c511b4f..90a647cc8a 100644 --- a/app/views/admin/roles/index.html.haml +++ b/app/views/admin/roles/index.html.haml @@ -8,10 +8,10 @@ %hr.spacer/ -.applications-list +.announcements-list = render partial: 'role', collection: @roles.select(&:everyone?) %hr.spacer/ -.applications-list +.announcements-list = render partial: 'role', collection: @roles.reject(&:everyone?) diff --git a/app/views/auth/registrations/_account_warning.html.haml b/app/views/auth/registrations/_account_warning.html.haml index 19e5746ff6..c51179b49d 100644 --- a/app/views/auth/registrations/_account_warning.html.haml +++ b/app/views/auth/registrations/_account_warning.html.haml @@ -1,14 +1,14 @@ -= link_to disputes_strike_path(account_warning), class: 'log-entry' do - .log-entry__header - .log-entry__avatar += link_to disputes_strike_path(account_warning), class: 'strike-entry' do + .strike-entry__header + .strike-entry__avatar .indicator-icon{ class: account_warning.overruled? ? 'success' : 'failure' } = fa_icon 'warning' - .log-entry__content - .log-entry__title + .strike-entry__content + .strike-entry__title = t 'disputes.strikes.title', action: t(account_warning.action, scope: 'disputes.strikes.title_actions'), date: l(account_warning.created_at.to_date) - .log-entry__timestamp + .strike-entry__timestamp %time.formatted{ datetime: account_warning.created_at.iso8601 }= l(account_warning.created_at) - if account_warning.overruled? diff --git a/babel.config.js b/babel.config.js index 9ced748a96..4c2fe5682b 100644 --- a/babel.config.js +++ b/babel.config.js @@ -68,7 +68,7 @@ module.exports = (api) => { plugins, overrides: [ { - test: /tesseract\.js/, + test: [/tesseract\.js/, /fuzzysort\.js/], presets: [ ['@babel/env', { ...envOptions, modules: 'commonjs' }], ], diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml index 2d532071a9..d139a32570 100644 --- a/config/locales/activerecord.ast.yml +++ b/config/locales/activerecord.ast.yml @@ -18,7 +18,7 @@ ast: account: attributes: username: - invalid: ha contener namás lletres, númberos ya guiones baxos + invalid: ha contener namás lletres, númberos y guiones baxos reserved: ta acutáu admin/webhook: attributes: diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml index 01e9a75f98..1c3bcc6ebf 100644 --- a/config/locales/activerecord.el.yml +++ b/config/locales/activerecord.el.yml @@ -36,14 +36,14 @@ el: status: attributes: reblog: - taken: της κατάστασης ήδη υπάρχει + taken: της ανάρτησης υπάρχει ήδη user: attributes: email: blocked: χρησιμοποιεί μη επιτρεπόμενο πάροχο e-mail unreachable: δεν φαίνεται να υπάρχει role_id: - elevated: δεν μπορεί να είναι μεγαλύτερο από τον τρέχοντα ρόλο σας + elevated: δεν μπορεί να είναι υψηλότερο από τον τρέχοντα ρόλο σου user_role: attributes: permissions_as_keys: diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 9e6ec6d233..567e5357eb 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -1,7 +1,7 @@ --- ast: about: - about_mastodon_html: 'La rede social del futuru: ¡ensin anuncios nin vixilancia, con un diseñu éticu ya descentralizáu! Controla los tos datos con Mastodon.' + 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.' contact_unavailable: N/D hosted_on: 'Mastodon ta agospiáu en: %{domain}' title: Tocante a @@ -45,11 +45,12 @@ ast: title: Moderación most_recent_activity: L'actividá más recién most_recent_ip: La IP más recién + no_limits_imposed: S'impunxo nenguna llende perform_full_suspension: Suspender protocol: Protocolu rejected_msg: Refugóse correutamente la solicitú de rexistru de «%{username}» resend_confirmation: - already_confirmed: Esti perfil xá ta confirmáu + already_confirmed: Esti perfil yá ta confirmáu role: Rol search: Buscar search_same_email_domain: Otros perfiles col mesmu dominiu de corréu electrónicu @@ -125,7 +126,7 @@ ast: no_emoji_selected: Nun camudó nengún fustaxe darréu que nun se seleicionó nengún not_permitted: Nun tienes permisu pa facer esta aición shortcode: Códigu curtiu - shortcode_hint: De 2 caráuteres como muncho, namás caráuteres alfanumbéricos ya guiones baxos + shortcode_hint: De 2 caráuteres como muncho, namás caráuteres alfanumbéricos y guiones baxos title: Fustaxes personalizaos uncategorized: Ensin categoría update_failed_msg: Nun se pudo anovar esi fustaxe @@ -176,7 +177,7 @@ ast: export_domain_allows: no_file: Nun se seleicionó nengún ficheru follow_recommendations: - description_html: "La recomendación de cuentes ayuda a que los perfiles nuevos atopen aína conteníu interesante. Cuando una cuenta nun interactuó abondo con otros perfiles como pa formar recomendaciones personalizaes, estes cuentes van ser les que se recomienden. Recalcúlense caldía a partir d'un mecíu de cuentes con más actividá recién ya mayor númberu de siguidores llocales pa una llingua determinada." + description_html: "La recomendación de cuentes ayuda a que los perfiles nuevos atopen aína conteníu interesante. Cuando una cuenta nun interactuó abondo con otros perfiles como pa formar recomendaciones personalizaes, estes cuentes van ser les que se recomienden. Recalcúlense caldía a partir d'un mecíu de cuentes con más actividá recién y mayor númberu de siguidores llocales pa una llingua determinada." language: Pa la llingua status: Estáu title: Recomendación de cuentes @@ -240,7 +241,7 @@ ast: one: "%{count} nota" other: "%{count} notes" actions: - silence_description_html: La cuenta va ser visible namás pa quien xá la siguiere o la buscare manualmente, lo que llenda'l so algame. Esta decisión pue desfacese en cualesquier momentu. Si escueyes esta opción, zárrense tolos informes escontra esta cuenta. + silence_description_html: La cuenta va ser visible namás pa quien yá la siguiere o la buscare manualmente, lo que llenda'l so algame. Esta decisión pue desfacese en cualesquier momentu. Si escueyes esta opción, zárrense tolos informes escontra esta cuenta. actions_description_html: Decidi qué aición tomar pa resolver esti informe. Si tomes una aición punitiva escontra la cuenta de la que s'informó, va unviase un avisu per corréu electrónicu a esa cuenta, esceuto cuando se seleiciona la categoría Puxarra. add_to_report: Amestar más al informe are_you_sure: "¿De xuru que quies facer esta aición?" @@ -314,7 +315,7 @@ ast: preamble: Personaliza la interfaz web de Mastodon. title: Aspeutu branding: - preamble: La marca del to sirvidor estrémalu d'otros sirvidores de la rede. Ye posible qu'esta información apaeza nuna variedá d'entornos, como la interfaz web de Mastodon, les aplicaciones natives, nes previsualizaciones de los enllaces d'otros sitios web, dientro de les aplicaciones de mensaxería, etc. Por esti motivu, lo meyor ye qu'esta información seya clara, curtia ya concisa. + preamble: La marca del to sirvidor estrémalu d'otros sirvidores de la rede. Ye posible qu'esta información apaeza nuna variedá d'entornos, como la interfaz web de Mastodon, les aplicaciones natives, nes previsualizaciones de los enllaces d'otros sitios web, dientro de les aplicaciones de mensaxería, etc. Por esti motivu, lo meyor ye qu'esta información seya clara, curtia y concisa. title: Marca content_retention: preamble: Controla cómo s'atroxa'l conteníu xeneráu polos perfiles en Mastodon. @@ -438,8 +439,8 @@ ast: empty: Nun tienes nengún nomatu. appearance: advanced_web_interface: Interfaz web avanzada - advanced_web_interface_hint: 'Si quies asegúrate de que s''use tol llargor de la pantalla, la interfaz web avanzada permítete configurar columnes estremaes pa ver muncha más información al empar: Aniciu, avisos, llinia de tiempu federada ya cualesquier cantidá de llistes ya etiquetes.' - animations_and_accessibility: Animaciones ya accesibilidá + advanced_web_interface_hint: 'Si quies asegúrate de que s''use tol llargor de la pantalla, la interfaz web avanzada permítete configurar columnes estremaes pa ver muncha más información al empar: Aniciu, avisos, llinia de tiempu federada y cualesquier cantidá de llistes y etiquetes.' + animations_and_accessibility: Animaciones y accesibilidá confirmation_dialogs: Diálogos de confirmación discovery: Descubrimientu localization: @@ -470,7 +471,7 @@ ast: logout: Zarrar la sesión migrate_account: Cambéu de cuenta migrate_account_html: Si quies redirixir esta cuenta a otra diferente, pues configurar esta opción equí. - privacy_policy_agreement_html: Lleí ya acepto la política de privacidá + privacy_policy_agreement_html: Lleí y acepto la política de privacidá providers: cas: CAS saml: SAML @@ -491,7 +492,7 @@ ast: status: account_status: Estáu de la cuenta functional: La cuenta ta completamente operativa. - pending: La to solicitú ta pendiente de que la revise'l nuesu personal ya ye posible que tarde tiempu. Vas recibir un mensaxe si s'aprueba. + pending: La to solicitú ta pendiente de que la revise'l nuesu personal y ye posible que tarde tiempu. Vas recibir un mensaxe si s'aprueba. too_fast: El formulariu xubióse mui rápido, volvi tentalo. challenge: confirm: Siguir @@ -536,7 +537,7 @@ ast: recipient: Dirixóse a reject_appeal: Refugar l'apellación status: 'Artículu #%{id}' - status_removed: L'artículu xá se quitó del sistema + status_removed: L'artículu yá se quitó del sistema your_appeal_approved: Aprobóse la to apellación your_appeal_pending: Unviesti una apellación your_appeal_rejected: Refugóse la to apellación @@ -548,7 +549,7 @@ ast: '403': Nun tienes permisu pa ver esta páxina. '404': La páxina que busques nun ta equí. '406': Esta páxina nun ta disponible nel formatu solicitáu. - '410': La páxina que busques xá nun esiste. + '410': La páxina que busques yá nun esiste. '422': content: La verificación de seguranza falló. ¿Tas bloquiando les cookies? title: La verificación de seguranza falló @@ -561,7 +562,7 @@ ast: exports: archive_takeout: date: Data - hint_html: Pues solicitar un archivu colos tos artículos ya ficheros xubíos. Los datos esportaos van tar nel formatu ActivityPub, llexible pa cualesquier software que seya compatible. Pues solicitar un archivu cada 7 díes. + hint_html: Pues solicitar un archivu colos tos artículos y ficheros xubíos. Los datos esportaos van tar nel formatu ActivityPub, llexible pa cualesquier software que seya compatible. Pues solicitar un archivu cada 7 díes. in_progress: Compilando l'archivu... request: Solicitar l'archivu size: Tamañu @@ -576,7 +577,7 @@ ast: filters: contexts: account: Perfiles - home: Aniciu ya llistes + home: Aniciu y llistes notifications: Avisos public: Llinies de tiempu públiques thread: Conversaciones @@ -617,7 +618,7 @@ ast: over_rows_processing_limit: contién más de %{count} fileres modes: merge: Mecíu - merge_long: Caltién los rexistros esistentes ya amiesta otros nuevos + merge_long: Caltién los rexistros esistentes y amiesta otros nuevos overwrite: Sobrescritura overwrite_long: Troca los rexistros actuales por otros nuevos preface: Pues importar los datos qu'esportares dende otru sirvidor, como la llista de perfiles bloquiaos o que sigas. @@ -645,7 +646,7 @@ ast: max_uses: one: 1 usu other: "%{count} usos" - prompt: Xenera ya comparti enllaces con otres persones pa conceder l'accesu a esti sirvidor + prompt: Xenera y comparti enllaces con otres persones pa conceder l'accesu a esti sirvidor table: expires_at: Data de caducidá uses: Usos @@ -657,7 +658,7 @@ ast: successful_sign_in_html: Anicióse correutamente la sesión col métodu «%{method}» dende %{ip} (%{browser}) media_attachments: validations: - images_and_video: Nun se pue axuntar nengún videu a un artículu que xá contién imáxenes + images_and_video: Nun se pue axuntar nengún videu a un artículu que yá contién imáxenes too_many: Nun se puen axuntar más de 4 ficheros migrations: errors: @@ -707,16 +708,16 @@ ast: description_html: Si actives l'autenticación en dos pasos con una aplicación autenticadora, al aniciar la sesión va ser obligatorio que tengas el teléfonu a mano, preséu que xenera los pases que tienes d'introducir. enable: Activar instructions_html: "Escania esti códigu QR con Google Authenticator o otra aplicación asemeyada nel móvil. Dende agora, esa aplicación va xenerar los pases que tienes d'introducir cuando anicies la sesión." - manual_instructions: 'Si nun pues escaniar el códigu QR ya tienes d''introducilu manualmente, equí tienes el secretu en testu ensin formatu:' + manual_instructions: 'Si nun pues escaniar el códigu QR y tienes d''introducilu manualmente, equí tienes el secretu en testu ensin formatu:' setup: Configurar - wrong_code: "¡El códigu introducíu nun yera válidu! ¿La hora del sirvidor ya la del preséu son correutes?" + wrong_code: "¡El códigu introducíu nun yera válidu! ¿La hora del sirvidor y la del preséu son correutes?" pagination: next: Siguiente truncate: "…" polls: errors: - already_voted: Xá votesti nesta encuesta - expired: La encuesta xá finó + already_voted: Yá votesti nesta encuesta + expired: La encuesta yá finó invalid_choice: La opción de votu escoyida nun esiste too_many_options: nun pue contener más de %{max} elementos preferences: @@ -724,13 +725,13 @@ ast: posting_defaults: Configuración predeterminada del espublizamientu d'artículos public_timelines: Llinies de tiempu públiques privacy: - hint_html: "Personaliza cómo quies s'atope esti perfil ya los sos artículos. Hai una variedá de funciones de Mastodon que puen ayudate a algamar audiencies más grandes cuando s'activen. Dedica un momentu pa revisar estes opciones y asegurate de que s'axusten al to casu." + hint_html: "Personaliza cómo quies que s'atope esti perfil y los sos artículos. Hai una variedá de funciones de Mastodon que puen ayudate a algamar audiencies más grandes cuando s'activen. Dedica un momentu pa revisar estes opciones y asegurate de que s'axusten al to casu." privacy: Privacidá reach: Algame - reach_hint_html: Controla si quies que te descubran ya te sigan perfiles nuevos. ¿Quies que los tos artículos apaezan na pantalla «Esploración»? ¿Quies qu'otres persones te vean na recomendación de cuentes? ¿Quies aceptar toles solicitúes de siguimientu automáticamente o tener un control minuciosu de caúna? + reach_hint_html: Controla si quies que te descubran y te sigan perfiles nuevos. ¿Quies que los tos artículos apaezan na pantalla «Esploración»? ¿Quies qu'otres persones te vean na recomendación de cuentes? ¿Quies aceptar toles solicitúes de siguimientu automáticamente o tener un control minuciosu de caúna? search: Busca search_hint_html: Controla cómo quies que t'atopen. ¿Quies que la xente t'atope polo qu'espublices públicamente? ¿Quies que la xente fuera de Mástodon atope esti perfil cuando busque na web? Ten en cuenta que nun se pue garantizar la esclusión total de tolos motores de busca. - title: Privacidá ya algame + title: Privacidá y algame privacy_policy: title: Política de privacidá relationships: @@ -797,11 +798,11 @@ ast: export: Esportación de datos featured_tags: Etiquetes destacaes import: Importación - import_and_export: Importación ya esportación + import_and_export: Importación y esportación migrate: Migración de la cuenta preferences: Preferencies profile: Perfil públicu - relationships: Perfiles que sigues ya te siguen + relationships: Perfiles que sigues y te siguen statuses_cleanup: Desaniciu automáticu d'artículos two_factor_authentication: Autenticación en dos pasos webauthn_authentication: Llaves de seguranza @@ -822,7 +823,7 @@ ast: open_in_web: Abrir na web pin_errors: direct: Nun se puen fixar los artículos que son visibles namás pa los usuarios mentaos - limit: Xá fixesti'l númberu máximu d'artículos + limit: Yá fixesti'l númberu máximu d'artículos ownership: Nun se pue fixar l'artículu d'otru perfil reblog: Nun se pue fixar un artículu compartíu poll: @@ -877,15 +878,15 @@ ast: webauthn: Llaves de seguranza user_mailer: suspicious_sign_in: - explanation: Detectemos un aniciu de sesión a la to cuenta dende una direición IP nueva. + explanation: Detectemos un aniciu de sesión na to cuenta dende una direición IP nueva. subject: Accedióse a la to cuenta dende una direición IP nueva warning: appeal: Unviar una apellación appeal_description: Si te paez que ye un error, pues unviar una apellación al personal de %{instance}. explanation: - disable: Xá nun pues usar la cuenta mas el perfil ya otros datos siguen intautos. Pues solicitar una copia de seguranza de los datos, camudar la configuración de la cuenta o desaniciar la cuenta. - silence: Pues siguir usando la cuenta mas namás vas ver los artículos de los perfiles que xá siguieres nesti sirvidor ya ye posible que se t'escluya de dalgunes funciones de descubrimientu. Por embargu, otros perfiles entá puen siguite manualmente. - suspend: Xá nun pues usar la cuenta nin se pue acceder a los datos del to perfil. Pues aniciar la sesión pa pidir una copia de seguranza de los tos datos hasta que se desanicien en 30 díes, mas vamos caltener dalgunos datos básicos pa evitar que te saltes la suspensión. + disable: Yá nun pues usar la cuenta mas el perfil y otros datos siguen intautos. Pues solicitar una copia de seguranza de los datos, camudar la configuración de la cuenta o desaniciar la cuenta. + silence: Pues siguir usando la cuenta mas namás vas ver los artículos de los perfiles que yá siguieres nesti sirvidor y ye posible que se t'escluya de dalgunes funciones de descubrimientu. Por embargu, otros perfiles entá puen siguite manualmente. + suspend: Yá nun pues usar la cuenta nin se pue acceder a los datos del to perfil. Pues aniciar la sesión pa pidir una copia de seguranza de los tos datos hasta que se desanicien en 30 díes, mas vamos caltener dalgunos datos básicos pa evitar que te saltes la suspensión. reason: 'Motivu:' statuses: 'Artículos citaos:' subject: @@ -896,14 +897,27 @@ ast: none: Alvertencia suspend: Cuenta suspendida welcome: + apps_title: Aplicaciones de Mastodon + edit_profile_title: Personalización del perfil explanation: Equí tienes dalgunos conseyos pa que comiences + feature_action: Saber más + follows_title: A quién siguir + follows_view_more: Ver más perfiles a los que siguir + hashtags_recent_count: + one: "%{people} persona nos últimos 2 díes" + other: "%{people} persones nos últimos 2 díes" + hashtags_subtitle: Esplora qué ta en tendencia dende hai 2 díes + hashtags_title: Etiquetes en tendencia + hashtags_view_more: Ver más etiquetes en tendencia + post_step: Saluda al mundu con semeyes, vídeos, testu o encuestes. + sign_in_action: Aniciar la sesión subject: Afáyate en Mastodon title: "¡Afáyate, %{name}!" users: follow_limit_reached: Nun pues siguir a más de %{limit} persones invalid_otp_token: El códigu de l'autenticación en dos pasos nun ye válidu rate_limited: Fixéronse milenta intentos d'autenticación. Volvi tentalo dempués. - seamless_external_login: Aniciesti la sesión pente un serviciu esternu, polo que la configuración de la contraseña ya de la direición de corréu electrónicu nun tán disponibles. + seamless_external_login: Aniciesti la sesión pente un serviciu esternu, polo que la configuración de la contraseña y de la direición de corréu electrónicu nun tán disponibles. signed_in_as: 'Aniciesti la sesión como:' verification: verification: Verificación diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml index 47372c2f07..c353607043 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 mensaxe coles instrucciones pa saber cómo confirmar la direición de corréu electrónicu. Revisa la carpeta Puxarra si nun recibiesti esti mensaxe. send_paranoid_instructions: Si la direición de corréu electrónicu esiste na nuesa base de datos, nunos minutos vas recibir un mensaxe coles instrucciones pa saber cómo confirmala. Revisa la carpeta Puxarra si nun recibiesti esti mensaxe. failure: - already_authenticated: Xá aniciesti la sesión. + already_authenticated: Yá aniciesti la sesión. last_attempt: Quédate un intentu más enantes de bloquiar la cuenta. locked: La cuenta ta bloquiada. pending: La cuenta sigue en revisión. @@ -16,9 +16,9 @@ ast: mailer: confirmation_instructions: action: Verificar la direición de corréu electrónicu - explanation: Creesti una cuenta en %{host} con esta direición de corréu electrónicu ya tas a un calcu d'activala. Si nun fixesti esta aición, inora esti mensaxe. - explanation_when_pending: Solicitesti una invitación a %{host} con esta direición de corréu electrónicu. Namás que confirmes la direición de corréu electrónicu, vamos revisar la solicitú. Entrín ya non, pues aniciar la sesión pa camudar los detalles o desaniciar la cuenta, mas nun pues acceder a la mayoría de funciones hasta que la cuenta nun tea aprobada. Si se refuga la solicitú, nun ye necesario que faigas nada más o si, per otra parte, tu nun fixesti esta aición, inora esti mensaxe. - extra_html: Revisa tamién les normes del sirvidor ya los nuesos términos del serviciu. + explanation: Creesti una cuenta en %{host} con esta direición de corréu electrónicu y tas a un calcu d'activala. Si nun fixesti esta aición, inora esti mensaxe. + explanation_when_pending: Solicitesti una invitación a %{host} con esta direición de corréu electrónicu. Namás que confirmes la direición de corréu electrónicu, vamos revisar la solicitú. Entrín y non, pues aniciar la sesión pa camudar los detalles o desaniciar la cuenta, mas nun pues acceder a la mayoría de funciones hasta que la cuenta nun tea aprobada. Si se refuga la solicitú, nun ye necesario que faigas nada más o si, per otra parte, tu nun fixesti esta aición, inora esti mensaxe. + extra_html: Revisa tamién les normes del sirvidor y los nuesos términos del serviciu. subject: 'Mastodon: instrucciones de confirmación de «%{instance}»' title: Verificación de la direición de corréu electrónicu email_changed: @@ -38,7 +38,7 @@ ast: reset_password_instructions: action: Camudar la contraseña explanation: Solicitesti una contraseña nueva pa la to cuenta. - extra: Si nun solicitesti esta aición, inora esti mensaxe. La contraseña nun va camudar hasta que nun accedas al enllaz d'arriba ya crees una. + extra: Si nun solicitesti esta aición, inora esti mensaxe. La contraseña nun va camudar hasta que nun accedas al enllaz d'arriba y crees una. subject: 'Mastodon: instrucciones pa camudar la contraseña' title: Cambéu de la contaseña two_factor_disabled: @@ -48,7 +48,7 @@ ast: subject: 'Mastodon: activóse l''autenticación en dos pasos' title: Autenticación de dos pasos desactivada two_factor_recovery_codes_changed: - explanation: Invalidáronse los códigos de recuperación anteriores ya xeneráronse otros nuevos. + explanation: Invalidáronse los códigos de recuperación anteriores y xeneráronse otros nuevos. subject: 'Mastodon: volvieron xenerase los códigos de recuperación de l''autenticación en dos pasos' unlock_instructions: subject: 'Mastodon: instrucciones de desbloquéu' @@ -68,16 +68,16 @@ ast: passwords: send_instructions: Si la direición de corréu electrónicu esiste na nuesa base de datos, nunos minutos vas recibir un enllaz pa recuperar la contraseña. Revisa la carpeta Puxarra si nun recibiesti esti mensaxe. send_paranoid_instructions: Si la direición de corréu electrónicu esiste na nuesa base de datos, nunos minutos vas recibir un enllaz pa recuperar la contraseña. Revisa la carpeta Puxarra si nun recibiesti esti mensaxe. - updated: La contraseña camudó correutamente. Xá aniciesti la sesión. + updated: La contraseña camudó correutamente. yá aniciesti la sesión. updated_not_active: La contraseña camudó correutamente. registrations: destroyed: "¡Ta llueu! La cuenta anulóse correutamente. Esperamos volver vete pronto." 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 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_pending: Unvióse un mensaxe a la direición de corréu electrónicu que contién un enllaz de confirmación. Darréu de calcar nel enllaz, vamos revisar la solicitú ya si s'aprueba, avisámoste. - signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la to direición de corréu electrónicu. Sigui l'enllaz p'activar la cuenta ya revisa la carpeta Puxarra si nun recibiesti esti mensaxe. - update_needs_confirmation: Anovesti la cuenta correutamente, mas tenemos de verificar la direición de corréu electrónicu nueva. Revisa'l to corréu electrónicu ya sigui l'enllaz de confirmación pa confirmar esta direición. Si nun recibiesti'l mensaxe, revisa la carpeta Puxarra. + signed_up_but_pending: Unvióse un mensaxe a la direición de corréu electrónicu que contién un enllaz de confirmación. Darréu de calcar nel enllaz, vamos revisar la solicitú y si s'aprueba, avisámoste. + signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la to direición de corréu electrónicu. Sigui l'enllaz p'activar la cuenta y revisa la carpeta Puxarra si nun recibiesti esti mensaxe. + update_needs_confirmation: Anovesti la cuenta correutamente, mas tenemos de verificar la direición de corréu electrónicu nueva. Revisa'l to corréu electrónicu y sigui l'enllaz de confirmación pa confirmar esta direición. Si nun recibiesti'l mensaxe, revisa la carpeta Puxarra. updated: La cuenta anovóse correutamente. sessions: already_signed_out: Zarresti la sesión correutamente. @@ -89,7 +89,7 @@ ast: unlocked: La cuenta desbloquióse correutamente. Anicia la sesión pa siguir. errors: messages: - already_confirmed: xá se confirmó, prueba a aniciar la sesión + already_confirmed: yá se confirmó, prueba a aniciar la sesión not_saved: one: '1 error torgó que «%{resource}» se guardare:' other: "%{count} errores torgaron que «%{resource}» se guardaren:" diff --git a/config/locales/devise.ga.yml b/config/locales/devise.ga.yml index cc8ae0874e..ca51bb9467 100644 --- a/config/locales/devise.ga.yml +++ b/config/locales/devise.ga.yml @@ -91,7 +91,7 @@ ga: send_instructions: Má tá do sheoladh ríomhphoist inár mbunachar sonraí, gheobhaidh tú nasc athshlánaithe pasfhocail ag do sheoladh ríomhphoist i gceann cúpla nóiméad. Seiceáil d'fhillteán turscair mura bhfuair tú an ríomhphost seo. send_paranoid_instructions: Má tá do sheoladh ríomhphoist inár mbunachar sonraí, gheobhaidh tú nasc athshlánaithe pasfhocail ag do sheoladh ríomhphoist i gceann cúpla nóiméad. Seiceáil d'fhillteán turscair mura bhfuair tú an ríomhphost seo. updated: Athraíodh do phasfhocal go rathúil. Tá tú sínithe isteach anois. - updated_not_active: Your password has been changed successfully. + updated_not_active: Athraíodh do phasfhocal go rathúil. registrations: destroyed: Slán! Cealaíodh do chuntas go rathúil. Tá súil againn tú a fheiceáil arís go luath. signed_up: Fáilte romhat! D'éirigh leat síniú suas. diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml index 0564e49dac..0df15a07b6 100644 --- a/config/locales/doorkeeper.ast.yml +++ b/config/locales/doorkeeper.ast.yml @@ -44,7 +44,7 @@ ast: prompt_html: "%{client_name}, que ye una aplicación de terceros, quier tener accesu a la cuenta. Si nun t'enfotes nella, nun habríes autorizala." review_permissions: Revisión de los permisos show: - title: Copia esti códigu d'autorización ya apiégalu na aplicación. + title: Copia esti códigu d'autorización y apiégalu na aplicación. authorized_applications: buttons: revoke: Revocar @@ -67,7 +67,7 @@ ast: grouped_scopes: access: read: Accesu de namás llectura - read/write: Accesu de llectura ya escritura + read/write: Accesu de llectura y escritura write: Accesu de namás escritura title: accounts: Cuentes @@ -111,14 +111,14 @@ ast: read:statuses: mira tolos artículos write: modifica los datos de les cuentes write:accounts: modifica los perfiles - write:blocks: bloquia cuentes ya dominios + write:blocks: bloquia cuentes y dominios write:bookmarks: meter artículos en Marcadores - write:conversations: desaniciar ya desactivar los avisos de conversaciones + write:conversations: desaniciar y desactivar los avisos de conversaciones write:filters: crea peñeres write:follows: sigue a perfiles write:lists: crea llistes write:media: xube ficheros multimedia - write:mutes: desactiva los avisos de perfiles ya de conversaciones + write:mutes: desactiva los avisos de perfiles y de conversaciones write:notifications: borra los avisos write:reports: informa d'otros perfiles write:statuses: espubliza artículos diff --git a/config/locales/doorkeeper.el.yml b/config/locales/doorkeeper.el.yml index 1cb9b3513b..167cc6bd44 100644 --- a/config/locales/doorkeeper.el.yml +++ b/config/locales/doorkeeper.el.yml @@ -4,7 +4,7 @@ el: attributes: doorkeeper/application: name: Όνομα εφαρμογής - redirect_uri: URI Ανακατεύθυνσης (Ενιαίο Αναγνωριστικό Πόρων) + redirect_uri: URI Ανακατεύθυνσης scopes: Εύρος εφαρμογής website: Ιστότοπος εφαρμογής errors: @@ -13,21 +13,21 @@ el: attributes: redirect_uri: fragment_present: δεν μπορεί να περιέχει τμήμα διεύθυνσης. - invalid_uri: πρέπει να είναι έγκυρο URI (Ενιαίο Αναγνωριστικό Πόρων). - relative_uri: πρέπει να είναι απόλυτο URI (Ενιαίο Αναγνωριστικό Πόρων). - secured_uri: πρέπει να είναι HTTPS/SSL URI (Ενιαίο Αναγνωριστικό Πόρων). + invalid_uri: πρέπει να είναι έγκυρο URI. + relative_uri: πρέπει να είναι απόλυτο URI. + secured_uri: πρέπει να είναι HTTPS/SSL URI. doorkeeper: applications: buttons: - authorize: Ενέκρινε + authorize: Έγκριση cancel: Άκυρο destroy: Καταστροφή - edit: Αλλαγή + edit: Επεξεργασία submit: Υποβολή confirmations: destroy: Σίγουρα; edit: - title: Αλλαγή εφαρμογής + title: Επεξεργασία εφαρμογής form: error: Ώπα! Έλεγξε τη φόρμα σου για πιθανά λάθη help: @@ -36,9 +36,9 @@ el: scopes: Διαχώρησε το κάθε εύρος εφαρμογής με κενά. Άστο κενό για χρήση των προεπιλεγμένων ευρών εφαρμογής. index: application: Εφαρμογή - callback_url: URL επιστροφής (Callback) + callback_url: Callback URL delete: Διαγραφή - empty: Δεν έχετε αιτήσεις. + empty: Δεν έχεις εφαρμογές. name: Όνομα new: Νέα εφαρμογή scopes: Εύρος εφαρμογής @@ -49,32 +49,32 @@ el: show: actions: Ενέργειες application_id: Κλειδί πελάτη - callback_urls: URL επιστροφής (Callback) + callback_urls: Callback URLs scopes: Εύρος εφαρμογής secret: Μυστικό πελάτη title: 'Εφαρμογή: %{name}' authorizations: buttons: - authorize: Ενέκρινε - deny: Απόρριψε + authorize: Έγκριση + deny: Απόρριψη error: title: Εμφανίστηκε σφάλμα new: - prompt_html: Ο/Η %{client_name} θα ήθελε άδεια πρόσβασης στο λογαριασμό σας. Είναι μια εφαρμογή από τρίτους. Αν δεν το εμπιστεύεστε, τότε δεν πρέπει να το εξουσιοδοτήσετε. - review_permissions: Αναθεώρηση δικαιωμάτων + prompt_html: Το %{client_name} θα ήθελε άδεια πρόσβασης στο λογαριασμό σου. Είναι μια εφαρμογή τρίτων. Αν δεν το εμπιστεύεσαι, τότε δεν πρέπει να το εγκρίνεις. + review_permissions: Ανασκόπηση δικαιωμάτων title: Απαιτείται έγκριση show: title: Αντέγραψε αυτό τον κωδικό έγκρισης στην εφαρμογή. authorized_applications: buttons: - revoke: Ανακάλεσε + revoke: Ανάκληση confirmations: revoke: Σίγουρα; index: authorized_at: Εξουσιοδοτήθηκε στις %{date} - description_html: Αυτές είναι εφαρμογές που μπορούν να έχουν πρόσβαση στο λογαριασμό σας χρησιμοποιώντας το API. Αν υπάρχουν εφαρμογές που δεν αναγνωρίζετε εδώ ή μια εφαρμογή δεν συμπεριφέρεται σωστά, μπορείτε να ανακαλέσετε την πρόσβασή της. + description_html: Αυτές είναι εφαρμογές που μπορούν να έχουν πρόσβαση στο λογαριασμό σου χρησιμοποιώντας το API. Αν υπάρχουν εφαρμογές που δεν αναγνωρίζεις εδώ ή μια εφαρμογή δεν συμπεριφέρεται σωστά, μπορείς να ανακαλέσεις την πρόσβασή της. last_used_at: Τελευταία χρήση στις %{date} - never_used: Ποτέ σε χρήση + never_used: Δεν έχει χρησιμοποιηθεί scopes: Δικαιώματα superapp: Εσωτερική title: Οι εφαρμογές που έχεις εγκρίνει @@ -84,23 +84,23 @@ el: 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}.' + missing_param: 'Λείπει απαιτούμενη παράμετρος: %{value}.' request_not_authorized: Το αίτημα πρέπει να είναι εξουσιοδοτημένο. Η απαιτούμενη παράμετρος για την έγκριση της αίτησης λείπει ή είναι άκυρη. unknown: Από το αίτημα λείπει μία υποχρεωτική παράμετρος ή περιλαμβάνει μια μη υποστηριζόμενη τιμή ή έχει λανθασμένη μορφή με κάποιο άλλο τρόπο. - invalid_resource_owner: Τα διαπιστευτήρια που έδωσε ο ιδιοκτήτης του πόρου δεν είναι έγκυρα, ή δεν βρέθηκε ο ιδιοκτήτης του πόρου + invalid_resource_owner: Τα διαπιστευτήρια που έδωσε ο ιδιοκτήτης του πόρου δεν είναι έγκυρα ή δεν βρέθηκε ο ιδιοκτήτης του πόρου invalid_scope: Το αιτούμενο εύρος εφαρμογής είναι άκυρο, άγνωστο ή λάθος διατυπωμένο. invalid_token: expired: Το διακριτικό πρόσβασης έληξε revoked: Το διακριτικό πρόσβασης ανακλήθηκε unknown: Το διακριτικό πρόσβασης δεν είναι έγκυρο resource_owner_authenticator_not_configured: Η αναζήτηση του ιδιοκτήτη του πόρου απέτυχε επειδή το Doorkeeper.configure.resource_owner_authenticator δεν έχει ρυθμιστεί. - server_error: Ο εξυπηρετητής έγκρισης (authorization server) αντιμετώπισε μια απροσδόκητη συνθήκη που τον απέτρεψε να ικανοποιήσει το αίτημα. - temporarily_unavailable: Ο εξυπηρετητής έγκρισης (authorization server) προς το παρόν δεν είναι διαθέσιμος να αναλάβει το αίτημα λόγω προσωρινής υπερφόρτωσης ή συντήρησής του. + server_error: Ο εξυπηρετητής έγκρισης αντιμετώπισε μια απροσδόκητη συνθήκη που τον απέτρεψε να ικανοποιήσει το αίτημα. + temporarily_unavailable: Ο εξυπηρετητής έγκρισης προς το παρόν δεν είναι δυνατό να αναλάβει το αίτημα λόγω προσωρινής υπερφόρτωσης ή συντήρησής του. unauthorized_client: Ο πελάτης δεν έχει άδεια να εκτελέσει αυτό το αίτημα χρησιμοποιώντας αυτή τη μέθοδο. - unsupported_grant_type: Το είδος άδειας έγκρισης δεν υποστηρίζεται από τον εξυπηρετητή έγκρισης (authorization server). - unsupported_response_type: Ο εξυπηρετητής έγκρισης (authorization server) δεν υποστηρίζει αυτό το είδος απάντησης. + unsupported_grant_type: Το είδος άδειας έγκρισης δεν υποστηρίζεται από τον εξυπηρετητή έγκρισης. + unsupported_response_type: Ο εξυπηρετητής έγκρισης δεν υποστηρίζει αυτό το είδος απάντησης. flash: applications: create: @@ -122,19 +122,20 @@ el: admin/accounts: Διαχείριση λογαριασμών admin/all: Όλες οι λειτουργίες διαχείρησης admin/reports: Διαχείριση αναφορών - all: Πλήρης πρόσβαση στο λογαριασμό σας στο Mastodon + all: Πλήρης πρόσβαση στο λογαριασμό σου στο Mastodon blocks: Αποκλεισμοί bookmarks: Σελιδοδείκτες conversations: Συνομιλίες crypto: Κρυπτογράφηση από άκρο σε άκρο favourites: Αγαπημένα filters: Φίλτρα - follow: Ακολουθείτε, σε Σίγαση και Αποκλεισμοί - follows: Ακολουθείτε + follow: Ακολουθείς, σε Σίγαση και Αποκλεισμοί + follows: Ακολουθείς lists: Λίστες media: Συνημμένα πολυμέσα - mutes: Αποσιωπήσεις + mutes: Σιγάσεις notifications: Ειδοποιήσεις + profile: Το προφίλ σου στο Mastodon push: Άμεσες ειδοποιήσεις reports: Αναφορές search: Αναζήτηση @@ -147,43 +148,45 @@ el: application: title: Απαιτείται έγκριση OAuth scopes: - admin:read: ανάγνωση δεδομένων στον διακομιστή + admin:read: ανάγνωση όλων των δεδομένων στον διακομιστή admin:read:accounts: ανάγνωση ευαίσθητων πληροφοριών όλων των λογαριασμών admin:read:canonical_email_blocks: ανάγνωση ευαίσθητων πληροφοριών όλων των αποκλεισμένων email admin:read:domain_allows: ανάγνωση ευαίσθητων πληροφοριών όλων των επιτρεπόμενων τομέων admin:read:domain_blocks: ανάγνωση ευαίσθητων πληροφοριών όλων των αποκλεισμένων τομέων admin:read:email_domain_blocks: ανάγνωση ευαίσθητων πληροφοριών όλων των αποκλεισμένων τομέων email admin:read:ip_blocks: ανάγνωση ευαίσθητων πληροφοριών όλων των αποκλεισμένων IP - admin:read:reports: ανάγνωση ευαίσθητων πληροφοριών όλων των καταγγελιών και των καταγγελλομένων λογαριασμών - admin:write: αλλαγή δεδομένων στον διακομιστή - admin:write:accounts: εκτέλεση διαχειριστικών ενεργειών σε λογαριασμούς - admin:write:canonical_email_blocks: εκτέλεση ενεργειών διαχείρισης σε αποκλεισμένα email - admin:write:domain_allows: εκτέλεση ενεργειών διαχείρισης σε επιτρεπτούς τομείς - admin:write:domain_blocks: εκτέλεση ενεργειών διαχείρισης σε αποκλεισμένους τομείς - admin:write:email_domain_blocks: εκτελέστε ενέργειες διαχείρισης σε αποκλεισμένους τομείς email - admin:write:ip_blocks: εκτέλεση ενεργειών διαχείρισης σε αποκλεισμένες IP - admin:write:reports: εκτέλεση διαχειριστικών ενεργειών σε καταγγελίες + admin:read:reports: ανάγνωση ευαίσθητων πληροφοριών όλων των αναφορών και των αναφερομένων λογαριασμών + admin:write: τροποποίηση όλων των δεδομένων στον διακομιστή + admin:write:accounts: εκτέλεση συντονιστικών ενεργειών σε λογαριασμούς + admin:write:canonical_email_blocks: εκτέλεση ενεργειών συντονισμού σε αποκλεισμένα email + admin:write:domain_allows: εκτέλεση ενεργειών συντονισμού σε επιτρεπτούς τομείς + admin:write:domain_blocks: εκτέλεση ενεργειών συντονισμού σε αποκλεισμένους τομείς + admin:write:email_domain_blocks: εκτέλεση ενέργειες συντονισμού σε αποκλεισμένους τομείς email + admin:write:ip_blocks: εκτέλεση ενεργειών συντονισμού σε αποκλεισμένες IP + admin:write:reports: εκτέλεση ενεργειών συντονισμού σε αναφορές crypto: χρήση κρυπτογράφησης από άκρο σε άκρο - follow: να αλλάζει τις σχέσεις με λογαριασμούς - push: να λαμβάνει τις ειδοποιήσεις σου - read: να διαβάζει όλα τα στοιχεία του λογαριασμού σου - read:accounts: να βλέπει τα στοιχεία λογαριασμών - read:blocks: να βλέπει τους αποκλεισμένους σου - read:bookmarks: εμφάνιση των σελιδοδεικτών σας - read:favourites: δείτε τα αγαπημένα σας - read:filters: να βλέπει τα φίλτρα σου - read:follows: δές ποιους ακολουθείς - read:lists: δές τις λίστες σου - read:mutes: να βλέπει ποιους αποσιωπείς - read:notifications: να βλέπει τις ειδοποιήσεις σου - read:reports: να βλέπει τις καταγγελίες σου - read:search: να ψάχνει για εσένα + follow: τροποποίηση σχέσεων λογαριασμών + profile: ανάγνωση μόνο των πληροφοριών προφίλ του λογαριασμού σου + push: λήψη των ειδοποιήσεων σου + read: ανάγνωση όλων των στοιχείων του λογαριασμού σου + read:accounts: προβολή πληροφοριών λογαριασμών + read:blocks: προβολή των αποκλεισμών σου + read:bookmarks: προβολή των σελιδοδεικτών σου + read:favourites: προβολή των αγαπημένα σου + read:filters: προβολή των φίλτρων σου + read:follows: προβολή αυτών που ακολουθείς + read:lists: προβολή των λιστών σου + read:mutes: προβολή των σιγάσεων σου + read:notifications: προβολή των ειδοποιήσεων σου + read:reports: προβολή των αναφορών σου + read:search: αναζήτηση εκ μέρους σου read:statuses: να βλέπει όλες τις δημοσιεύσεις σου write: να αλλάζει όλα τα στοιχεία του λογαριασμού σου write:accounts: να αλλάζει το προφίλ σου write:blocks: να μπλοκάρει λογαριασμούς και τομείς write:bookmarks: προσθήκη σελιδοδεικτών write:conversations: σίγαση και διαγραφή συνομιλιών + write:favourites: αγαπημένες αναρτήσεις write:filters: να δημιουργεί φίλτρα write:follows: ακολουθήστε ανθρώπους write:lists: δημιουργία λιστών diff --git a/config/locales/doorkeeper.kab.yml b/config/locales/doorkeeper.kab.yml index 33aecd8c6f..d79c711e60 100644 --- a/config/locales/doorkeeper.kab.yml +++ b/config/locales/doorkeeper.kab.yml @@ -111,9 +111,9 @@ kab: lists: Tibdarin media: Imeddayen n umidya mutes: Yeggugem - notifications: Tilɣa + notifications: Alɣuten profile: Amaɣnu-k Mastodon - push: Tilɣa yettudemmren + push: Alɣuten yettudemmren reports: Ineqqisen search: Nadi statuses: Tisuffaɣ @@ -127,7 +127,7 @@ kab: admin:read: ad iɣeṛ akk isefka ɣef uqeddac admin:write: ẓreg akk isefka γef uqeddac follow: beddel assaγen n umiḍan - push: ṭṭef-d tilγa-ik yettwademren + push: ṭṭef-d alɣuten-ik·im yettwademren read: γeṛ akk isefka n umiḍan-ik read:accounts: ẓer isallen n yimiḍanen read:blocks: ẓer imiḍanen i tesḥebseḍ @@ -136,7 +136,7 @@ kab: read:follows: ẓer imeḍfaṛen-ik read:lists: ẓer tibdarin-ik·im read:mutes: ẓer wid i tesgugmeḍ - read:notifications: ad ẓer tilɣa-inek·inem + read:notifications: ad iẓer alɣuten-inek·inem read:reports: ẓer ineqqisen-ik·im read:search: anadi deg umkan-ik·im read:statuses: ẓer meṛṛa tisuffaɣ @@ -148,4 +148,4 @@ kab: write:follows: ḍfeṛ imdanen write:lists: ad yesnulfu tibdarin write:media: ad yessali ifuyla n umidya - write:notifications: sfeḍ tilɣa-k·m + write:notifications: sfeḍ alɣuten-ik·im diff --git a/config/locales/el.yml b/config/locales/el.yml index 47b2250f0e..e177bf342a 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -5,14 +5,14 @@ el: contact_missing: Δεν έχει οριστεί contact_unavailable: Μη διαθέσιμο hosted_on: Το Mastodon φιλοξενείται στο %{domain} - title: Σχετικά με + title: Σχετικά accounts: follow: Ακολούθησε followers: one: Ακόλουθος other: Ακόλουθοι following: Ακολουθείτε - instance_actor_flash: Αυτός ο λογαριασμός είναι εικονικός και χρησιμοποιείται για να αντιπροσωπεύει τον ίδιο τον διακομιστή και όχι κάποιον μεμονωμένο χρήστη. Χρησιμοποιείται για σκοπούς συναλλαγών και δεν πρέπει να ανασταλεί. + instance_actor_flash: Αυτός ο λογαριασμός είναι εικονικός και χρησιμοποιείται για να αντιπροσωπεύει τον ίδιο τον διακομιστή και όχι κάποιον μεμονωμένο χρήστη. Χρησιμοποιείται για σκοπούς ομοσπονδίας και δεν πρέπει να ανασταλεί. last_active: τελευταία ενεργός/ή link_verified_on: Η ιδιοκτησία αυτού του συνδέσμου ελέγχθηκε στις %{date} nothing_here: Δεν υπάρχει τίποτα εδώ! @@ -159,7 +159,7 @@ el: unconfirmed_email: Ανεπιβεβαίωτο email undo_sensitized: Άρση ευαίσθητου undo_silenced: Άρση περιορισμού - undo_suspension: Αναίρεση παύσης + undo_suspension: Αναίρεση αναστολής unsilenced_msg: Επιτυχής άρση περιορισμών λογαριασμού του/της %{username} unsubscribe: Κατάργηση εγγραφής unsuspended_msg: Επιτυχής άρση αναστολής λογαριασμού του/της %{username} @@ -167,7 +167,7 @@ el: view_domain: Προβολή περίληψης τομέα warn: Προειδοποίηση web: Διαδίκτυο - whitelisted: Εγκεκριμένοι για συναλλαγές + whitelisted: Εγκεκριμένοι για ομοσπονδία action_logs: action_types: approve_appeal: Έγκριση Έφεσης @@ -185,7 +185,7 @@ el: create_email_domain_block: Δημουργία Αποκλεισμού Τομέα email create_ip_block: Δημιουργία κανόνα IP create_unavailable_domain: Δημιουργία Μη Διαθέσιμου Τομέα - create_user_role: Δημιουργία ρόλου + create_user_role: Δημιουργία Ρόλου demote_user: Υποβιβασμός Χρήστη destroy_announcement: Διαγραφή Ανακοίνωσης destroy_canonical_email_block: Διαγραφή Αποκλεισμού email @@ -226,6 +226,7 @@ el: update_custom_emoji: Ενημέρωση Προσαρμοσμένου Emoji update_domain_block: Ενημέρωση Αποκλεισμού Τομέα update_ip_block: Ενημέρωση κανόνα IP + update_report: Ενημέρωση Αναφοράς update_status: Ενημέρωση Ανάρτησης update_user_role: Ενημέρωση ρόλου actions: diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index a45ba290b7..fecdab4c7d 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -639,6 +639,7 @@ en-GB: report: 'Report #%{id}' reported_account: Reported account reported_by: Reported by + reported_with_application: Reported with application resolved: Resolved resolved_msg: Report successfully resolved! skip_to_actions: Skip to actions diff --git a/config/locales/en.yml b/config/locales/en.yml index 59b8f8d5d3..7eb90944b4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -471,6 +471,9 @@ en: title: Follow recommendations unsuppress: Restore follow recommendation instances: + audit_log: + title: Recent Audit Logs + view_all: View full audit logs availability: description_html: one: If delivering to the domain fails %{count} day without succeeding, no further delivery attempts will be made unless a delivery from the domain is received. diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 8c55551ce0..5add90ae62 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -639,6 +639,7 @@ es-AR: report: 'Denuncia #%{id}' reported_account: Cuenta denunciada reported_by: Denunciada por + reported_with_application: Informado a través de la aplicación resolved: Resueltas resolved_msg: "¡Denuncia exitosamente resuelta!" skip_to_actions: Ir directamente a las acciones diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 976b7a4f30..22531d2403 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -226,6 +226,7 @@ es-MX: update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio update_ip_block: Actualizar regla IP + update_report: Actualizar informe update_status: Actualizar Estado update_user_role: Actualizar Rol actions: @@ -638,6 +639,7 @@ es-MX: report: 'Reportar #%{id}' reported_account: Cuenta reportada reported_by: Reportado por + reported_with_application: Informado a través de la aplicación resolved: Resuelto resolved_msg: "¡La denuncia se ha resuelto correctamente!" skip_to_actions: Ir directamente a las acciones diff --git a/config/locales/es.yml b/config/locales/es.yml index aef5100a6d..567526fe8b 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -226,6 +226,7 @@ es: update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio update_ip_block: Actualizar regla IP + update_report: Actualizar informe update_status: Actualizar Publicación update_user_role: Actualizar Rol actions: @@ -638,6 +639,7 @@ es: report: 'Reportar #%{id}' reported_account: Cuenta reportada reported_by: Reportado por + reported_with_application: Informado a través de la aplicación resolved: Resuelto resolved_msg: "¡La denuncia se ha resuelto correctamente!" skip_to_actions: Ir directamente a las acciones diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 2d10250f68..c93c5edc0e 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -606,7 +606,7 @@ fi: are_you_sure: Oletko varma? assign_to_self: Ota tehtäväksi assigned: Määritetty valvoja - by_target_domain: Ilmoitetun tilin verkkotunnus + by_target_domain: Raportoidun tilin verkkotunnus cancel: Peruuta category: Luokka category_description_html: Syy siihen, miksi tämä tili ja/tai sisältö raportoitiin, mainitaan ilmoitetun tilin kanssa viestiessä @@ -638,13 +638,13 @@ fi: reopen: Avaa raportti uudestaan report: Raportti nro %{id} reported_account: Raportoitu tili - reported_by: Raportoija + reported_by: Raportoinut resolved: Ratkaistut resolved_msg: Raportti onnistuneesti ratkaistu! skip_to_actions: Siirry toimintoihin status: Tila statuses: Raportoitu sisältö - statuses_description_html: Loukkaava sisältö mainitaan ilmoitetun tilin yhteydessä + statuses_description_html: Loukkaava sisältö mainitaan raportoidun tilin yhteydessä summary: action_preambles: delete_html: 'Olet aikeissa poistaa käyttäjän @%{acct} julkaisuja. Tästä seuraa:' diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 370f3e82e6..647c46d7cf 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1656,7 +1656,7 @@ ga: mutual: Frithpháirteach primary: Príomha relationship: Gaol - remove_selected_domains: Remove all followers from the selected domains + remove_selected_domains: Bain gach leantóir ó na fearainn roghnaithe remove_selected_followers: Bain leantóirí roghnaithe remove_selected_follows: Dí-lean úsáideoirí roghnaithe status: Stádas cuntais @@ -2029,6 +2029,6 @@ ga: invalid_credential: Eochair shlándála neamhbhailí nickname_hint: Cuir isteach leasainm d'eochair shlándála nua not_enabled: Níl WebAuthn cumasaithe agat fós - not_supported: This browser doesn't support security keys - otp_required: To use security keys please enable two-factor authentication first. - registered_on: Registered on %{date} + not_supported: Ní thacaíonn an brabhsálaí seo le heochracha slándála + otp_required: Chun eochracha slándála a úsáid cumasaigh fíordheimhniú dhá fhachtóir ar dtús. + registered_on: Cláraithe ar %{date} diff --git a/config/locales/he.yml b/config/locales/he.yml index ecafbec960..105bd059f2 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -663,6 +663,7 @@ he: report: 'דווח על #%{id}' reported_account: חשבון מדווח reported_by: דווח על ידי + reported_with_application: דיווחים באמצעות יישומון resolved: פתור resolved_msg: הדו"ח נפתר בהצלחה! skip_to_actions: דלג/י לפעולות diff --git a/config/locales/is.yml b/config/locales/is.yml index 7ac50cd572..a4cc282d1d 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -226,6 +226,7 @@ is: update_custom_emoji: Uppfæra sérsniðið tjáningartákn update_domain_block: Uppfæra útilokun léns update_ip_block: Uppfæra reglu IP-vistfangs + update_report: Uppfæra kæru update_status: Uppfæra færslu update_user_role: Uppfæra hlutverk actions: @@ -638,6 +639,7 @@ is: report: 'Kæra #%{id}' reported_account: Kærður notandaaðgangur reported_by: Kært af + reported_with_application: Kærði með forritinu resolved: Leyst resolved_msg: Það tókst að leysa kæruna! skip_to_actions: Sleppa og fara í aðgerðir diff --git a/config/locales/kab.yml b/config/locales/kab.yml index b2fc9d8477..a094936aaf 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -604,7 +604,7 @@ kab: filters: contexts: account: Imeɣna - notifications: Ilɣa + notifications: Alɣuten thread: Idiwenniyen edit: add_keyword: Rnu awal tasarut diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 004f5b4d04..1e717b6c20 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -232,6 +232,7 @@ lt: update_custom_emoji: Atnaujinti pasirinktinį jaustuką update_domain_block: Atnaujinti domeno bloką update_ip_block: Atnaujinti IP taisyklę + update_report: Atnaujinti ataskaitą update_status: Atnaujinti įrašą update_user_role: Atnaujinti vaidmenį actions: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 3b88dd9528..91872754f5 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -639,6 +639,7 @@ nl: report: 'Rapportage #%{id}' reported_account: Gerapporteerde account reported_by: Gerapporteerd door + reported_with_application: Gerapporteerd met applicatie resolved: Opgelost resolved_msg: Rapportage succesvol opgelost! skip_to_actions: Ga direct naar de maatregelen diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 7497f17843..b0c733102e 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -232,6 +232,7 @@ pl: update_custom_emoji: Aktualizuj niestandardowe emoji update_domain_block: Zaktualizuj blokadę domeny update_ip_block: Aktualizuj regułę IP + update_report: Wiadomości or raporcie update_status: Aktualizuj wpis update_user_role: Aktualizuj rolę actions: @@ -662,6 +663,7 @@ pl: report: 'Zgłoszenie #%{id}' reported_account: Zgłoszone konto reported_by: Zgłaszający + reported_with_application: Zareportowano przez aplikację resolved: Rozwiązane resolved_msg: Pomyślnie rozwiązano zgłoszenie. skip_to_actions: Przejdź do akcji diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index d1950ab15f..c222c9aef5 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -6,7 +6,7 @@ ast: note: 'Pues @mentar a otros perfiles o poner #etiquetes.' unlocked: Los perfiles van ser a siguite ensin solicitar la to aprobación. Desmarca esta opción si quies revisar les solicitúes de siguimientu y escoyer si aceptales o refugales. admin_account_action: - text_html: Opcional. Pues usar la sintaxis de los artículos ya amestar alvertencies preconfiguraes p'aforrar tiempu + text_html: Opcional. Pues usar la sintaxis de los artículos y amestar alvertencies preconfiguraes p'aforrar tiempu type_html: Escueyi qué facer con %{acct} types: none: Usa esta opción pa unviar una alvertencia al perfil, ensin aicionar nenguna otra aición. @@ -18,14 +18,14 @@ ast: text: Pues usar la sintaxis de los artículos. Ten en cuenta l'espaciu que l'anunciu va ocupar na pantalla del usuariu/a defaults: autofollow: Les persones que se rexistren pente la invitación van siguite automáticamente - bot: Avisa a otres persones de qu'esta cuenta fai principalmente aiciones automatizaes ya de que ye posible que nun tean supervisaes - digest: Namás s'unvia dempués d'un periodu llongu d'inactividá ya namás si recibiesti dalgún mensaxe personal demientres la to ausencia + bot: Avisa a otres persones de qu'esta cuenta fai principalmente aiciones automatizaes y de que ye posible que nun tean supervisaes + digest: Namás s'unvia dempués d'un periodu llongu d'inactividá y namás si recibiesti dalgún mensaxe personal demientres la to ausencia irreversible: Los artículos peñeraos desapaecen de forma irreversible, magar que la peñera se quite dempués - locale: La llingua de la interfaz, los mensaxes per corréu electrónicu ya los avisos push + locale: La llingua de la interfaz, los mensaxes per corréu electrónicu y los avisos push password: Usa polo menos 8 caráuteres - setting_aggregate_reblogs: Nun amuesa los artículos compartíos nuevos que xá se compartieren de recién (namás afeuta a los artículos compartíos d'agora) + setting_aggregate_reblogs: Nun amuesa los artículos compartíos nuevos que yá se compartieren de recién (namás afeuta a los artículos compartíos d'agora) setting_always_send_emails: Los avisos nun se suelen unviar per corréu electrónicu si uses activamente Mastodon - setting_default_sensitive: El conteníu multimedia sensible anúbrese por defeutu ya pue amosase al calcar nelli + setting_default_sensitive: El conteníu multimedia sensible anúbrese por defeutu y pue amosase al calcar nelli setting_display_media_default: Anubrilu cuando se marque como sensible setting_display_media_hide_all: Anubrilu siempres setting_display_media_show_all: Amosalu siempres @@ -37,10 +37,10 @@ ast: custom_css: Pues aplicar estilos personalizaos a la versión web de Mastodon. mascot: Anula la ilustración na interfaz web avanzada. require_invite_text: Cuando los rexistros riquen una aprobación manual, el campu «¿Por qué quies xunite?» vuélvese obligatoriu - site_extended_description: Cualesquier tipu d'información adicional que pueda ser útil pa visitantes ya pa perfiles rexistraos. El testu pue estructurase cola sintaxis de Mastodon. + site_extended_description: Cualesquier tipu d'información adicional que pueda ser útil pa visitantes y pa perfiles rexistraos. El testu pue estructurase cola sintaxis de Mastodon. site_short_description: Un descripción curtia qu'ayuda a identificar de forma única al sirvidor. ¿Quién lu lleva?, ¿pa quién ye? - theme: L'estilu que los visitantes ya los perfiles nuevos usen. - trends: Les tendencies amuesen artículos, etiquetes ya noticies que tean ganando popularidá nesti sirvidor. + theme: L'estilu que los visitantes y los perfiles nuevos usen. + trends: Les tendencies amuesen artículos, etiquetes y noticies que tean ganando popularidá nesti sirvidor. form_challenge: current_password: Tas entrando a una área segura imports: @@ -49,7 +49,7 @@ ast: text: Esto va ayudanos a revisar la to solicitú ip_block: comment: Opcional. Un recordatoriu de por qué amestesti esta norma. - expires_in: Les direiciones IP son un recursu finitu, suelen compartise ya cambiar de manes. Por esti motivu, nun s'aconseyen los bloqueos indefiníos de direiciones IP. + 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. severities: no_access: Bloquia l'accesu a tolos recursos sign_up_block: Fai que nun se puedan rexistrar cuentes nueves @@ -58,11 +58,12 @@ ast: chosen_languages: Namás los artículos de les llingües que marques son los que van apaecer nes llinies de tiempu públiques labels: account: - discoverable: Destacar el perfil ya los artículos nos algoritmos de descubrimientu + discoverable: Destacar el perfil y los artículos nos algoritmos de descubrimientu fields: name: Etiqueta value: Conteníu indexable: Incluyir los artículos públicos nos resultaos de busca + show_collections: Amosar los perfiles a los que sigues y los que te siguen account_warning_preset: title: Títulu admin_account_action: @@ -109,10 +110,11 @@ ast: setting_default_privacy: Privacidá de los artículos setting_default_sensitive: Marcar siempres tol conteníu como sensible setting_delete_modal: Amosar el diálogu de confirmación enantes de desaniciar un artículu + setting_disable_hover_cards: Desactivar la previsualización de perfiles al pasar el mur penriba setting_disable_swiping: Desactivar el movimientu de desplazamientu setting_display_media: Conteníu multimedia setting_expand_spoilers: Espander siempres los artículos marcaos con alvertencies de conteníu - setting_hide_network: Anubrir les cuentes que sigas ya te sigan + setting_hide_network: Anubrir les cuentes que sigas y te sigan setting_reduce_motion: Amenorgar el movimientu de les animaciones setting_system_font_ui: Usar la fonte predeterminada del sistema setting_theme: Estilu del sitiu @@ -173,8 +175,9 @@ ast: text: Norma settings: indexable: Incluyir la páxina del perfil nos motores de busca + show_application: Amosar l'aplicación dende la que s'unvien los artículos tag: - listable: Permitir qu'esta etiqueta apaeza nes busques ya nes suxerencies + listable: Permitir qu'esta etiqueta apaeza nes busques y nes suxerencies name: Etiqueta trendable: Permitir qu'esta etiqueta apaeza nes tendencies usable: Permitir que los artículos usen esta etiqueta diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 56b17ab000..a4bd956508 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -243,11 +243,13 @@ ja: warn: 警告付きで隠す form_admin_settings: activity_api_enabled: APIでユーザーアクティビティに関する集計統計を公開する + app_icon: アプリアイコン backups_retention_period: ユーザーアーカイブの保持期間 bootstrap_timeline_accounts: おすすめユーザーに常に表示するアカウント closed_registrations_message: アカウント作成を停止している時のカスタムメッセージ content_cache_retention_period: リモートコンテンツの保存期間 custom_css: カスタムCSS + favicon: ブックマークアイコン mascot: カスタムマスコット(レガシー) media_cache_retention_period: メディアキャッシュの保持期間 peers_api_enabled: 発見したサーバーのリストをAPIで公開する diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index 63e2b9aacf..b4c0e0032b 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -11,14 +11,14 @@ kab: account_migration: acct: Sekcem isem n umseqdac@taγult n umiḍan anida itebγiḍ ad gujjeḍ admin_account_action: - send_email_notification: Amseqdac ad t-id-yewweḍ usefhem γef wayen yeḍran akked umiḍan-is + send_email_notification: Amseqdac ad t-id-yewweḍ usefhem ɣef wayen yeḍran akked umiḍan-is type_html: Fren d acu ara txedmeḍ s %{acct} defaults: autofollow: Imdanen ara ijerrden s usnebgi-inek, ad k-ḍefṛen s wudem awurman bot: Smekti-d wiyaḍ dakken amiḍan-a ixeddem s wudem amezwer tigawin tiwurmanin yernu ur yezmir ara ad yettwaɛass email: Ad n-teṭṭfeḍ imayl i usentem irreversible: Tisuffaɣ i tessazedgeḍ ad ttwakksent i lebda, ula ma tekkseḍ imsizdeg-nni ar zdat - locale: Tutlayt n ugrudem, imaylen d tilγa + locale: Tutlayt n ugrudem, imaylen d walɣuten yettudemren password: Seqdec ma drus 8 n yisekkilen setting_display_media_default: Ffer teywalt yettwacreḍ d tanafrit setting_display_media_hide_all: Ffer yal tikkelt akk taywalt @@ -29,7 +29,7 @@ kab: imports: data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun invite_request: - text: Aya ad aɣ-iɛiwen ad nessenqed tuttra-k•m + text: Aya ad aɣ-iɛiwen ad nessenqed tuttra-k·m ip_block: comment: D afrayan. Cfu ɣef wayɣer i terniḍ alugen-a. severities: @@ -86,6 +86,7 @@ kab: setting_advanced_layout: Rmed agrudem n web leqqayen setting_default_language: Tutlayt n tira setting_default_privacy: Tabaḍnit n tira + setting_display_media: Askanay n imidyaten setting_display_media_default: Akk-a kan setting_display_media_hide_all: Ffer-iten akk setting_display_media_show_all: Sken-iten-id akk @@ -111,8 +112,8 @@ kab: theme: Asentel amezwer thumbnail: Tanfult n uqeddac interactions: - must_be_follower: Ssewḥel ilɣa sɣur wid akked tid ur yellin ara d imeḍfaren-ik·im - must_be_following: Ssewḥel ilɣa sɣur wid akked tid ur tettḍafareḍ ara + must_be_follower: Ssewḥel alɣuten sɣur wid akked tid ur yellin ara d imeḍfaren-ik·im + must_be_following: Ssewḥel alɣuten sɣur wid akked tid ur tettḍafareḍ ara must_be_following_dm: Sewḥel iznan usriden sɣur wid akked tid ur tettḍafareḍ ara invite: comment: Awennit diff --git a/config/locales/simple_form.lad.yml b/config/locales/simple_form.lad.yml index cef58e4601..65647a77db 100644 --- a/config/locales/simple_form.lad.yml +++ b/config/locales/simple_form.lad.yml @@ -241,6 +241,7 @@ lad: bootstrap_timeline_accounts: Rekomenda siempre estos kuentos a muevos utilizadores closed_registrations_message: Mesaj personalizado kuando las enrejistrasyones no estan desponivles custom_css: CSS personalizado + favicon: Ikona de favoritos mascot: Maskota personalizada (legado) media_cache_retention_period: Periodo de retensyon de kashe multimedia peers_api_enabled: Publika lista de sirvidores diskuviertos en la API diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 69f5ca665c..a5cdcfefb4 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -663,6 +663,7 @@ uk: report: 'Скарга #%{id}' reported_account: Обліковий запис порушника reported_by: Відправник скарги + reported_with_application: Повідомлено через застосунок resolved: Вирішено resolved_msg: Скаргу успішно вирішено! skip_to_actions: Перейти до дій diff --git a/config/webpack/rules/babel.js b/config/webpack/rules/babel.js index 6b90b50d61..0239102452 100644 --- a/config/webpack/rules/babel.js +++ b/config/webpack/rules/babel.js @@ -2,19 +2,19 @@ const { join, resolve } = require('path'); const { env, settings } = require('../configuration'); +// Those modules contain modern ES code that need to be transpiled for Webpack to process it +const nodeModulesToProcess = [ + '@reduxjs', 'fuzzysort' +]; + module.exports = { test: /\.(js|jsx|mjs|ts|tsx)$/, include: [ settings.source_path, ...settings.resolved_paths, - 'node_modules/@reduxjs' + ...nodeModulesToProcess.map(p => resolve(`node_modules/${p}`)), ].map(p => resolve(p)), - exclude: function(modulePath) { - return ( - /node_modules/.test(modulePath) && - !/@reduxjs/.test(modulePath) - ); - }, + exclude: new RegExp('node_modules\\/(?!(' + nodeModulesToProcess.join('|')+')\\/).*'), use: [ { loader: 'babel-loader', diff --git a/lib/tasks/statistics.rake b/lib/tasks/statistics.rake index dde7890f6b..82840f4fdc 100644 --- a/lib/tasks/statistics.rake +++ b/lib/tasks/statistics.rake @@ -9,11 +9,13 @@ namespace :mastodon do [ ['App Libraries', 'app/lib'], %w(Presenters app/presenters), + %w(Policies app/policies), + %w(Serializers app/serializers), %w(Services app/services), %w(Validators app/validators), %w(Workers app/workers), ].each do |name, dir| - STATS_DIRECTORIES << [name, Rails.root.join(dir)] + STATS_DIRECTORIES << [name, dir] end end end diff --git a/package.json b/package.json index 0cfb51c9dc..2cae6abd4d 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "favico.js": "^0.3.10", "file-loader": "^6.2.0", "font-awesome": "^4.7.0", - "fuzzysort": "^2.0.4", + "fuzzysort": "^3.0.0", "glob": "^10.2.6", "history": "^4.10.1", "hoist-non-react-statics": "^3.3.2", @@ -191,7 +191,7 @@ "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "lint-staged": "^15.0.0", - "prettier": "^3.0.0", + "prettier": "^3.3.3", "react-test-renderer": "^18.2.0", "stylelint": "^16.0.2", "stylelint-config-standard-scss": "^13.0.0", diff --git a/spec/controllers/admin/instances_controller_spec.rb b/spec/controllers/admin/instances_controller_spec.rb index e6fa0b9def..ca64dd90a0 100644 --- a/spec/controllers/admin/instances_controller_spec.rb +++ b/spec/controllers/admin/instances_controller_spec.rb @@ -37,10 +37,32 @@ RSpec.describe Admin::InstancesController do end describe 'GET #show' do + before do + allow(Admin::ActionLogFilter).to receive(:new).and_call_original + end + it 'shows an instance page' do get :show, params: { id: account_popular_main.domain } expect(response).to have_http_status(200) + + instance = assigns(:instance) + expect(instance).to_not be_new_record + + expect(Admin::ActionLogFilter).to have_received(:new).with(target_domain: account_popular_main.domain) + + action_logs = assigns(:action_logs).to_a + expect(action_logs.size).to eq 0 + end + + context 'with an unknown domain' do + it 'returns http success' do + get :show, params: { id: 'unknown.example' } + expect(response).to have_http_status(200) + + instance = assigns(:instance) + expect(instance).to be_new_record + end end end diff --git a/spec/fixtures/requests/activitypub-webfinger.txt b/spec/fixtures/requests/activitypub-webfinger.txt index 465066d84e..733b1693dc 100644 --- a/spec/fixtures/requests/activitypub-webfinger.txt +++ b/spec/fixtures/requests/activitypub-webfinger.txt @@ -4,4 +4,4 @@ Content-Type: application/jrd+json; charset=utf-8 X-Content-Type-Options: nosniff Date: Sun, 17 Sep 2017 06:22:50 GMT -{"subject":"acct:foo@ap.example.com","aliases":["https://ap.example.com/@foo","https://ap.example.com/users/foo"],"links":[{"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"https://ap.example.com/@foo"},{"rel":"http://schemas.google.com/g/2010#updates-from","type":"application/atom+xml","href":"https://ap.example.com/users/foo.atom"},{"rel":"self","type":"application/activity+json","href":"https://ap.example.com/users/foo"},{"rel":"salmon","href":"https://ap.example.com/api/salmon/1"},{"rel":"magic-public-key","href":"data:application/magic-public-key,RSA.u3L4vnpNLzVH31MeWI394F0wKeJFsLDAsNXGeOu0QF2x-h1zLWZw_agqD2R3JPU9_kaDJGPIV2Sn5zLyUA9S6swCCMOtn7BBR9g9sucgXJmUFB0tACH2QSgHywMAybGfmSb3LsEMNKsGJ9VsvYoh8lDET6X4Pyw-ZJU0_OLo_41q9w-OrGtlsTm_PuPIeXnxa6BLqnDaxC-4IcjG_FiPahNCTINl_1F_TgSSDZ4Taf4U9XFEIFw8wmgploELozzIzKq-t8nhQYkgAkt64euWpva3qL5KD1mTIZQEP-LZvh3s2WHrLi3fhbdRuwQ2c0KkJA2oSTFPDpqqbPGZ3QvuHQ==.AQAB"},{"rel":"http://ostatus.org/schema/1.0/subscribe","template":"https://ap.example.com/authorize_follow?acct={uri}"}]} \ No newline at end of file +{"subject":"acct:foo@ap.example.com","aliases":["https://ap.example.com/@foo","https://ap.example.com/users/foo"],"links":[{"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"https://ap.example.com/@foo"},{"rel":"http://schemas.google.com/g/2010#updates-from","type":"application/atom+xml","href":"https://ap.example.com/users/foo.atom"},{"rel":"self","type":"application/html","href":"https://ap.example.com/users/foo.html"},{"rel":"self","type":"application/activity+json","href":"https://ap.example.com/users/foo"},{"rel":"self","type":"application/json","href":"https://ap.example.com/users/foo.json"},{"rel":"salmon","href":"https://ap.example.com/api/salmon/1"},{"rel":"magic-public-key","href":"data:application/magic-public-key,RSA.u3L4vnpNLzVH31MeWI394F0wKeJFsLDAsNXGeOu0QF2x-h1zLWZw_agqD2R3JPU9_kaDJGPIV2Sn5zLyUA9S6swCCMOtn7BBR9g9sucgXJmUFB0tACH2QSgHywMAybGfmSb3LsEMNKsGJ9VsvYoh8lDET6X4Pyw-ZJU0_OLo_41q9w-OrGtlsTm_PuPIeXnxa6BLqnDaxC-4IcjG_FiPahNCTINl_1F_TgSSDZ4Taf4U9XFEIFw8wmgploELozzIzKq-t8nhQYkgAkt64euWpva3qL5KD1mTIZQEP-LZvh3s2WHrLi3fhbdRuwQ2c0KkJA2oSTFPDpqqbPGZ3QvuHQ==.AQAB"},{"rel":"http://ostatus.org/schema/1.0/subscribe","template":"https://ap.example.com/authorize_follow?acct={uri}"}]} \ No newline at end of file diff --git a/spec/fixtures/requests/webfinger.txt b/spec/fixtures/requests/webfinger.txt index f337ecae6f..fce821bddb 100644 --- a/spec/fixtures/requests/webfinger.txt +++ b/spec/fixtures/requests/webfinger.txt @@ -8,4 +8,4 @@ Access-Control-Allow-Origin: * Vary: Accept-Encoding,Cookie Strict-Transport-Security: max-age=31536000; includeSubdomains; -{"subject":"acct:gargron@quitter.no","aliases":["https:\/\/quitter.no\/user\/7477","https:\/\/quitter.no\/gargron","https:\/\/quitter.no\/index.php\/user\/7477","https:\/\/quitter.no\/index.php\/gargron"],"links":[{"rel":"http:\/\/webfinger.net\/rel\/profile-page","type":"text\/html","href":"https:\/\/quitter.no\/gargron"},{"rel":"http:\/\/gmpg.org\/xfn\/11","type":"text\/html","href":"https:\/\/quitter.no\/gargron"},{"rel":"describedby","type":"application\/rdf+xml","href":"https:\/\/quitter.no\/gargron\/foaf"},{"rel":"http:\/\/apinamespace.org\/atom","type":"application\/atomsvc+xml","href":"https:\/\/quitter.no\/api\/statusnet\/app\/service\/gargron.xml"},{"rel":"http:\/\/apinamespace.org\/twitter","href":"https:\/\/quitter.no\/api\/"},{"rel":"http:\/\/specs.openid.net\/auth\/2.0\/provider","href":"https:\/\/quitter.no\/gargron"},{"rel":"http:\/\/schemas.google.com\/g\/2010#updates-from","type":"application\/atom+xml","href":"https:\/\/quitter.no\/api\/statuses\/user_timeline\/7477.atom"},{"rel":"magic-public-key","href":"data:application\/magic-public-key,RSA.1ZBkHTavLvxH3FzlKv4O6WtlILKRFfNami3_Rcu8EuogtXSYiS-bB6hElZfUCSHbC4uLemOA34PEhz__CDMozax1iI_t8dzjDnh1x0iFSup7pSfW9iXk_WU3Dm74yWWW2jildY41vWgrEstuQ1dJ8vVFfSJ9T_tO4c-T9y8vDI8=.AQAB"},{"rel":"salmon","href":"https:\/\/quitter.no\/main\/salmon\/user\/7477"},{"rel":"http:\/\/salmon-protocol.org\/ns\/salmon-replies","href":"https:\/\/quitter.no\/main\/salmon\/user\/7477"},{"rel":"http:\/\/salmon-protocol.org\/ns\/salmon-mention","href":"https:\/\/quitter.no\/main\/salmon\/user\/7477"},{"rel":"http:\/\/ostatus.org\/schema\/1.0\/subscribe","template":"https:\/\/quitter.no\/main\/ostatussub?profile={uri}"}]} +{"subject":"acct:gargron@quitter.no","aliases":["https:\/\/quitter.no\/user\/7477","https:\/\/quitter.no\/gargron","https:\/\/quitter.no\/index.php\/user\/7477","https:\/\/quitter.no\/index.php\/gargron"],"links":[{"rel":"http:\/\/webfinger.net\/rel\/profile-page","type":"text\/html","href":"https:\/\/quitter.no\/gargron"},{"rel":"http:\/\/gmpg.org\/xfn\/11","type":"text\/html","href":"https:\/\/quitter.no\/gargron"},{"rel":"describedby","type":"application\/rdf+xml","href":"https:\/\/quitter.no\/gargron\/foaf"},{"rel":"self","type":"application/activity+json","href":"https://ap.example.com/users/foo"},{"rel":"http:\/\/apinamespace.org\/atom","type":"application\/atomsvc+xml","href":"https:\/\/quitter.no\/api\/statusnet\/app\/service\/gargron.xml"},{"rel":"http:\/\/apinamespace.org\/twitter","href":"https:\/\/quitter.no\/api\/"},{"rel":"http:\/\/specs.openid.net\/auth\/2.0\/provider","href":"https:\/\/quitter.no\/gargron"},{"rel":"http:\/\/schemas.google.com\/g\/2010#updates-from","type":"application\/atom+xml","href":"https:\/\/quitter.no\/api\/statuses\/user_timeline\/7477.atom"},{"rel":"magic-public-key","href":"data:application\/magic-public-key,RSA.1ZBkHTavLvxH3FzlKv4O6WtlILKRFfNami3_Rcu8EuogtXSYiS-bB6hElZfUCSHbC4uLemOA34PEhz__CDMozax1iI_t8dzjDnh1x0iFSup7pSfW9iXk_WU3Dm74yWWW2jildY41vWgrEstuQ1dJ8vVFfSJ9T_tO4c-T9y8vDI8=.AQAB"},{"rel":"salmon","href":"https:\/\/quitter.no\/main\/salmon\/user\/7477"},{"rel":"http:\/\/salmon-protocol.org\/ns\/salmon-replies","href":"https:\/\/quitter.no\/main\/salmon\/user\/7477"},{"rel":"http:\/\/salmon-protocol.org\/ns\/salmon-mention","href":"https:\/\/quitter.no\/main\/salmon\/user\/7477"},{"rel":"http:\/\/ostatus.org\/schema\/1.0\/subscribe","template":"https:\/\/quitter.no\/main\/ostatussub?profile={uri}"}]} diff --git a/spec/lib/activitypub/activity/move_spec.rb b/spec/lib/activitypub/activity/move_spec.rb index d69ef21516..02c3380ab3 100644 --- a/spec/lib/activitypub/activity/move_spec.rb +++ b/spec/lib/activitypub/activity/move_spec.rb @@ -3,6 +3,9 @@ require 'rails_helper' RSpec.describe ActivityPub::Activity::Move do + RSpec::Matchers.define_negated_matcher :not_be_following, :be_following + RSpec::Matchers.define_negated_matcher :not_be_requested, :be_requested + let(:follower) { Fabricate(:account) } let(:old_account) { Fabricate(:account, uri: 'https://example.org/alice', domain: 'example.org', protocol: :activitypub, inbox_url: 'https://example.org/inbox') } let(:new_account) { Fabricate(:account, uri: 'https://example.com/alice', domain: 'example.com', protocol: :activitypub, inbox_url: 'https://example.com/inbox', also_known_as: also_known_as) } @@ -39,48 +42,36 @@ RSpec.describe ActivityPub::Activity::Move do end context 'when all conditions are met', :inline_jobs do - it 'sets moved account on old account' do - expect(old_account.reload.moved_to_account_id).to eq new_account.id - end - - it 'makes followers unfollow old account' do - expect(follower.following?(old_account)).to be false - end - - it 'makes followers follow-request the new account' do - expect(follower.requested?(new_account)).to be true + it 'sets moved on old account, followers unfollow old account, followers request the new account' do + expect(old_account.reload.moved_to_account_id) + .to eq new_account.id + expect(follower) + .to not_be_following(old_account) + .and be_requested(new_account) end end context "when the new account can't be resolved" do let(:returned_account) { nil } - it 'does not set moved account on old account' do - expect(old_account.reload.moved_to_account_id).to be_nil - end - - it 'does not make followers unfollow old account' do - expect(follower.following?(old_account)).to be true - end - - it 'does not make followers follow-request the new account' do - expect(follower.requested?(new_account)).to be false + it 'does not set moved on old account, does not unfollow old, does not follow request new' do + expect(old_account.reload.moved_to_account_id) + .to be_nil + expect(follower) + .to be_following(old_account) + .and not_be_requested(new_account) end end context 'when the new account does not references the old account' do let(:also_known_as) { [] } - it 'does not set moved account on old account' do - expect(old_account.reload.moved_to_account_id).to be_nil - end - - it 'does not make followers unfollow old account' do - expect(follower.following?(old_account)).to be true - end - - it 'does not make followers follow-request the new account' do - expect(follower.requested?(new_account)).to be false + it 'does not set moved on old account, does not unfollow old, does not follow request new' do + expect(old_account.reload.moved_to_account_id) + .to be_nil + expect(follower) + .to be_following(old_account) + .and not_be_requested(new_account) end end @@ -91,16 +82,12 @@ RSpec.describe ActivityPub::Activity::Move do redis.del("move_in_progress:#{old_account.id}") end - it 'does not set moved account on old account' do - expect(old_account.reload.moved_to_account_id).to be_nil - end - - it 'does not make followers unfollow old account' do - expect(follower.following?(old_account)).to be true - end - - it 'does not make followers follow-request the new account' do - expect(follower.requested?(new_account)).to be false + it 'does not set moved on old account, does not unfollow old, does not follow request new' do + expect(old_account.reload.moved_to_account_id) + .to be_nil + expect(follower) + .to be_following(old_account) + .and not_be_requested(new_account) end end end diff --git a/spec/lib/activitypub/adapter_spec.rb b/spec/lib/activitypub/adapter_spec.rb index 7d8d703ec2..5ecdfe8120 100644 --- a/spec/lib/activitypub/adapter_spec.rb +++ b/spec/lib/activitypub/adapter_spec.rb @@ -59,7 +59,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithBasicContextSerializer } it 'renders a basic @context' do - expect(subject).to include({ '@context' => 'https://www.w3.org/ns/activitystreams' }) + expect(subject).to include({ '@context': 'https://www.w3.org/ns/activitystreams' }) end end @@ -67,7 +67,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithNamedContextSerializer } it 'renders a @context with both items' do - expect(subject).to include({ '@context' => ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }) + expect(subject).to include({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }) end end @@ -75,7 +75,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithNestedNamedContextSerializer } it 'renders a @context with both items' do - expect(subject).to include({ '@context' => ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }) + expect(subject).to include({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }) end end @@ -83,7 +83,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithContextExtensionSerializer } it 'renders a @context with the extension' do - expect(subject).to include({ '@context' => ['https://www.w3.org/ns/activitystreams', { 'sensitive' => 'as:sensitive' }] }) + expect(subject).to include({ '@context': ['https://www.w3.org/ns/activitystreams', { 'sensitive' => 'as:sensitive' }] }) end end @@ -91,7 +91,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithNestedContextExtensionSerializer } it 'renders a @context with both extensions' do - expect(subject).to include({ '@context' => ['https://www.w3.org/ns/activitystreams', { 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers', 'sensitive' => 'as:sensitive' }] }) + expect(subject).to include({ '@context': ['https://www.w3.org/ns/activitystreams', { 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers', 'sensitive' => 'as:sensitive' }] }) end end end diff --git a/spec/lib/webfinger_spec.rb b/spec/lib/webfinger_spec.rb new file mode 100644 index 0000000000..5015deac7f --- /dev/null +++ b/spec/lib/webfinger_spec.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Webfinger do + describe 'self link' do + context 'when self link is specified with type application/activity+json' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/activity+json' }] } } + + it 'correctly parses the response' do + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + + response = described_class.new('acct:alice@example.com').perform + + expect(response.self_link_href).to eq 'https://example.com/alice' + end + end + + context 'when self link is specified with type application/ld+json' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' }] } } + + it 'correctly parses the response' do + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + + response = described_class.new('acct:alice@example.com').perform + + expect(response.self_link_href).to eq 'https://example.com/alice' + end + end + + context 'when self link is specified with incorrect type' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/json"' }] } } + + it 'raises an error' do + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + + expect { described_class.new('acct:alice@example.com').perform }.to raise_error(Webfinger::Error) + end + end + end +end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index dfb1f5bc61..7153c7466e 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -592,7 +592,7 @@ RSpec.describe Account do expect(results).to eq [match] end - it 'limits by 10 by default' do + it 'limits result count by default value' do stub_const('Account::Search::DEFAULT_LIMIT', 1) 2.times { Fabricate(:account, display_name: 'Display Name') } results = described_class.advanced_search_for('display', account) @@ -775,7 +775,7 @@ RSpec.describe Account do end it 'is invalid if the display name is longer than the character limit' do - account = Fabricate.build(:account, display_name: username_over_limit) + account = Fabricate.build(:account, display_name: display_name_over_limit) account.valid? expect(account).to model_have_error_on_field(:display_name) end @@ -821,7 +821,7 @@ RSpec.describe Account do end it 'is valid even if the display name is longer than the character limit' do - account = Fabricate.build(:account, domain: 'domain', display_name: username_over_limit) + account = Fabricate.build(:account, domain: 'domain', display_name: display_name_over_limit) account.valid? expect(account).to_not model_have_error_on_field(:display_name) end @@ -837,6 +837,10 @@ RSpec.describe Account do 'a' * described_class::USERNAME_LENGTH_LIMIT * 2 end + def display_name_over_limit + 'a' * described_class::DISPLAY_NAME_LENGTH_LIMIT * 2 + end + def account_note_over_limit 'a' * described_class::NOTE_LENGTH_LIMIT * 2 end diff --git a/spec/services/activitypub/fetch_remote_account_service_spec.rb b/spec/services/activitypub/fetch_remote_account_service_spec.rb index 789a705c41..175ac9cb61 100644 --- a/spec/services/activitypub/fetch_remote_account_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_account_service_spec.rb @@ -33,7 +33,7 @@ RSpec.describe ActivityPub::FetchRemoteAccountService do end context 'when the account does not have a inbox' do - let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/activity+json' }] } } before do actor[:inbox] = nil @@ -51,7 +51,7 @@ RSpec.describe ActivityPub::FetchRemoteAccountService do end context 'when URI and WebFinger share the same host' do - let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/activity+json' }] } } before do stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor), headers: { 'Content-Type': 'application/activity+json' }) @@ -72,7 +72,7 @@ RSpec.describe ActivityPub::FetchRemoteAccountService do end context 'when WebFinger presents different domain than URI' do - let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/activity+json' }] } } before do stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor), headers: { 'Content-Type': 'application/activity+json' }) @@ -95,7 +95,7 @@ RSpec.describe ActivityPub::FetchRemoteAccountService do end context 'when WebFinger returns a different URI' do - let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob', type: 'application/activity+json' }] } } before do stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor), headers: { 'Content-Type': 'application/activity+json' }) @@ -111,7 +111,7 @@ RSpec.describe ActivityPub::FetchRemoteAccountService do end context 'when WebFinger returns a different URI after a redirection' do - let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob', type: 'application/activity+json' }] } } before do stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor), headers: { 'Content-Type': 'application/activity+json' }) diff --git a/spec/services/activitypub/fetch_remote_actor_service_spec.rb b/spec/services/activitypub/fetch_remote_actor_service_spec.rb index 025051e9fa..9d031cb89b 100644 --- a/spec/services/activitypub/fetch_remote_actor_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_actor_service_spec.rb @@ -33,7 +33,7 @@ RSpec.describe ActivityPub::FetchRemoteActorService do end context 'when the account does not have a inbox' do - let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/activity+json' }] } } before do actor[:inbox] = nil @@ -51,7 +51,7 @@ RSpec.describe ActivityPub::FetchRemoteActorService do end context 'when URI and WebFinger share the same host' do - let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/activity+json' }] } } before do stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor), headers: { 'Content-Type': 'application/activity+json' }) @@ -72,7 +72,7 @@ RSpec.describe ActivityPub::FetchRemoteActorService do end context 'when WebFinger presents different domain than URI' do - let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/activity+json' }] } } before do stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor), headers: { 'Content-Type': 'application/activity+json' }) @@ -95,7 +95,7 @@ RSpec.describe ActivityPub::FetchRemoteActorService do end context 'when WebFinger returns a different URI' do - let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob', type: 'application/activity+json' }] } } before do stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor), headers: { 'Content-Type': 'application/activity+json' }) @@ -111,7 +111,7 @@ RSpec.describe ActivityPub::FetchRemoteActorService do end context 'when WebFinger returns a different URI after a redirection' do - let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob', type: 'application/activity+json' }] } } before do stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor), headers: { 'Content-Type': 'application/activity+json' }) diff --git a/spec/services/activitypub/fetch_remote_key_service_spec.rb b/spec/services/activitypub/fetch_remote_key_service_spec.rb index b6fcf3f479..847a154108 100644 --- a/spec/services/activitypub/fetch_remote_key_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_key_service_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' RSpec.describe ActivityPub::FetchRemoteKeyService do subject { described_class.new } - let(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + let(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice', type: 'application/activity+json' }] } } let(:public_key_pem) do <<~TEXT diff --git a/spec/services/activitypub/process_account_service_spec.rb b/spec/services/activitypub/process_account_service_spec.rb index 4fbb527b39..86314e6b48 100644 --- a/spec/services/activitypub/process_account_service_spec.rb +++ b/spec/services/activitypub/process_account_service_spec.rb @@ -215,7 +215,7 @@ RSpec.describe ActivityPub::ProcessAccountService do }.with_indifferent_access webfinger = { subject: "acct:user#{i}@foo.test", - links: [{ rel: 'self', href: "https://foo.test/users/#{i}" }], + links: [{ rel: 'self', href: "https://foo.test/users/#{i}", type: 'application/activity+json' }], }.with_indifferent_access stub_request(:get, "https://foo.test/users/#{i}").to_return(status: 200, body: actor_json.to_json, headers: { 'Content-Type': 'application/activity+json' }) stub_request(:get, "https://foo.test/users/#{i}/featured").to_return(status: 200, body: featured_json.to_json, headers: { 'Content-Type': 'application/activity+json' }) diff --git a/spec/services/backup_service_spec.rb b/spec/services/backup_service_spec.rb index 145b06e372..878405a0fe 100644 --- a/spec/services/backup_service_spec.rb +++ b/spec/services/backup_service_spec.rb @@ -60,6 +60,7 @@ RSpec.describe BackupService do aggregate_failures do expect(body.scan('@context').count).to eq 1 + expect(body.scan('orderedItems').count).to eq 1 expect(json['@context']).to_not be_nil expect(json['type']).to eq 'OrderedCollection' expect(json['totalItems']).to eq 2 diff --git a/spec/support/javascript_errors.rb b/spec/support/javascript_errors.rb index 7645285362..ef5945f37d 100644 --- a/spec/support/javascript_errors.rb +++ b/spec/support/javascript_errors.rb @@ -5,6 +5,7 @@ RSpec.configure do |config| # Classes of intermittent ignorable errors ignored_errors = [ /Error while trying to use the following icon from the Manifest/, # https://github.com/mastodon/mastodon/pull/30793 + /Manifest: Line: 1, column: 1, Syntax error/, # Similar parsing/interruption issue as above ] errors = page.driver.browser.logs.get(:browser).reject do |error| ignored_errors.any? { |pattern| pattern.match(error.message) } diff --git a/spec/validators/note_length_validator_spec.rb b/spec/validators/note_length_validator_spec.rb index 66fccad3ec..3bca93a283 100644 --- a/spec/validators/note_length_validator_spec.rb +++ b/spec/validators/note_length_validator_spec.rb @@ -6,7 +6,7 @@ describe NoteLengthValidator do subject { described_class.new(attributes: { note: true }, maximum: 500) } describe '#validate' do - it 'adds an error when text is over 500 characters' do + it 'adds an error when text is over configured character limit' do text = 'a' * 520 account = instance_double(Account, note: text, errors: activemodel_errors) @@ -14,16 +14,16 @@ describe NoteLengthValidator do expect(account.errors).to have_received(:add) end - it 'counts URLs as 23 characters flat' do - text = ('a' * 476) + " http://#{'b' * 30}.com/example" + it 'reduces calculated length of auto-linkable space-separated URLs' do + text = [starting_string, example_link].join(' ') account = instance_double(Account, note: text, errors: activemodel_errors) subject.validate_each(account, 'note', text) expect(account.errors).to_not have_received(:add) end - it 'does not count non-autolinkable URLs as 23 characters flat' do - text = ('a' * 476) + "http://#{'b' * 30}.com/example" + it 'does not reduce calculated length of non-autolinkable URLs' do + text = [starting_string, example_link].join account = instance_double(Account, note: text, errors: activemodel_errors) subject.validate_each(account, 'note', text) @@ -32,6 +32,14 @@ describe NoteLengthValidator do private + def starting_string + 'a' * 476 + end + + def example_link + "http://#{'b' * 30}.com/example" + end + def activemodel_errors instance_double(ActiveModel::Errors, add: nil) end diff --git a/spec/validators/reaction_validator_spec.rb b/spec/validators/reaction_validator_spec.rb index d73104cb69..f99c1cb5f9 100644 --- a/spec/validators/reaction_validator_spec.rb +++ b/spec/validators/reaction_validator_spec.rb @@ -19,8 +19,9 @@ describe ReactionValidator do expect(reaction.errors).to be_empty end - it 'adds error when 8 reactions already exist' do - %w(🐘 ❤️ 🙉 😍 😋 😂 😞 👍).each do |name| + it 'adds error when reaction limit count has already been reached' do + stub_const 'ReactionValidator::LIMIT', 2 + %w(🐘 ❤️).each do |name| announcement.announcement_reactions.create!(name: name, account: Fabricate(:account)) end diff --git a/spec/validators/status_length_validator_spec.rb b/spec/validators/status_length_validator_spec.rb index ead69dfe21..249b90f490 100644 --- a/spec/validators/status_length_validator_spec.rb +++ b/spec/validators/status_length_validator_spec.rb @@ -42,23 +42,23 @@ describe StatusLengthValidator do expect(status.errors).to have_received(:add) end - it 'counts URLs as 23 characters flat' do - text = ('a' * 476) + " http://#{'b' * 30}.com/example" + it 'reduces calculated length of auto-linkable space-separated URLs' do + text = [starting_string, example_link].join(' ') status = status_double(text: text) subject.validate(status) expect(status.errors).to_not have_received(:add) end - it 'does not count non-autolinkable URLs as 23 characters flat' do - text = ('a' * 476) + "http://#{'b' * 30}.com/example" + it 'does not reduce calculated length of non-autolinkable URLs' do + text = [starting_string, example_link].join status = status_double(text: text) subject.validate(status) expect(status.errors).to have_received(:add) end - it 'does not count overly long URLs as 23 characters flat' do + it 'does not reduce calculated length of count overly long URLs' do text = "http://example.com/valid?#{'#foo?' * 1000}" status = status_double(text: text) subject.validate(status) @@ -84,6 +84,14 @@ describe StatusLengthValidator do private + def starting_string + 'a' * 476 + end + + def example_link + "http://#{'b' * 30}.com/example" + end + def status_double(spoiler_text: '', text: '') instance_double( Status, diff --git a/yarn.lock b/yarn.lock index 0d21406d52..7026fb8a6f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2853,7 +2853,7 @@ __metadata: favico.js: "npm:^0.3.10" file-loader: "npm:^6.2.0" font-awesome: "npm:^4.7.0" - fuzzysort: "npm:^2.0.4" + fuzzysort: "npm:^3.0.0" glob: "npm:^10.2.6" history: "npm:^4.10.1" hoist-non-react-statics: "npm:^3.3.2" @@ -2874,7 +2874,7 @@ __metadata: postcss: "npm:^8.4.24" postcss-loader: "npm:^4.3.0" postcss-preset-env: "npm:^9.5.2" - prettier: "npm:^3.0.0" + prettier: "npm:^3.3.3" prop-types: "npm:^15.8.1" punycode: "npm:^2.3.0" react: "npm:^18.2.0" @@ -3741,9 +3741,9 @@ __metadata: linkType: hard "@types/lodash@npm:^4.14.195": - version: 4.17.6 - resolution: "@types/lodash@npm:4.17.6" - checksum: 10c0/3b197ac47af9443fee8c4719c5ffde527d7febc018b827d44a6bc2523c728c7adfdd25196fdcfe3eed827993e0c41a917d0da6e78938b18b2be94164789f1117 + version: 4.17.7 + resolution: "@types/lodash@npm:4.17.7" + checksum: 10c0/40c965b5ffdcf7ff5c9105307ee08b782da228c01b5c0529122c554c64f6b7168fc8f11dc79aa7bae4e67e17efafaba685dc3a47e294dbf52a65ed2b67100561 languageName: node linkType: hard @@ -4121,11 +4121,11 @@ __metadata: linkType: hard "@types/ws@npm:^8.5.9": - version: 8.5.10 - resolution: "@types/ws@npm:8.5.10" + version: 8.5.11 + resolution: "@types/ws@npm:8.5.11" dependencies: "@types/node": "npm:*" - checksum: 10c0/e9af279b984c4a04ab53295a40aa95c3e9685f04888df5c6920860d1dd073fcc57c7bd33578a04b285b2c655a0b52258d34bee0a20569dca8defb8393e1e5d29 + checksum: 10c0/50bd2e1a12659fa024a97d7e8c267fbf2a2c2251f1edf2057aa7dfc99682f5c025a188df9e27414675c78d3b189346a3567e1e4c218ad79a9d2b0f1f2b860c3a languageName: node linkType: hard @@ -8901,10 +8901,10 @@ __metadata: languageName: node linkType: hard -"fuzzysort@npm:^2.0.4": - version: 2.0.4 - resolution: "fuzzysort@npm:2.0.4" - checksum: 10c0/3170d16fccc0f4ac5e31323dbab7d0da7b1a4024878ed4d6b4ec86c0df94e12dc335f8d4181e38d97ca7919ac51bc5de4a9c2ec94914a4e51f9e9c05208c9ea9 +"fuzzysort@npm:^3.0.0": + version: 3.0.2 + resolution: "fuzzysort@npm:3.0.2" + checksum: 10c0/c6cdbd092a8e91ed822aeac6d4fb95559759c10602cb29f27307c1cabd01fdd384fa399f7757722435b595244efb000cd63f144104c41b8551b2faff123279cb languageName: node linkType: hard @@ -9543,13 +9543,13 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.4": - version: 7.0.4 - resolution: "https-proxy-agent@npm:7.0.4" +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" dependencies: agent-base: "npm:^7.0.2" debug: "npm:4" - checksum: 10c0/bc4f7c38da32a5fc622450b6cb49a24ff596f9bd48dcedb52d2da3fa1c1a80e100fb506bd59b326c012f21c863c69b275c23de1a01d0b84db396822fdf25e52b + checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c languageName: node linkType: hard @@ -9646,9 +9646,9 @@ __metadata: linkType: hard "immutable@npm:^4.0.0, immutable@npm:^4.0.0-rc.1, immutable@npm:^4.3.0": - version: 4.3.6 - resolution: "immutable@npm:4.3.6" - checksum: 10c0/7d0952a768b4fadcee47230ed86dc9505a4517095eceaf5a47e65288571c42400c6e4a2ae21eca4eda957cb7bc50720213135b62cf6a181639111f8acae128c3 + version: 4.3.7 + resolution: "immutable@npm:4.3.7" + checksum: 10c0/9b099197081b22f6433003e34929da8ecddbbdc1474cdc8aa3b7669dee4adda349c06143de22def36016d1b6de5322b043eccd7a11db1dad2ca85dad4fff5435 languageName: node linkType: hard @@ -11120,8 +11120,8 @@ __metadata: linkType: hard "jsdom@npm:^24.0.0": - version: 24.1.0 - resolution: "jsdom@npm:24.1.0" + version: 24.1.1 + resolution: "jsdom@npm:24.1.1" dependencies: cssstyle: "npm:^4.0.1" data-urls: "npm:^5.0.0" @@ -11129,11 +11129,11 @@ __metadata: form-data: "npm:^4.0.0" html-encoding-sniffer: "npm:^4.0.0" http-proxy-agent: "npm:^7.0.2" - https-proxy-agent: "npm:^7.0.4" + https-proxy-agent: "npm:^7.0.5" is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.10" + nwsapi: "npm:^2.2.12" parse5: "npm:^7.1.2" - rrweb-cssom: "npm:^0.7.0" + rrweb-cssom: "npm:^0.7.1" saxes: "npm:^6.0.0" symbol-tree: "npm:^3.2.4" tough-cookie: "npm:^4.1.4" @@ -11142,14 +11142,14 @@ __metadata: whatwg-encoding: "npm:^3.1.1" whatwg-mimetype: "npm:^4.0.0" whatwg-url: "npm:^14.0.0" - ws: "npm:^8.17.0" + ws: "npm:^8.18.0" xml-name-validator: "npm:^5.0.0" peerDependencies: canvas: ^2.11.2 peerDependenciesMeta: canvas: optional: true - checksum: 10c0/34eadd8a7ae20c1505abe7a0f3988b2f0881cce7e27d75c4f5224f440f81f8ac08f4f449695b0f4178f048ed1c1709f3594e9d3f2fe0406c28e8da6eddd44f5a + checksum: 10c0/02d6bfe32f09f26329c0e53ad9f9883a3c671fc1f75725167d2089ca412f5b7ca85ff8aa62327d1cc6fc70ffbb3b18dfc7642c4b2096c2c8b19aaf9a48473eb3 languageName: node linkType: hard @@ -12442,10 +12442,10 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.10, nwsapi@npm:^2.2.2": - version: 2.2.10 - resolution: "nwsapi@npm:2.2.10" - checksum: 10c0/43dfa150387bd2a578e37556d0ae3330d5617f99e5a7b64e3400d4c2785620762aa6169caf8f5fbce17b7ef29c372060b602594320c374fba0a39da4163d77ed +"nwsapi@npm:^2.2.12, nwsapi@npm:^2.2.2": + version: 2.2.12 + resolution: "nwsapi@npm:2.2.12" + checksum: 10c0/95e9623d63df111405503df8c5d800e26f71675d319e2c9c70cddfa31e5ace1d3f8b6d98d354544fc156a1506d920ec291e303fab761e4f99296868e199a466e languageName: node linkType: hard @@ -14154,12 +14154,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.0.0": - version: 3.3.2 - resolution: "prettier@npm:3.3.2" +"prettier@npm:^3.3.3": + version: 3.3.3 + resolution: "prettier@npm:3.3.3" bin: prettier: bin/prettier.cjs - checksum: 10c0/39ed27d17f0238da6dd6571d63026566bd790d3d0edac57c285fbab525982060c8f1e01955fe38134ab10f0951a6076da37f015db8173c02f14bc7f0803a384c + checksum: 10c0/b85828b08e7505716324e4245549b9205c0cacb25342a030ba8885aba2039a115dbcf75a0b7ca3b37bc9d101ee61fab8113fc69ca3359f2a226f1ecc07ad2e26 languageName: node linkType: hard @@ -15396,10 +15396,10 @@ __metadata: languageName: node linkType: hard -"rrweb-cssom@npm:^0.7.0": - version: 0.7.0 - resolution: "rrweb-cssom@npm:0.7.0" - checksum: 10c0/278350b1f383f76db20e37394361b709740bd4f5f27f924e1c3c3fdd7112b2ae37ed9bc7cee63776f7df395b9b0f644d1f8be104990e3028d276a3288cd7e564 +"rrweb-cssom@npm:^0.7.1": + version: 0.7.1 + resolution: "rrweb-cssom@npm:0.7.1" + checksum: 10c0/127b8ca6c8aac45e2755abbae6138d4a813b1bedc2caabf79466ae83ab3cfc84b5bfab513b7033f0aa4561c7753edf787d0dd01163ceacdee2e8eb1b6bf7237e languageName: node linkType: hard @@ -18550,7 +18550,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.11.0, ws@npm:^8.12.1, ws@npm:^8.17.0": +"ws@npm:^8.11.0, ws@npm:^8.12.1, ws@npm:^8.18.0": version: 8.18.0 resolution: "ws@npm:8.18.0" peerDependencies: