Merge pull request #2856 from ClearlyClaire/glitch-soc/merge-upstream

Merge upstream changes up to 70988519df
This commit is contained in:
Claire 2024-09-24 20:51:46 +02:00 committed by GitHub
commit 5df7e36244
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
109 changed files with 457 additions and 272 deletions

View File

@ -101,15 +101,15 @@ GEM
awrence (1.2.1)
aws-eventstream (1.3.0)
aws-partitions (1.977.0)
aws-sdk-core (3.207.0)
aws-sdk-core (3.208.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.9)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.92.0)
aws-sdk-kms (1.93.0)
aws-sdk-core (~> 3, >= 3.207.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.164.0)
aws-sdk-s3 (1.165.0)
aws-sdk-core (~> 3, >= 3.207.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
@ -893,7 +893,7 @@ GEM
rack-proxy (>= 0.6.1)
railties (>= 5.2)
semantic_range (>= 2.3.0)
webrick (1.8.1)
webrick (1.8.2)
websocket (1.2.11)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)

View File

@ -1,4 +1,5 @@
import { browserHistory } from 'flavours/glitch/components/router';
import { debounceWithDispatchAndArguments } from 'flavours/glitch/utils/debounce';
import api, { getLinks } from '../api';
@ -462,6 +463,20 @@ export function expandFollowingFail(id, error) {
};
}
const debouncedFetchRelationships = debounceWithDispatchAndArguments((dispatch, ...newAccountIds) => {
if (newAccountIds.length === 0) {
return;
}
dispatch(fetchRelationshipsRequest(newAccountIds));
api().get(`/api/v1/accounts/relationships?with_suspended=true&${newAccountIds.map(id => `id[]=${id}`).join('&')}`).then(response => {
dispatch(fetchRelationshipsSuccess({ relationships: response.data }));
}).catch(error => {
dispatch(fetchRelationshipsFail(error));
});
}, { delay: 500 });
export function fetchRelationships(accountIds) {
return (dispatch, getState) => {
const state = getState();
@ -473,13 +488,7 @@ export function fetchRelationships(accountIds) {
return;
}
dispatch(fetchRelationshipsRequest(newAccountIds));
api().get(`/api/v1/accounts/relationships?with_suspended=true&${newAccountIds.map(id => `id[]=${id}`).join('&')}`).then(response => {
dispatch(fetchRelationshipsSuccess({ relationships: response.data }));
}).catch(error => {
dispatch(fetchRelationshipsFail(error));
});
debouncedFetchRelationships(dispatch, ...newAccountIds);
};
}

View File

@ -17,6 +17,6 @@ export const updateNotificationsPolicy = createDataLoadingThunk(
(policy: Partial<NotificationPolicy>) => apiUpdateNotificationsPolicy(policy),
);
export const decreasePendingNotificationsCount = createAction<number>(
'notificationPolicy/decreasePendingNotificationCount',
export const decreasePendingRequestsCount = createAction<number>(
'notificationPolicy/decreasePendingRequestsCount',
);

View File

@ -13,11 +13,11 @@ import type {
ApiNotificationJSON,
} from 'flavours/glitch/api_types/notifications';
import type { ApiStatusJSON } from 'flavours/glitch/api_types/statuses';
import type { AppDispatch, RootState } from 'flavours/glitch/store';
import type { AppDispatch } from 'flavours/glitch/store';
import { createDataLoadingThunk } from 'flavours/glitch/store/typed_functions';
import { importFetchedAccounts, importFetchedStatuses } from './importer';
import { decreasePendingNotificationsCount } from './notification_policies';
import { decreasePendingRequestsCount } from './notification_policies';
// TODO: refactor with notification_groups
function dispatchAssociatedRecords(
@ -169,19 +169,11 @@ export const expandNotificationsForRequest = createDataLoadingThunk(
},
);
const selectNotificationCountForRequest = (state: RootState, id: string) => {
const requests = state.notificationRequests.items;
const thisRequest = requests.find((request) => request.id === id);
return thisRequest ? thisRequest.notifications_count : 0;
};
export const acceptNotificationRequest = createDataLoadingThunk(
'notificationRequest/accept',
({ id }: { id: string }) => apiAcceptNotificationRequest(id),
(_data, { dispatch, getState, discardLoadData, actionArg: { id } }) => {
const count = selectNotificationCountForRequest(getState(), id);
dispatch(decreasePendingNotificationsCount(count));
(_data, { dispatch, discardLoadData }) => {
dispatch(decreasePendingRequestsCount(1));
// The payload is not used in any functions
return discardLoadData;
@ -191,10 +183,8 @@ export const acceptNotificationRequest = createDataLoadingThunk(
export const dismissNotificationRequest = createDataLoadingThunk(
'notificationRequest/dismiss',
({ id }: { id: string }) => apiDismissNotificationRequest(id),
(_data, { dispatch, getState, discardLoadData, actionArg: { id } }) => {
const count = selectNotificationCountForRequest(getState(), id);
dispatch(decreasePendingNotificationsCount(count));
(_data, { dispatch, discardLoadData }) => {
dispatch(decreasePendingRequestsCount(1));
// The payload is not used in any functions
return discardLoadData;
@ -204,13 +194,8 @@ export const dismissNotificationRequest = createDataLoadingThunk(
export const acceptNotificationRequests = createDataLoadingThunk(
'notificationRequests/acceptBulk',
({ ids }: { ids: string[] }) => apiAcceptNotificationRequests(ids),
(_data, { dispatch, getState, discardLoadData, actionArg: { ids } }) => {
const count = ids.reduce(
(count, id) => count + selectNotificationCountForRequest(getState(), id),
0,
);
dispatch(decreasePendingNotificationsCount(count));
(_data, { dispatch, discardLoadData, actionArg: { ids } }) => {
dispatch(decreasePendingRequestsCount(ids.length));
// The payload is not used in any functions
return discardLoadData;
@ -220,13 +205,8 @@ export const acceptNotificationRequests = createDataLoadingThunk(
export const dismissNotificationRequests = createDataLoadingThunk(
'notificationRequests/dismissBulk',
({ ids }: { ids: string[] }) => apiDismissNotificationRequests(ids),
(_data, { dispatch, getState, discardLoadData, actionArg: { ids } }) => {
const count = ids.reduce(
(count, id) => count + selectNotificationCountForRequest(getState(), id),
0,
);
dispatch(decreasePendingNotificationsCount(count));
(_data, { dispatch, discardLoadData, actionArg: { ids } }) => {
dispatch(decreasePendingRequestsCount(ids.length));
// The payload is not used in any functions
return discardLoadData;

View File

@ -10,7 +10,7 @@ import api, { getLinks } from '../api';
import { unescapeHTML } from '../utils/html';
import { requestNotificationPermission } from '../utils/notifications';
import { fetchFollowRequests, fetchRelationships } from './accounts';
import { fetchFollowRequests } from './accounts';
import {
importFetchedAccount,
importFetchedAccounts,
@ -68,14 +68,6 @@ defineMessages({
mention: { id: 'notification.mention', defaultMessage: '{name} mentioned you' },
});
const fetchRelatedRelationships = (dispatch, notifications) => {
const accountIds = notifications.filter(item => ['follow', 'follow_request', 'admin.sign_up'].indexOf(item.type) !== -1).map(item => item.account.id);
if (accountIds.length > 0) {
dispatch(fetchRelationships(accountIds));
}
};
export const loadPending = () => ({
type: NOTIFICATIONS_LOAD_PENDING,
});
@ -118,8 +110,6 @@ export function updateNotifications(notification, intlMessages, intlLocale) {
dispatch(notificationsUpdate({ notification, preferPendingItems, playSound: playSound && !filtered}));
fetchRelatedRelationships(dispatch, [notification]);
} else if (playSound && !filtered) {
dispatch({
type: NOTIFICATIONS_UPDATE_NOOP,
@ -211,7 +201,6 @@ export function expandNotifications({ maxId = undefined, forceLoad = false }) {
dispatch(importFetchedAccounts(response.data.filter(item => item.report).map(item => item.report.target_account)));
dispatch(expandNotificationsSuccess(response.data, next ? next.uri : null, isLoadingMore, isLoadingRecent, isLoadingRecent && preferPendingItems));
fetchRelatedRelationships(dispatch, response.data);
dispatch(submitMarkers());
} catch(error) {
dispatch(expandNotificationsFail(error, isLoadingMore));

View File

@ -91,5 +91,5 @@ export const apiAcceptNotificationRequests = async (id: string[]) => {
};
export const apiDismissNotificationRequests = async (id: string[]) => {
return apiRequestPost('v1/notifications/dismiss/dismiss', { id });
return apiRequestPost('v1/notifications/requests/dismiss', { id });
};

View File

@ -31,7 +31,7 @@ export const FilteredNotificationsIconButton: React.FC<{
history.push('/notifications/requests');
}, [history]);
if (policy === null || policy.summary.pending_notifications_count === 0) {
if (policy === null || policy.summary.pending_requests_count <= 0) {
return null;
}
@ -70,7 +70,7 @@ export const FilteredNotificationsBanner: React.FC = () => {
};
}, [dispatch]);
if (policy === null || policy.summary.pending_notifications_count === 0) {
if (policy === null || policy.summary.pending_requests_count <= 0) {
return null;
}

View File

@ -2,7 +2,7 @@ import { createReducer, isAnyOf } from '@reduxjs/toolkit';
import {
fetchNotificationPolicy,
decreasePendingNotificationsCount,
decreasePendingRequestsCount,
updateNotificationsPolicy,
} from 'flavours/glitch/actions/notification_policies';
import type { NotificationPolicy } from 'flavours/glitch/models/notification_policy';
@ -10,10 +10,9 @@ import type { NotificationPolicy } from 'flavours/glitch/models/notification_pol
export const notificationPolicyReducer =
createReducer<NotificationPolicy | null>(null, (builder) => {
builder
.addCase(decreasePendingNotificationsCount, (state, action) => {
.addCase(decreasePendingRequestsCount, (state, action) => {
if (state) {
state.summary.pending_notifications_count -= action.payload;
state.summary.pending_requests_count -= 1;
state.summary.pending_requests_count -= action.payload;
}
})
.addMatcher(

View File

@ -7392,7 +7392,7 @@ img.modal-warning {
.media-gallery__actions {
position: absolute;
bottom: 6px;
top: 6px;
inset-inline-end: 6px;
display: flex;
gap: 2px;
@ -7415,7 +7415,7 @@ img.modal-warning {
.media-gallery__item__badges {
position: absolute;
bottom: 8px;
inset-inline-start: 8px;
inset-inline-end: 8px;
display: flex;
gap: 2px;

View File

@ -86,9 +86,7 @@
color: $primary-text-color;
transition: all 100ms ease-in;
font-size: 14px;
padding: 0 16px;
line-height: 36px;
height: 36px;
padding: 8px 16px;
text-decoration: none;
margin-bottom: 4px;

View File

@ -0,0 +1,23 @@
import { debounce } from 'lodash';
import type { AppDispatch } from 'flavours/glitch/store';
export const debounceWithDispatchAndArguments = <T>(
fn: (dispatch: AppDispatch, ...args: T[]) => void,
{ delay = 100 },
) => {
let argumentBuffer: T[] = [];
let dispatchBuffer: AppDispatch;
const wrapped = debounce(() => {
const tmpBuffer = argumentBuffer;
argumentBuffer = [];
fn(dispatchBuffer, ...tmpBuffer);
}, delay);
return (dispatch: AppDispatch, ...args: T[]) => {
dispatchBuffer = dispatch;
argumentBuffer.push(...args);
wrapped();
};
};

View File

@ -1,4 +1,5 @@
import { browserHistory } from 'mastodon/components/router';
import { debounceWithDispatchAndArguments } from 'mastodon/utils/debounce';
import api, { getLinks } from '../api';
@ -449,6 +450,20 @@ export function expandFollowingFail(id, error) {
};
}
const debouncedFetchRelationships = debounceWithDispatchAndArguments((dispatch, ...newAccountIds) => {
if (newAccountIds.length === 0) {
return;
}
dispatch(fetchRelationshipsRequest(newAccountIds));
api().get(`/api/v1/accounts/relationships?with_suspended=true&${newAccountIds.map(id => `id[]=${id}`).join('&')}`).then(response => {
dispatch(fetchRelationshipsSuccess({ relationships: response.data }));
}).catch(error => {
dispatch(fetchRelationshipsFail(error));
});
}, { delay: 500 });
export function fetchRelationships(accountIds) {
return (dispatch, getState) => {
const state = getState();
@ -460,13 +475,7 @@ export function fetchRelationships(accountIds) {
return;
}
dispatch(fetchRelationshipsRequest(newAccountIds));
api().get(`/api/v1/accounts/relationships?with_suspended=true&${newAccountIds.map(id => `id[]=${id}`).join('&')}`).then(response => {
dispatch(fetchRelationshipsSuccess({ relationships: response.data }));
}).catch(error => {
dispatch(fetchRelationshipsFail(error));
});
debouncedFetchRelationships(dispatch, ...newAccountIds);
};
}

View File

@ -17,6 +17,6 @@ export const updateNotificationsPolicy = createDataLoadingThunk(
(policy: Partial<NotificationPolicy>) => apiUpdateNotificationsPolicy(policy),
);
export const decreasePendingNotificationsCount = createAction<number>(
'notificationPolicy/decreasePendingNotificationCount',
export const decreasePendingRequestsCount = createAction<number>(
'notificationPolicy/decreasePendingRequestsCount',
);

View File

@ -13,11 +13,11 @@ import type {
ApiNotificationJSON,
} from 'mastodon/api_types/notifications';
import type { ApiStatusJSON } from 'mastodon/api_types/statuses';
import type { AppDispatch, RootState } from 'mastodon/store';
import type { AppDispatch } from 'mastodon/store';
import { createDataLoadingThunk } from 'mastodon/store/typed_functions';
import { importFetchedAccounts, importFetchedStatuses } from './importer';
import { decreasePendingNotificationsCount } from './notification_policies';
import { decreasePendingRequestsCount } from './notification_policies';
// TODO: refactor with notification_groups
function dispatchAssociatedRecords(
@ -169,19 +169,11 @@ export const expandNotificationsForRequest = createDataLoadingThunk(
},
);
const selectNotificationCountForRequest = (state: RootState, id: string) => {
const requests = state.notificationRequests.items;
const thisRequest = requests.find((request) => request.id === id);
return thisRequest ? thisRequest.notifications_count : 0;
};
export const acceptNotificationRequest = createDataLoadingThunk(
'notificationRequest/accept',
({ id }: { id: string }) => apiAcceptNotificationRequest(id),
(_data, { dispatch, getState, discardLoadData, actionArg: { id } }) => {
const count = selectNotificationCountForRequest(getState(), id);
dispatch(decreasePendingNotificationsCount(count));
(_data, { dispatch, discardLoadData }) => {
dispatch(decreasePendingRequestsCount(1));
// The payload is not used in any functions
return discardLoadData;
@ -191,10 +183,8 @@ export const acceptNotificationRequest = createDataLoadingThunk(
export const dismissNotificationRequest = createDataLoadingThunk(
'notificationRequest/dismiss',
({ id }: { id: string }) => apiDismissNotificationRequest(id),
(_data, { dispatch, getState, discardLoadData, actionArg: { id } }) => {
const count = selectNotificationCountForRequest(getState(), id);
dispatch(decreasePendingNotificationsCount(count));
(_data, { dispatch, discardLoadData }) => {
dispatch(decreasePendingRequestsCount(1));
// The payload is not used in any functions
return discardLoadData;
@ -204,13 +194,8 @@ export const dismissNotificationRequest = createDataLoadingThunk(
export const acceptNotificationRequests = createDataLoadingThunk(
'notificationRequests/acceptBulk',
({ ids }: { ids: string[] }) => apiAcceptNotificationRequests(ids),
(_data, { dispatch, getState, discardLoadData, actionArg: { ids } }) => {
const count = ids.reduce(
(count, id) => count + selectNotificationCountForRequest(getState(), id),
0,
);
dispatch(decreasePendingNotificationsCount(count));
(_data, { dispatch, discardLoadData, actionArg: { ids } }) => {
dispatch(decreasePendingRequestsCount(ids.length));
// The payload is not used in any functions
return discardLoadData;
@ -220,13 +205,8 @@ export const acceptNotificationRequests = createDataLoadingThunk(
export const dismissNotificationRequests = createDataLoadingThunk(
'notificationRequests/dismissBulk',
({ ids }: { ids: string[] }) => apiDismissNotificationRequests(ids),
(_data, { dispatch, getState, discardLoadData, actionArg: { ids } }) => {
const count = ids.reduce(
(count, id) => count + selectNotificationCountForRequest(getState(), id),
0,
);
dispatch(decreasePendingNotificationsCount(count));
(_data, { dispatch, discardLoadData, actionArg: { ids } }) => {
dispatch(decreasePendingRequestsCount(ids.length));
// The payload is not used in any functions
return discardLoadData;

View File

@ -10,7 +10,7 @@ import api, { getLinks } from '../api';
import { unescapeHTML } from '../utils/html';
import { requestNotificationPermission } from '../utils/notifications';
import { fetchFollowRequests, fetchRelationships } from './accounts';
import { fetchFollowRequests } from './accounts';
import {
importFetchedAccount,
importFetchedAccounts,
@ -56,14 +56,6 @@ defineMessages({
group: { id: 'notifications.group', defaultMessage: '{count} notifications' },
});
const fetchRelatedRelationships = (dispatch, notifications) => {
const accountIds = notifications.filter(item => ['follow', 'follow_request', 'admin.sign_up'].indexOf(item.type) !== -1).map(item => item.account.id);
if (accountIds.length > 0) {
dispatch(fetchRelationships(accountIds));
}
};
export const loadPending = () => ({
type: NOTIFICATIONS_LOAD_PENDING,
});
@ -106,8 +98,6 @@ export function updateNotifications(notification, intlMessages, intlLocale) {
dispatch(notificationsUpdate({ notification, preferPendingItems, playSound: playSound && !filtered}));
fetchRelatedRelationships(dispatch, [notification]);
} else if (playSound && !filtered) {
dispatch({
type: NOTIFICATIONS_UPDATE_NOOP,
@ -199,7 +189,6 @@ export function expandNotifications({ maxId = undefined, forceLoad = false }) {
dispatch(importFetchedAccounts(response.data.filter(item => item.report).map(item => item.report.target_account)));
dispatch(expandNotificationsSuccess(response.data, next ? next.uri : null, isLoadingMore, isLoadingRecent, isLoadingRecent && preferPendingItems));
fetchRelatedRelationships(dispatch, response.data);
dispatch(submitMarkers());
} catch(error) {
dispatch(expandNotificationsFail(error, isLoadingMore));

View File

@ -91,5 +91,5 @@ export const apiAcceptNotificationRequests = async (id: string[]) => {
};
export const apiDismissNotificationRequests = async (id: string[]) => {
return apiRequestPost('v1/notifications/dismiss/dismiss', { id });
return apiRequestPost('v1/notifications/requests/dismiss', { id });
};

View File

@ -31,7 +31,7 @@ export const FilteredNotificationsIconButton: React.FC<{
history.push('/notifications/requests');
}, [history]);
if (policy === null || policy.summary.pending_notifications_count === 0) {
if (policy === null || policy.summary.pending_requests_count <= 0) {
return null;
}
@ -70,7 +70,7 @@ export const FilteredNotificationsBanner: React.FC = () => {
};
}, [dispatch]);
if (policy === null || policy.summary.pending_notifications_count === 0) {
if (policy === null || policy.summary.pending_requests_count <= 0) {
return null;
}

View File

@ -97,6 +97,8 @@
"block_modal.title": "Αποκλεισμός χρήστη;",
"block_modal.you_wont_see_mentions": "Δε θα βλέπεις τις αναρτήσεις που τον αναφέρουν.",
"boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις την επόμενη φορά",
"boost_modal.reblog": "Ενίσχυση ανάρτησης;",
"boost_modal.undo_reblog": "Αναίρεση ενίσχυσης;",
"bundle_column_error.copy_stacktrace": "Αντιγραφή αναφοράς σφάλματος",
"bundle_column_error.error.body": "Δεν ήταν δυνατή η απόδοση της σελίδας που ζήτησες. Μπορεί να οφείλεται σε σφάλμα στον κώδικά μας ή σε πρόβλημα συμβατότητας του προγράμματος περιήγησης.",
"bundle_column_error.error.title": "Ωχ όχι!",
@ -192,6 +194,8 @@
"confirmations.unfollow.confirm": "Άρση ακολούθησης",
"confirmations.unfollow.message": "Σίγουρα θες να πάψεις να ακολουθείς τον/την {name};",
"confirmations.unfollow.title": "Άρση ακολούθησης;",
"content_warning.hide": "Απόκρυψη ανάρτησης",
"content_warning.show": "Εμφάνιση ούτως ή άλλως",
"conversation.delete": "Διαγραφή συζήτησης",
"conversation.mark_as_read": "Σήμανση ως αναγνωσμένο",
"conversation.open": "Προβολή συνομιλίας",
@ -299,6 +303,7 @@
"filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα",
"filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης",
"filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης",
"filter_warning.matches_filter": "Ταιριάζει με το φίλτρο “{title}”",
"filtered_notifications_banner.pending_requests": "Από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις",
"filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις",
"firehose.all": "Όλα",
@ -429,6 +434,8 @@
"lightbox.close": "Κλείσιμο",
"lightbox.next": "Επόμενο",
"lightbox.previous": "Προηγούμενο",
"lightbox.zoom_in": "Εστίαση στο πραγματικό μέγεθος",
"lightbox.zoom_out": "Εστίαση για προσαρμογή",
"limited_account_hint.action": "Εμφάνιση προφίλ ούτως ή άλλως",
"limited_account_hint.title": "Αυτό το προφίλ έχει αποκρυφτεί από τους διαχειριστές του διακομιστή {domain}.",
"link_preview.author": "Από {name}",
@ -450,6 +457,7 @@
"lists.subheading": "Οι λίστες σου",
"load_pending": "{count, plural, one {# νέο στοιχείο} other {# νέα στοιχεία}}",
"loading_indicator.label": "Φόρτωση…",
"media_gallery.hide": "Απόκρυψη",
"moved_to_account_banner.text": "Ο λογαριασμός σου {disabledAccount} είναι προσωρινά απενεργοποιημένος επειδή μεταφέρθηκες στον {movedToAccount}.",
"mute_modal.hide_from_notifications": "Απόκρυψη από ειδοποιήσεις",
"mute_modal.hide_options": "Απόκρυψη επιλογών",
@ -461,6 +469,7 @@
"mute_modal.you_wont_see_mentions": "Δε θα βλέπεις τις αναρτήσεις που τον αναφέρουν.",
"mute_modal.you_wont_see_posts": "Μπορεί ακόμα να δει τις αναρτήσεις σου, αλλά δε θα βλέπεις τις δικές του.",
"navigation_bar.about": "Σχετικά με",
"navigation_bar.administration": "Διαχείριση",
"navigation_bar.advanced_interface": "Άνοιγμα σε προηγμένη διεπαφή ιστού",
"navigation_bar.blocks": "Αποκλεισμένοι χρήστες",
"navigation_bar.bookmarks": "Σελιδοδείκτες",
@ -477,6 +486,7 @@
"navigation_bar.follows_and_followers": "Ακολουθείς και σε ακολουθούν",
"navigation_bar.lists": "Λίστες",
"navigation_bar.logout": "Αποσύνδεση",
"navigation_bar.moderation": "Συντονισμός",
"navigation_bar.mutes": "Αποσιωπημένοι χρήστες",
"navigation_bar.opened_in_classic_interface": "Δημοσιεύσεις, λογαριασμοί και άλλες συγκεκριμένες σελίδες ανοίγονται από προεπιλογή στην κλασική διεπαφή ιστού.",
"navigation_bar.personal": "Προσωπικά",
@ -768,6 +778,7 @@
"status.bookmark": "Σελιδοδείκτης",
"status.cancel_reblog_private": "Ακύρωση ενίσχυσης",
"status.cannot_reblog": "Αυτή η ανάρτηση δεν μπορεί να ενισχυθεί",
"status.continued_thread": "Συνεχιζόμενο νήματος",
"status.copy": "Αντιγραφή συνδέσμου ανάρτησης",
"status.delete": "Διαγραφή",
"status.detailed_status": "Προβολή λεπτομερούς συζήτησης",
@ -776,6 +787,7 @@
"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": "Φιλτράρισμα αυτής της ανάρτησης",
@ -800,6 +812,7 @@
"status.reblogs.empty": "Κανείς δεν ενίσχυσε αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
"status.redraft": "Σβήσε & ξαναγράψε",
"status.remove_bookmark": "Αφαίρεση σελιδοδείκτη",
"status.replied_in_thread": "Απαντήθηκε σε νήμα",
"status.replied_to": "Απάντησε στον {name}",
"status.reply": "Απάντησε",
"status.replyAll": "Απάντησε στο νήμα συζήτησης",

View File

@ -231,6 +231,8 @@
"domain_pill.their_username": "Ilia unika identigilo sur ilia servilo. Eblas trovi uzantojn kun la sama uzantnomo sur malsamaj serviloj.",
"domain_pill.username": "Uzantnomo",
"domain_pill.whats_in_a_handle": "Kio estas en identigo?",
"domain_pill.who_they_are": "Ĉar identigoj diras, kiu iu estas kaj kie ili estas, vi povas interagi kun homoj tra la socia reto de <button>ActivityPub-funkciigitaj platformoj</button>.",
"domain_pill.who_you_are": "Ĉar via identigo diras kiu vi estas kaj kie vi estas, homoj povas interagi kun vi tra la socia reto de <button>ActivityPub-funkciigitaj platformoj</button>.",
"domain_pill.your_handle": "Via identigo:",
"domain_pill.your_server": "Via cifereca hejmo, kie loĝas ĉiuj viaj afiŝoj. Ĉu vi ne ŝatas ĉi tiun? Transloku servilojn iam ajn kaj alportu ankaŭ viajn sekvantojn.",
"domain_pill.your_username": "Via unika identigilo sur ĉi tiu servilo. Eblas trovi uzantojn kun la sama uzantnomo sur malsamaj serviloj.",
@ -301,6 +303,7 @@
"filter_modal.select_filter.subtitle": "Uzu ekzistantan kategorion aŭ kreu novan",
"filter_modal.select_filter.title": "Filtri ĉi tiun afiŝon",
"filter_modal.title.status": "Filtri mesaĝon",
"filter_warning.matches_filter": "Filtrilo de kongruoj “{title}”",
"filtered_notifications_banner.pending_requests": "El {count, plural, =0 {neniu} one {unu persono} other {# homoj}} vi eble konas",
"filtered_notifications_banner.title": "Filtritaj sciigoj",
"firehose.all": "Ĉiuj",
@ -309,11 +312,16 @@
"follow_request.authorize": "Rajtigi",
"follow_request.reject": "Rifuzi",
"follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la dungitaro de {domain} opinias, ke vi eble volas revizii petojn pri sekvado de ĉi tiuj kontoj permane.",
"follow_suggestions.curated_suggestion": "Elekto de stabo",
"follow_suggestions.dismiss": "Ne montri denove",
"follow_suggestions.featured_longer": "Mane elektita de la teamo de {domain}",
"follow_suggestions.friends_of_friends_longer": "Populara inter homoj, kiujn vi sekvas",
"follow_suggestions.hints.featured": "Ĉi tiu profilo estis mane elektita de la teamo de {domain}.",
"follow_suggestions.hints.friends_of_friends": "Ĉi tiu profilo estas populara inter la homoj, kiujn vi sekvas.",
"follow_suggestions.hints.most_followed": "Ĉi tiu profilo estas unu el la plej sekvataj en {domain}.",
"follow_suggestions.hints.most_interactions": "Ĉi tiu profilo lastatempe ricevis multe da atento sur {domain}.",
"follow_suggestions.hints.similar_to_recently_followed": "Ĉi tiu profilo similas al la profiloj kiujn vi plej lastatempe sekvis.",
"follow_suggestions.personalized_suggestion": "Agordita propono",
"follow_suggestions.popular_suggestion": "Popularaj proponoj",
"follow_suggestions.popular_suggestion_longer": "Populara en {domain}",
"follow_suggestions.similar_to_recently_followed_longer": "Simile al profiloj, kiujn vi lastatempe sekvis",
@ -346,9 +354,12 @@
"hashtag.unfollow": "Ne plu sekvi la kradvorton",
"hashtags.and_other": "…kaj {count, plural,other {# pli}}",
"hints.profiles.followers_may_be_missing": "Sekvantoj por ĉi tiu profilo eble mankas.",
"hints.profiles.follows_may_be_missing": "Sekvatoj de ĉi tiu profilo eble mankas.",
"hints.profiles.posts_may_be_missing": "Iuj afiŝoj de ĉi tiu profilo eble mankas.",
"hints.profiles.see_more_followers": "Vidi pli da sekvantoj sur {domain}",
"hints.profiles.see_more_follows": "Vidi pli da sekvatoj sur {domain}",
"hints.profiles.see_more_posts": "Vidi pli da afiŝoj sur {domain}",
"hints.threads.replies_may_be_missing": "Respondoj de aliaj serviloj eble mankas.",
"hints.threads.see_more": "Vidi pli da respondoj sur {domain}",
"home.column_settings.show_reblogs": "Montri diskonigojn",
"home.column_settings.show_replies": "Montri respondojn",
@ -358,6 +369,10 @@
"home.pending_critical_update.title": "Kritika sekurĝisdatigo estas disponebla!",
"home.show_announcements": "Montri anoncojn",
"ignore_notifications_modal.disclaimer": "Mastodon ne povas informi uzantojn, ke vi ignoris iliajn sciigojn. Ignori sciigojn ne malhelpos la mesaĝojn mem esti senditaj.",
"ignore_notifications_modal.filter_instead": "Filtri anstataŭe",
"ignore_notifications_modal.filter_to_act_users": "Vi ankoraŭ povos akcepti, malakcepti aŭ raporti uzantojn",
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrado helpas eviti eblan konfuzon",
"ignore_notifications_modal.filter_to_review_separately": "Vi povas revizii filtritajn sciigojn aparte",
"ignore_notifications_modal.ignore": "Ignori sciigojn",
"ignore_notifications_modal.limited_accounts_title": "Ĉu ignori sciigojn de moderigitaj kontoj?",
"ignore_notifications_modal.new_accounts_title": "Ĉu ignori sciigojn de novaj kontoj?",
@ -471,6 +486,7 @@
"navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj",
"navigation_bar.lists": "Listoj",
"navigation_bar.logout": "Adiaŭi",
"navigation_bar.moderation": "Modereco",
"navigation_bar.mutes": "Silentigitaj uzantoj",
"navigation_bar.opened_in_classic_interface": "Afiŝoj, kontoj, kaj aliaj specifaj paĝoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.",
"navigation_bar.personal": "Persone",
@ -486,7 +502,9 @@
"notification.admin.report_statuses": "{name} raportis {target} por {category}",
"notification.admin.report_statuses_other": "{name} raportis {target}",
"notification.admin.sign_up": "{name} kreis konton",
"notification.admin.sign_up.name_and_others": "{name} kaj {count, plural, one {# alia} other {# aliaj}} kreis konton",
"notification.favourite": "{name} stelumis vian afiŝon",
"notification.favourite.name_and_others_with_link": "{name} kaj <a>{count, plural, one {# alia} other {# aliaj}}</a> ŝatis vian afiŝon",
"notification.follow": "{name} eksekvis vin",
"notification.follow.name_and_others": "{name} kaj {count, plural, one {# alia} other {# aliaj}} sekvis vin",
"notification.follow_request": "{name} petis sekvi vin",
@ -506,22 +524,32 @@
"notification.moderation_warning.action_silence": "Via konto estis limigita.",
"notification.moderation_warning.action_suspend": "Via konto estas malakceptita.",
"notification.own_poll": "Via enketo finiĝis",
"notification.poll": "Balotenketo, en kiu vi voĉdonis, finiĝis",
"notification.reblog": "{name} diskonigis vian afiŝon",
"notification.reblog.name_and_others_with_link": "{name} kaj <a>{count, plural, one {# alia} other {# aliaj}}</a> diskonigis vian afiŝon",
"notification.relationships_severance_event": "Perditaj konektoj kun {name}",
"notification.relationships_severance_event.account_suspension": "Administranto de {from} malakceptis {target}, kio signifas, ke vi ne plu povas ricevi ĝisdatigojn de ili aŭ interagi kun ili.",
"notification.relationships_severance_event.domain_block": "Administranto de {from} blokis {target}, inkluzive de {followersCount} de viaj sekvantoj kaj {followingCount, plural, one {# konto} other {# kontoj}} kiujn vi sekvas.",
"notification.relationships_severance_event.learn_more": "Lerni pli",
"notification.relationships_severance_event.user_domain_block": "Vi blokis {target}, forigante {followersCount} de viaj sekvantoj kaj {followingCount, plural, one {# konto} other {# kontoj}} kiujn vi sekvas.",
"notification.status": "{name} ĵus afiŝis",
"notification.update": "{name} redaktis afiŝon",
"notification_requests.accept": "Akcepti",
"notification_requests.accept_multiple": "{count, plural, one {Akcepti # peton…} other {Akcepti # petojn…}}",
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {Akcepti peton} other {Akcepti petojn}}",
"notification_requests.confirm_accept_multiple.message": "Vi estas akceptonta {count, plural, one {unu sciigan peton} other {# sciigajn petojn}}. Ĉu vi certas, ke vi volas daŭrigi?",
"notification_requests.confirm_accept_multiple.title": "Ĉu akcepti sciigajn petojn?",
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Malakcepti peton} other {Malakcepti petojn}}",
"notification_requests.confirm_dismiss_multiple.message": "Vi estas malakceptonta {count, plural, one {unu sciigan peton} other {# sciigajn petojn}}. Vi ne povos facile aliri {count, plural, one {ĝin} other {ilin}} denove. Ĉu vi certas, ke vi volas daŭrigi?",
"notification_requests.confirm_dismiss_multiple.title": "Ĉu malakcepti sciigajn petojn?",
"notification_requests.dismiss": "Forĵeti",
"notification_requests.dismiss_multiple": "{count, plural, one {Malakcepti # peton…} other {# Malakcepti # petojn…}}",
"notification_requests.edit_selection": "Redakti",
"notification_requests.exit_selection": "Farita",
"notification_requests.explainer_for_limited_account": "Sciigoj de ĉi tiu konto estis filtritaj ĉar la konto estis limigita de moderanto.",
"notification_requests.explainer_for_limited_remote_account": "Sciigoj de ĉi tiu konto estis filtritaj ĉar la konto aŭ ĝia servilo estis limigitaj de moderanto.",
"notification_requests.maximize": "Maksimumigi",
"notification_requests.minimize_banner": "Minimumigi filtritajn sciigojn-rubandon",
"notification_requests.notifications_from": "Sciigoj de {name}",
"notification_requests.title": "Filtritaj sciigoj",
"notification_requests.view": "Vidi sciigojn",
@ -533,6 +561,7 @@
"notifications.column_settings.alert": "Sciigoj de la retumilo",
"notifications.column_settings.favourite": "Stelumoj:",
"notifications.column_settings.filter_bar.advanced": "Montri ĉiujn kategoriojn",
"notifications.column_settings.filter_bar.category": "Rapida filtrila breto",
"notifications.column_settings.follow": "Novaj sekvantoj:",
"notifications.column_settings.follow_request": "Novaj petoj de sekvado:",
"notifications.column_settings.mention": "Mencioj:",
@ -548,7 +577,7 @@
"notifications.filter.all": "Ĉiuj",
"notifications.filter.boosts": "Diskonigoj",
"notifications.filter.favourites": "Stelumoj",
"notifications.filter.follows": "Sekvoj",
"notifications.filter.follows": "Sekvatoj",
"notifications.filter.mentions": "Mencioj",
"notifications.filter.polls": "Balotenketaj rezultoj",
"notifications.filter.statuses": "Ĝisdatigoj de homoj, kiujn vi sekvas",
@ -563,12 +592,16 @@
"notifications.policy.drop": "Ignori",
"notifications.policy.drop_hint": "Sendi al la malpleno, por neniam esti vidita denove",
"notifications.policy.filter": "Filtri",
"notifications.policy.filter_hint": "Sendi al filtritaj sciigoj-enirkesto",
"notifications.policy.filter_limited_accounts_hint": "Limigita de servilaj moderigantoj",
"notifications.policy.filter_limited_accounts_title": "Moderigitaj kontoj",
"notifications.policy.filter_new_accounts.hint": "Kreite en la {days, plural, one {lasta tago} other {# lastaj tagoj}}",
"notifications.policy.filter_new_accounts_title": "Novaj kontoj",
"notifications.policy.filter_not_followers_hint": "Inkluzive de homoj, kiuj sekvis vin malpli ol {days, plural, one {unu tago} other {# tagoj}}",
"notifications.policy.filter_not_followers_title": "Homoj, kiuj ne sekvas vin",
"notifications.policy.filter_not_following_hint": "Ĝis vi permane aprobas ilin",
"notifications.policy.filter_not_following_title": "Homoj, kiujn vi ne sekvas",
"notifications.policy.filter_private_mentions_hint": "Filtrite krom se ĝi respondas al via propra mencio aŭ se vi sekvas la sendinton",
"notifications.policy.filter_private_mentions_title": "Nepetitaj privataj mencioj",
"notifications.policy.title": "Administri sciigojn de…",
"notifications_permission_banner.enable": "Ŝalti retumilajn sciigojn",
@ -580,8 +613,8 @@
"onboarding.actions.go_to_home": "Go to your home feed",
"onboarding.compose.template": "Saluton #Mastodon!",
"onboarding.follows.empty": "Bedaŭrinde, neniu rezulto estas montrebla nuntempe. Vi povas provi serĉi aŭ foliumi la esploran paĝon por trovi kontojn por sekvi, aŭ retrovi baldaŭ.",
"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": "Popular on Mastodon",
"onboarding.follows.lead": "Via hejma fluo estas la ĉefa maniero sperti Mastodon. Ju pli da homoj vi sekvas, des pli aktiva kaj interesa ĝi estos. Por komenci, jen kelkaj sugestoj:",
"onboarding.follows.title": "Agordi vian hejman fluon",
"onboarding.profile.discoverable": "Trovebligi mian profilon",
"onboarding.profile.discoverable_hint": "Kiam vi aliĝi al trovebleco ĉe Mastodon, viaj afiŝoj eble aperos en serĉaj rezultoj kaj populariĝoj, kaj via profilo eble estas sugestota al personoj kun similaj intereseoj al vi.",
"onboarding.profile.display_name": "Publika nomo",
@ -602,7 +635,7 @@
"onboarding.start.title": "Vi atingas ĝin!",
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
"onboarding.steps.publish_status.body": "Say hello to the world.",
"onboarding.steps.publish_status.body": "Salutu la mondon per teksto, fotoj, filmetoj aŭ balotenketoj {emoji}",
"onboarding.steps.publish_status.title": "Fari vian unuan afiŝon",
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
"onboarding.steps.setup_profile.title": "Customize your profile",
@ -632,6 +665,7 @@
"privacy.private.short": "Sekvantoj",
"privacy.public.long": "Ĉiujn ajn ĉe kaj ekster Mastodon",
"privacy.public.short": "Publika",
"privacy.unlisted.additional": "Ĉi tio kondutas ekzakte kiel publika, krom ke la afiŝo ne aperos en vivaj fluoj aŭ kradvortoj, esploro aŭ Mastodon-serĉo, eĉ se vi estas enskribita en la tuta konto.",
"privacy.unlisted.long": "Malpli algoritmaj fanfaroj",
"privacy.unlisted.short": "Diskrete publika",
"privacy_policy.last_updated": "Laste ĝisdatigita en {date}",
@ -651,7 +685,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "hodiaŭ",
"reply_indicator.attachments": "{count, plural, one {# aldonaĵo} other {# aldonaĵoj}}",
"reply_indicator.cancel": "Nuligi",
"reply_indicator.poll": "Balotenketo",
"report.block": "Bloki",
"report.block_explanation": "Vi ne vidos iliajn afiŝojn. Ili ne povos vidi viajn afiŝojn, nek sekvi vin. Ili ne scios, ke vi blokas ilin.",
"report.categories.legal": "Laŭleĝa",
@ -732,6 +768,7 @@
"server_banner.server_stats": "Statistikoj de la servilo:",
"sign_in_banner.create_account": "Krei konton",
"sign_in_banner.follow_anyone": "Sekvi iun ajn tra la fediverso kaj vidi ĉion en kronologia ordo. Neniuj algoritmoj, reklamoj aŭ klakbetoj videblas.",
"sign_in_banner.mastodon_is": "Mastodonto estas la plej bona maniero por resti flank-al-flanke kun kio okazas.",
"sign_in_banner.sign_in": "Saluti",
"sign_in_banner.sso_redirect": "Ensalutu aŭ Registriĝi",
"status.admin_account": "Malfermi fasadon de moderigado por @{name}",
@ -741,6 +778,7 @@
"status.bookmark": "Aldoni al la legosignoj",
"status.cancel_reblog_private": "Ne plu diskonigi",
"status.cannot_reblog": "Ĉi tiun afiŝon ne eblas diskonigi",
"status.continued_thread": "Daŭrigis fadenon",
"status.copy": "Kopii la ligilon al la mesaĝo",
"status.delete": "Forigi",
"status.detailed_status": "Detala konversacia vido",
@ -749,6 +787,7 @@
"status.edit": "Redakti",
"status.edited": "Laste redaktita {date}",
"status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}",
"status.embed": "Akiri enkorpigan kodon",
"status.favourite": "Ŝatata",
"status.favourites": "{count, plural, one {plej ŝatata} other {plej ŝatataj}}",
"status.filter": "Filtri ĉi tiun afiŝon",
@ -773,6 +812,7 @@
"status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun afiŝon. Kiam iu faras tion, ri aperos ĉi tie.",
"status.redraft": "Forigi kaj reskribi",
"status.remove_bookmark": "Forigi legosignon",
"status.replied_in_thread": "Respondis en fadeno",
"status.replied_to": "Respondis al {name}",
"status.reply": "Respondi",
"status.replyAll": "Respondi al la fadeno",

View File

@ -435,7 +435,7 @@
"lightbox.next": "Siguiente",
"lightbox.previous": "Anterior",
"lightbox.zoom_in": "Ampliar al tamaño real",
"lightbox.zoom_out": "Ampliar para ajustar",
"lightbox.zoom_out": "Ampliar hasta ajustar",
"limited_account_hint.action": "Mostrar perfil de todos modos",
"limited_account_hint.title": "Este perfil fue ocultado por los moderadores de {domain}.",
"link_preview.author": "Por {name}",

View File

@ -267,7 +267,7 @@
"empty_column.favourites": "Todavía nadie marcó esta publicación como favorita. Cuando alguien lo haga, se mostrarán aquí.",
"empty_column.follow_requests": "No tienes ninguna petición de seguidor. Cuando recibas una, se mostrará aquí.",
"empty_column.followed_tags": "No has seguido ninguna etiqueta todavía. Cuando lo hagas, se mostrarán aquí.",
"empty_column.hashtag": "No hay nada en este hashtag aún.",
"empty_column.hashtag": "No hay nada en esta etiqueta todavía.",
"empty_column.home": "¡Tu línea temporal está vacía! Sigue a más personas para rellenarla.",
"empty_column.list": "Aún no hay nada en esta lista. Cuando los miembros de esta lista publiquen nuevos estados, estos aparecerán aquí.",
"empty_column.lists": "No tienes ninguna lista. Cuando crees una, se mostrará aquí.",
@ -342,7 +342,7 @@
"hashtag.column_header.tag_mode.any": "o {additional}",
"hashtag.column_header.tag_mode.none": "sin {additional}",
"hashtag.column_settings.select.no_options_message": "No se encontraron sugerencias",
"hashtag.column_settings.select.placeholder": "Introduzca hashtags…",
"hashtag.column_settings.select.placeholder": "Introduce etiquetas…",
"hashtag.column_settings.tag_mode.all": "Todos estos",
"hashtag.column_settings.tag_mode.any": "Cualquiera de estos",
"hashtag.column_settings.tag_mode.none": "Ninguno de estos",
@ -637,7 +637,7 @@
"onboarding.steps.follow_people.title": "Personaliza tu línea de inicio",
"onboarding.steps.publish_status.body": "Di hola al mundo con texto, fotos, vídeos o encuestas {emoji}",
"onboarding.steps.publish_status.title": "Escribe tu primera publicación",
"onboarding.steps.setup_profile.body": "Aumenta tus interacciones tcompletando tu perfil.",
"onboarding.steps.setup_profile.body": "Aumenta tus interacciones con un perfil completo.",
"onboarding.steps.setup_profile.title": "Personaliza tu perfil",
"onboarding.steps.share_profile.body": "¡Dile a tus amigos cómo encontrarte en Mastodon!",
"onboarding.steps.share_profile.title": "Comparte tu perfil de Mastodon",

View File

@ -434,6 +434,8 @@
"lightbox.close": "Dùin",
"lightbox.next": "Air adhart",
"lightbox.previous": "Air ais",
"lightbox.zoom_in": "Sùm dhan fhìor-mheud",
"lightbox.zoom_out": "Sùm fèin-obrachail",
"limited_account_hint.action": "Seall a phròifil co-dhiù",
"limited_account_hint.title": "Chaidh a phròifil seo fhalach le maoir {domain}.",
"link_preview.author": "Le {name}",

View File

@ -368,13 +368,13 @@
"home.pending_critical_update.link": "Mira as actualizacións",
"home.pending_critical_update.title": "Hai una actualización crítica de seguridade!",
"home.show_announcements": "Amosar anuncios",
"ignore_notifications_modal.disclaimer": "Mastodon non pode informar ás usuarias se ignoraches as súas notificacións. Ao ignorar as notificacións non evitarás que as mensaxes sexan enviadas igualmente.",
"ignore_notifications_modal.disclaimer": "Mastodon non pode informar ás usuarias de que ignoraches as súas notificacións. Ao ignorar as notificacións non evitarás que as mensaxes sexan enviadas igualmente.",
"ignore_notifications_modal.filter_instead": "Filtrar igualmente",
"ignore_notifications_modal.filter_to_act_users": "Poderás seguir aceptando, rexeitando e denunciando usuarias",
"ignore_notifications_modal.filter_to_avoid_confusion": "Ao filtrar axudas a evitar posibles confusións",
"ignore_notifications_modal.filter_to_review_separately": "Podes revisar as notificacións filtradas por separado",
"ignore_notifications_modal.filter_to_review_separately": "Podes revisar por separado as notificacións filtradas",
"ignore_notifications_modal.ignore": "Ignorar notificacións",
"ignore_notifications_modal.limited_accounts_title": "Ignorar notificacións desde contas moderadas?",
"ignore_notifications_modal.limited_accounts_title": "Ignorar notificacións desde contas limitadas?",
"ignore_notifications_modal.new_accounts_title": "Ignorar notificacións desde novas contas?",
"ignore_notifications_modal.not_followers_title": "Ignorar notificacións de persoas que non te seguen?",
"ignore_notifications_modal.not_following_title": "Ignorar notificacións de persoas que non segues?",
@ -463,7 +463,7 @@
"mute_modal.hide_options": "Opcións ao ocultar",
"mute_modal.indefinite": "Ata que as reactive",
"mute_modal.show_options": "Mostrar opcións",
"mute_modal.they_can_mention_and_follow": "Pódete mencionar e seguirte, pero non o verás.",
"mute_modal.they_can_mention_and_follow": "Pódete mencionar e seguirte, pero non a verás.",
"mute_modal.they_wont_know": "Non saberá que a acalaches.",
"mute_modal.title": "Acalar usuaria?",
"mute_modal.you_wont_see_mentions": "Non verás as publicacións que a mencionen.",

View File

@ -2,7 +2,7 @@ import { createReducer, isAnyOf } from '@reduxjs/toolkit';
import {
fetchNotificationPolicy,
decreasePendingNotificationsCount,
decreasePendingRequestsCount,
updateNotificationsPolicy,
} from 'mastodon/actions/notification_policies';
import type { NotificationPolicy } from 'mastodon/models/notification_policy';
@ -10,10 +10,9 @@ import type { NotificationPolicy } from 'mastodon/models/notification_policy';
export const notificationPolicyReducer =
createReducer<NotificationPolicy | null>(null, (builder) => {
builder
.addCase(decreasePendingNotificationsCount, (state, action) => {
.addCase(decreasePendingRequestsCount, (state, action) => {
if (state) {
state.summary.pending_notifications_count -= action.payload;
state.summary.pending_requests_count -= 1;
state.summary.pending_requests_count -= action.payload;
}
})
.addMatcher(

View File

@ -0,0 +1,23 @@
import { debounce } from 'lodash';
import type { AppDispatch } from 'mastodon/store';
export const debounceWithDispatchAndArguments = <T>(
fn: (dispatch: AppDispatch, ...args: T[]) => void,
{ delay = 100 },
) => {
let argumentBuffer: T[] = [];
let dispatchBuffer: AppDispatch;
const wrapped = debounce(() => {
const tmpBuffer = argumentBuffer;
argumentBuffer = [];
fn(dispatchBuffer, ...tmpBuffer);
}, delay);
return (dispatch: AppDispatch, ...args: T[]) => {
dispatchBuffer = dispatch;
argumentBuffer.push(...args);
wrapped();
};
};

View File

@ -6889,7 +6889,7 @@ a.status-card {
.media-gallery__actions {
position: absolute;
bottom: 6px;
top: 6px;
inset-inline-end: 6px;
display: flex;
gap: 2px;
@ -6912,7 +6912,7 @@ a.status-card {
.media-gallery__item__badges {
position: absolute;
bottom: 8px;
inset-inline-start: 8px;
inset-inline-end: 8px;
display: flex;
gap: 2px;
}

View File

@ -86,9 +86,7 @@
color: $primary-text-color;
transition: all 100ms ease-in;
font-size: 14px;
padding: 0 16px;
line-height: 36px;
height: 36px;
padding: 8px 16px;
text-decoration: none;
margin-bottom: 4px;

View File

@ -342,7 +342,15 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
def converted_text
linkify([@status_parser.title.presence, @status_parser.spoiler_text.presence, @status_parser.url || @status_parser.uri].compact.join("\n\n"))
[formatted_title, @status_parser.spoiler_text.presence, formatted_url].compact.join("\n\n")
end
def formatted_title
"<h2>#{@status_parser.title}</h2>" if @status_parser.title.present?
end
def formatted_url
linkify(@status_parser.url || @status_parser.uri)
end
def unsupported_media_type?(mime_type)

View File

@ -9,6 +9,8 @@ class AdminMailer < ApplicationMailer
before_action :process_params
before_action :set_instance
after_action :set_important_headers!, only: :new_critical_software_updates
default to: -> { @me.user_email }
def new_report(report)
@ -56,12 +58,6 @@ class AdminMailer < ApplicationMailer
def new_critical_software_updates
@software_updates = SoftwareUpdate.where(urgent: true).to_a.sort_by(&:gem_version)
headers(
'Importance' => 'high',
'Priority' => 'urgent',
'X-Priority' => '1'
)
locale_for_account(@me) do
mail subject: default_i18n_subject(instance: @instance)
end
@ -82,4 +78,12 @@ class AdminMailer < ApplicationMailer
def set_instance
@instance = Rails.configuration.x.local_domain
end
def set_important_headers!
headers(
'Importance' => 'high',
'Priority' => 'urgent',
'X-Priority' => '1'
)
end
end

View File

@ -53,7 +53,7 @@ class ApproveAppealService < BaseService
def undo_mark_statuses_as_sensitive!
representative_account = Account.representative
@strike.statuses.includes(:media_attachments).find_each do |status|
@strike.statuses.kept.includes(:media_attachments).reorder(nil).find_each do |status|
UpdateStatusService.new.call(status, representative_account.id, sensitive: false) if status.with_media?
end
end

View File

@ -1,4 +1,4 @@
# frozen_string_literal: true
# 0.5s is a fairly high timeout, but that should account for slow servers under load
Regexp.timeout = 0.5 if Regexp.respond_to?(:timeout=)
# 2s is a fairly high default, but that should account for slow servers under load
Regexp.timeout = ENV.fetch('REGEXP_TIMEOUT', 2).to_f if Regexp.respond_to?(:timeout=)

View File

@ -15,6 +15,8 @@ be:
user/invite_request:
text: Прычына
errors:
messages:
too_many_lines: перавышана абмежаванне ў %{limit} радкоў
models:
account:
attributes:

View File

@ -15,6 +15,12 @@ el:
user/invite_request:
text: Αιτιολογία
errors:
attributes:
domain:
invalid: δεν είναι έγκυρο όνομα τομέα
messages:
invalid_domain_on_line: το %{value} δεν είναι έγκυρο όνομα τομέα
too_many_lines: υπερβαίνει το όριο των %{limit} γραμμών
models:
account:
attributes:

View File

@ -60,7 +60,6 @@ af:
error:
title: "n Fout het ingesluip"
new:
prompt_html: "%{client_name} wil toegang hê tot jou rekening. Dit is n derdepartytoepassing. <strong>Moet dit nie toelaat as jy dit nie vertrou nie.</strong>"
review_permissions: Hersien toestemmings
title: Benodig magtiging
show:

View File

@ -60,7 +60,6 @@ an:
error:
title: Ha ocurriu una error
new:
prompt_html: "%{client_name} deseya permiso pa acceder ta la tuya cuenta. Ye una aplicación de tercers. <strong>Si no confías en ella, no habrías d'autorizar-la.</strong>"
review_permissions: Revisar permisos
title: Se requiere autorización
show:

View File

@ -60,7 +60,6 @@ ar:
error:
title: حدث هناك خطأ
new:
prompt_html: يريد %{client_name} الإذن للوصول إلى حسابك. إنه تطبيق طرف ثالث. <strong>إذا كنت لا تثق فيه، فلا ينبغي أن تأذن له بذلك.</strong>
review_permissions: مراجعة الصلاحيات
title: إذن بالتصريح
show:

View File

@ -41,7 +41,6 @@ ast:
error:
title: Prodúxose un error
new:
prompt_html: "%{client_name}, que ye una aplicación de terceros, quier tener accesu a la cuenta. <strong>Si nun t'enfotes nella, nun habríes autorizala.</strong>"
review_permissions: Revisión de los permisos
show:
title: Copia esti códigu d'autorización y apiégalu na aplicación.

View File

@ -60,7 +60,6 @@ be:
error:
title: Узнікла памылка
new:
prompt_html: "%{client_name} хацеў бы атрымаць дазвол для доступу да вашага акаунта. Гэта вонкавае прыкладанне. <strong> Не давайце дазволу на гэта, калі вы не давяраеце гэтаму прыкладанню. </strong>"
review_permissions: Прагледзець дазволы
title: Патрабуецца аўтарызацыя
show:

View File

@ -60,7 +60,6 @@ bg:
error:
title: Възникна грешка
new:
prompt_html: "%{client_name} иска разрешение да има достъп до акаунта ви. Приложение от трета страна е.<strong>Ако не му се доверявате, то може да не го упълномощявате.</strong>"
review_permissions: Преглед на разрешенията
title: Изисква се упълномощаване
show:

View File

@ -60,7 +60,7 @@ ca:
error:
title: S'ha produït un error
new:
prompt_html: "%{client_name} vol permís per accedir el teu compte. És una aplicació de tercers. <strong>Si no hi confies, no hauries d'autoritzar-la.</strong>"
prompt_html: "%{client_name} demana accés al vostre compte. <strong>Només aproveu aquesta petició si reconeixeu i confieu en aquest origen.</strong>"
review_permissions: Revisa els permisos
title: Cal autorizació
show:

View File

@ -60,7 +60,6 @@ ckb:
error:
title: هەڵەیەک ڕوویدا
new:
prompt_html: "%{client_name} حەز دەکات مۆڵەت بدرێت بۆ چوونە ناو ئەکاونتەکەت. ئەپڵیکەیشنێکی لایەنی سێیەمە. <strong>ئەگەر متمانەت پێی نییە، ئەوا نابێت ڕێگەی پێبدەیت.</strong>"
review_permissions: پێداچوونەوە بە مۆڵەتەکاندا بکە
title: ڕێپێدان پێویستە
show:

View File

@ -60,7 +60,6 @@ cs:
error:
title: Vyskytla se chyba
new:
prompt_html: "%{client_name} si přeje oprávnění pro přístup k vašemu účtu. Je to aplikace třetí strany. <strong>Pokud jí nedůvěřujete, pak byste ji neměli autorizovat.</strong>"
review_permissions: Zkontrolujte oprávnění
title: Je vyžadována autorizace
show:

View File

@ -60,7 +60,6 @@ cy:
error:
title: Mae rhywbeth wedi mynd o'i le
new:
prompt_html: Hoffai %{client_name} gael caniatâd i gael mynediad i'ch cyfrif. Mae'n gais trydydd parti. <strong>Os nad ydych yn ymddiried ynddo, yna peidiwch a'i awdurdodi.</strong>
review_permissions: Adolygu caniatâd
title: Angen awdurdodi
show:

View File

@ -60,7 +60,7 @@ da:
error:
title: En fejl opstod
new:
prompt_html: "%{client_name} ønsker tilladelse til at tilgå din konto. Den er en tredjepartsapplikation. <strong>Har du ikke tillid til den, bør den ikke godkendes.</strong>"
prompt_html: "%{client_name} vil ønsker tilladelse til at tilgå din konto. <strong>Godkend kun denne anmodning, hvis kilden genkendes, og man stoler på den.</strong>"
review_permissions: Gennemgå tilladelser
title: Godkendelse kræves
show:

View File

@ -60,7 +60,7 @@ de:
error:
title: Ein Fehler ist aufgetreten
new:
prompt_html: "%{client_name} möchte auf dein Konto zugreifen. Es handelt sich um eine Software von Dritten. <strong>Wenn du der Anwendung nicht vertraust, solltest du ihr keinen Zugriff auf dein Konto geben.</strong>"
prompt_html: "%{client_name} möchte auf dein Konto zugreifen. <strong>Du solltest diese Anfrage nur genehmigen, wenn du diese Quelle kennst und ihr vertraust.</strong>"
review_permissions: Berechtigungen überprüfen
title: Autorisierung erforderlich
show:

View File

@ -60,7 +60,6 @@ el:
error:
title: Εμφανίστηκε σφάλμα
new:
prompt_html: Το %{client_name} θα ήθελε άδεια πρόσβασης στο λογαριασμό σου. Είναι μια εφαρμογή τρίτων. <strong>Αν δεν το εμπιστεύεσαι, τότε δεν πρέπει να το εγκρίνεις.</strong>
review_permissions: Ανασκόπηση δικαιωμάτων
title: Απαιτείται έγκριση
show:

View File

@ -60,7 +60,7 @@ en-GB:
error:
title: An error has occurred
new:
prompt_html: "%{client_name} would like permission to access your account. It is a third-party application. <strong>If you do not trust it, then you should not authorise it.</strong>"
prompt_html: "%{client_name} would like permission to access your account. <strong>Only approve this request if you recognise and trust this source.</strong>"
review_permissions: Review permissions
title: Authorisation required
show:

View File

@ -60,7 +60,6 @@ eo:
error:
title: Eraro okazis
new:
prompt_html: "%{client_name} petas permeson por aliri vian konton. <strong>Se vi ne fidas ĝin, ne rajtigu ĝin.</strong>"
review_permissions: Revizu permesojn
title: Rajtigo bezonata
show:

View File

@ -60,7 +60,7 @@ es-AR:
error:
title: Ocurrió un error
new:
prompt_html: "%{client_name} solicita permiso para acceder a tu cuenta. Es una aplicación de terceros. <strong>Si no confiás en ella, no deberías autorizarla.</strong>"
prompt_html: "%{client_name} le gustaría obtener permiso para acceder a tu cuenta. <strong>Solo aprueba esta solicitud si reconoces y confías en esta fuente.</strong>"
review_permissions: Revisar permisos
title: Autorización requerida
show:

View File

@ -60,7 +60,7 @@ es-MX:
error:
title: Ha ocurrido un error
new:
prompt_html: "%{client_name} requiere permiso para acceder a tu cuenta. Es una aplicación de terceros. <strong>Si no confías en esta, no deberías autorizarla.</strong>"
prompt_html: "%{client_name} le gustaría obtener permiso para acceder a tu cuenta. <strong>Solo aprueba esta solicitud si reconoces y confías en esta fuente.</strong>"
review_permissions: Revisar permisos
title: Se requiere autorización
show:

View File

@ -60,7 +60,7 @@ es:
error:
title: Ha ocurrido un error
new:
prompt_html: "%{client_name} desea permiso para acceder a tu cuenta. Es una aplicación de terceros. <strong>Si no confías en ella, no deberías autorizarla.</strong>"
prompt_html: "%{client_name} le gustaría obtener permiso para acceder a tu cuenta. <strong>Solo aprueba esta solicitud si reconoces y confías en esta fuente.</strong>"
review_permissions: Revisar permisos
title: Se requiere autorización
show:

View File

@ -60,7 +60,6 @@ et:
error:
title: Ilmnes viga
new:
prompt_html: "%{client_name} soovib luba kontole juurdepääsuks. See on kolmanda osapoole rakendus. <strong>Kui see pole usaldusväärne, siis ei tohiks seda lubada.</strong>"
review_permissions: Lubade ülevaade
title: Autoriseerimine vajalik
show:

View File

@ -60,7 +60,6 @@ eu:
error:
title: Errore bat gertatu da
new:
prompt_html: "%{client_name} bezeroak zure kontura sartzeko baimena nahi du. Hirugarrengoen aplikazio bat da. <strong>Ez bazara fidatzen, ez zenuke baimendu behar.</strong>"
review_permissions: Berrikusi baimenak
title: Baimena behar da
show:

View File

@ -60,7 +60,6 @@ fa:
error:
title: خطایی رخ داد
new:
prompt_html: "%{client_name} خواهان اجازه دسترسی به حساب کاربری شماست. <strong>اگر به آن اعتماد ندارید، نباید تاییدش کنید.</strong>"
review_permissions: بازبینی اجازه‌ها
title: نیاز به اجازه دادن
show:

View File

@ -60,7 +60,7 @@ fi:
error:
title: Tapahtui virhe
new:
prompt_html: "%{client_name} pyytää oikeutta käyttää tiliäsi. Se on kolmannen osapuolen sovellus. <strong>Jos et luota siihen, älä valtuuta sitä.</strong>"
prompt_html: "%{client_name} haluaisi käyttöoikeuden tiliisi. <strong>Hyväksy tämä pyyntö vain, jos tunnistat lähteen ja luotat siihen.</strong>"
review_permissions: Tarkista käyttöoikeudet
title: Valtuutus vaaditaan
show:

View File

@ -60,7 +60,7 @@ fo:
error:
title: Ein feilur er íkomin
new:
prompt_html: "%{client_name} kundi hugsa sær atgongd til tína kontu. Tað er ein triðjaparts-nýtsluskipan. <strong>Tú skal ikki geva henni hesa heimld, um tú ikki hevur álit á henni.</strong>"
prompt_html: "%{client_name} kundi hugsað sær atgongd til tína kontu. <strong>Góðtak einans hesa umbøn, um tú kennir hesa keldu aftur og hevur álit á henni.</strong>"
review_permissions: Eftirkanna rættindi
title: Váttan kravd
show:

View File

@ -60,7 +60,6 @@ fr-CA:
error:
title: Une erreur est survenue
new:
prompt_html: "%{client_name} souhaite accéder à votre compte. Il s'agit d'une application tierce. <strong>Si vous ne lui faites pas confiance, vous ne devriez pas l'y autoriser.</strong>"
review_permissions: Examiner les autorisations
title: Autorisation requise
show:

View File

@ -60,7 +60,6 @@ fr:
error:
title: Une erreur est survenue
new:
prompt_html: "%{client_name} souhaite accéder à votre compte. Il s'agit d'une application tierce. <strong>Vous ne devriez pas l'y autoriser si vous ne lui faites pas confiance.</strong>"
review_permissions: Examiner les autorisations
title: Autorisation requise
show:

View File

@ -60,7 +60,6 @@ fy:
error:
title: Der is in flater bard
new:
prompt_html: "%{client_name} hat tastimming nedich om tagong te krijen ta jo account. It giet om in tapassing fan in tredde partij.<strong>As jo dit net fertrouwe, moatte jo gjin tastimming jaan.</strong>"
review_permissions: Tastimmingen beoardiele
title: Autorisaasje fereaske
show:

View File

@ -60,7 +60,6 @@ ga:
error:
title: Tharla earráid
new:
prompt_html: Ba mhaith le %{client_name} cead rochtain a fháil ar do chuntas. Is iarratas tríú páirtí é. <strong>Mura bhfuil muinín agat as, níor cheart duit é a údarú.</strong>
review_permissions: Ceadanna a athbhreithniú
title: Tá údarú ag teastáil
show:

View File

@ -60,7 +60,7 @@ gd:
error:
title: Thachair mearachd
new:
prompt_html: Bu mhiann le %{client_name} cead gus an cunntas agad inntrigeadh. Seo aplacaid threas-phàrtaidh. <strong>Mur eil earbsa agad ann, na ùghdarraich e.</strong>
prompt_html: Bu toigh le %{client_name} cead fhaighinn airson an cunntas agad inntrigeadh. <strong>Na gabh ris an iarrtas seo ach mas aithne dhut an tùs seo agus earbsa agad ann.</strong>
review_permissions: Thoir sùil air na ceadan
title: Tha feum air ùghdarrachadh
show:

View File

@ -60,7 +60,7 @@ gl:
error:
title: Algo fallou
new:
prompt_html: "%{client_name} solicita permiso para acceder á túa conta. É unha aplicación de terceiros. <strong>Se non confías nela, non deberías autorizala.</strong>"
prompt_html: "%{client_name} solicita permiso para acceder á túa conta. <strong>Aproba esta solicitude só se recoñeces e confías da súa orixe.</strong>"
review_permissions: Revisar permisos
title: Autorización necesaria
show:

View File

@ -60,7 +60,7 @@ he:
error:
title: התרחשה שגיאה
new:
prompt_html: "%{client_name} מעוניין בהרשאה לגשת לחשבונך. זוהי אפליקציית צד-שלישי. <strong>אם יש סיבה לא לבטוח בה, נא לא לאשר.</strong>"
prompt_html: היישום %{client_name} מבקש גישה לחשבונך. <strong>אשרו רק אם אתם מזהים את הבקשה וסומכים על מקור הבקשה.</strong>
review_permissions: עיון בהרשאות
title: נדרשת הרשאה
show:

View File

@ -60,7 +60,6 @@ hu:
error:
title: Hiba történt
new:
prompt_html: "%{client_name} szeretné elérni a fiókodat. Ez egy harmadik féltől származó alkalmazás. <strong>Ha nem bízol meg benne, ne addj felhatalmazást neki.</strong>"
review_permissions: Jogosultságok áttekintése
title: Engedélyezés szükséges
show:

View File

@ -60,7 +60,6 @@ ia:
error:
title: Un error ha occurrite
new:
prompt_html: "%{client_name} vole haber le permission de acceder a tu conto. Illo es un application tertie. <strong>Si tu non confide in illo, alora tu non deberea autorisar lo.</strong>"
review_permissions: Revider permissiones
title: Autorisation necessari
show:

View File

@ -60,7 +60,6 @@ id:
error:
title: Ada yang error
new:
prompt_html: "%{client_name} meminta izin untuk mengakses akun Anda. Ini adalah aplikasi pihak ketiga. <strong>Jika Anda tidak mempercayainya, Anda boleh tidak mengizinkannya.</strong>"
review_permissions: Tinjau izin
title: Izin diperlukan
show:

View File

@ -60,7 +60,6 @@ ie:
error:
title: Alquo ha errat
new:
prompt_html: "%{client_name}, un aplication de triesim partise, vole permission por accesser tui conto. <strong>Si tu ne fide it, ne autorisa it.</strong>"
review_permissions: Inspecter permissiones
title: Autorisation besonat
show:

View File

@ -60,7 +60,6 @@ io:
error:
title: Eroro eventis
new:
prompt_html: "%{client_name} volas permiso por acesar vua konti. Ol esas externa softwaro. <strong>Se vu ne fidas, lore vu debas ne yurizar.</strong>"
review_permissions: Kontrolez permisi
title: Yurizo bezonesas
show:

View File

@ -60,7 +60,6 @@ is:
error:
title: Villa kom upp
new:
prompt_html: "%{client_name} biður um heimild til að fara inn á notandaaðganginn þinn. Þetta er utanaðkomandi hugbúnaður. <strong>Ef þú treystir ekki viðkomandi, þá ættir þú ekki að heimila þetta.</strong>"
review_permissions: Yfirfara heimildir
title: Auðkenning er nauðsynleg
show:

View File

@ -60,7 +60,7 @@ it:
error:
title: Si è verificato un errore
new:
prompt_html: "%{client_name} vorrebbe l'autorizzazione ad accedere al tuo profilo. È un'applicazione di terze parti. <strong>Se non ti fidi, non dovresti autorizzarla.</strong>"
prompt_html: "%{client_name} vorrebbe il permesso di accedere al tuo account. <strong>Approva questa richiesta solo se riconosci e ti fidi di questa fonte.</strong>"
review_permissions: Revisiona le autorizzazioni
title: Autorizzazione necessaria
show:

View File

@ -60,7 +60,6 @@ ja:
error:
title: エラーが発生しました
new:
prompt_html: "%{client_name}があなたのアカウントにアクセスする許可を求めています。<strong>心当たりが無い場合はアクセス許可しないでください。</strong>"
review_permissions: アクセス許可を確認
title: 認証が必要です
show:

View File

@ -60,7 +60,6 @@ ko:
error:
title: 오류가 발생하였습니다
new:
prompt_html: "%{client_name} 제3자 애플리케이션이 귀하의 계정에 접근하기 위한 권한을 요청하고 있습니다. <strong>이 애플리케이션을 신뢰할 수 없다면 이 요청을 승인하지 마십시오.</strong>"
review_permissions: 권한 검토
title: 승인 필요
show:

View File

@ -60,7 +60,6 @@ ku:
error:
title: Xeletîyek çêbû
new:
prompt_html: "%{client_name} mafê dixwaze ku bigihîje ajimêrê te. Ew sepanek aliyê sêyemîn e. <strong>Ku tu pê bawer nakî, wê demê divê tu mafê gihiştinê nedî. </strong>"
review_permissions: Gihiştinan binirxînin
title: Destûr kirin pêwîst e
show:

View File

@ -60,7 +60,6 @@ lad:
error:
title: Un yerro tiene afitado
new:
prompt_html: "%{client_name} kere permiso para akseder tu kuento. Es una aplikasyon de terseros. <strong>Si no konfias en eya, no deverias autorizarla.</strong>"
review_permissions: Reviza permisos
title: Autorizasyon rekerida
show:

View File

@ -60,7 +60,7 @@ lt:
error:
title: Įvyko klaida.
new:
prompt_html: "%{client_name} norėtų gauti leidimą pasiekti tavo paskyrą. Tai trečiosios šalies programa. <strong>Jei ja nepasitiki, tada neturėtum leisti.</strong>"
prompt_html: "%{client_name} norėtų gauti leidimą pasiekti tavo paskyrą. <strong>Patvirtink šį prašymą tik tada, jei atpažįsti šį šaltinį ir juo pasitiki.</strong>"
review_permissions: Peržiūrėti leidimus
title: Privalomas leidimas
show:

View File

@ -60,7 +60,6 @@ lv:
error:
title: Radās kļūda
new:
prompt_html: "%{client_name} vēlas saņemt atļauju piekļūt tavam kontam. Tā ir trešās puses lietojumprogramma. <strong>Ja tu tam neuzticies, tad nevajadzētu to autorizēt.</strong>"
review_permissions: Pārskatīt atļaujas
title: Nepieciešama autorizācija
show:

View File

@ -60,7 +60,6 @@ ms:
error:
title: Ralat telah berlaku
new:
prompt_html: "%{client_name} ingin mendapatkan kebenaran untuk mengakses akaun anda. Ia adalah aplikasi pihak ketiga. <strong>Jika anda tidak mempercayainya, maka anda tidak seharusnya membenarkannya.</strong>"
review_permissions: Semak kebenaran
title: Kebenaran diperlukan
show:

View File

@ -60,7 +60,6 @@ my:
error:
title: အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်
new:
prompt_html: "%{client_name} က သင့်အကောင့်သို့ ဝင်ရောက်ရန် ခွင့်ပြုချက်ရယူလိုပါသည်။ ၎င်းမှာ ပြင်ပကြားခံအက်ပလီကေးရှင်းတစ်ခုဖြစ်သည်။ <strong>သင် မယုံကြည်ပါက ၎င်းကိုခွင့်မပြုသင့်ပါ။</strong>"
review_permissions: ခွင့်ပြုချက်များကို ပြန်လည်သုံးသပ်ပါ
title: ခွင့်ပြုချက် လိုအပ်သည်
show:

View File

@ -60,7 +60,7 @@ nl:
error:
title: Er is een fout opgetreden
new:
prompt_html: "%{client_name} heeft toestemming nodig om toegang te krijgen tot jouw account. Het betreft een third-party-toepassing.<strong>Als je dit niet vertrouwt, moet je geen toestemming verlenen.</strong>"
prompt_html: "%{client_name} vraagt om toegang tot je account. <strong>Keur dit verzoek alleen goed als je deze bron herkent en vertrouwt.</strong>"
review_permissions: Toestemmingen beoordelen
title: Autorisatie vereist
show:

View File

@ -60,7 +60,7 @@ nn:
error:
title: Ein feil har oppstått
new:
prompt_html: "%{client_name} ønsker tilgang til kontoen din. Det er ein tredjepartsapplikasjon. <strong>Dersom du ikkje stolar på den, bør du ikkje autorisere det.</strong>"
prompt_html: "%{client_name} ynskjer tilgang til kontoen din. <strong>Godkjenn dette berre dersom du kjenner att og stolar på %{client_name}.</strong>"
review_permissions: Sjå gjennom løyve
title: Autorisasjon nødvendig
show:

View File

@ -60,7 +60,6 @@
error:
title: En feil oppstod
new:
prompt_html: "%{client_name} ønsker tilgang til kontoen din. Det er en tredjeparts applikasjon. <strong>Hvis du ikke stoler på den, bør du ikke autorisere den.</strong>"
review_permissions: Gå gjennom tillatelser
title: Autorisasjon påkrevd
show:

View File

@ -60,7 +60,6 @@ oc:
error:
title: I a agut un error
new:
prompt_html: "%{client_name} volria lautorizacion daccedir a vòstre compte. Es una aplicacion tèrça.<strong>Se vos fisatz pas a ela, alara deuriatz pas lautorizacion.</strong>"
review_permissions: Repassar las autorizacions
title: Cal lautorizacion
show:

View File

@ -60,7 +60,7 @@ pl:
error:
title: Wystapił błąd
new:
prompt_html: "%{client_name} chciałby uzyskać pozwolenie na dostęp do Twojego konta. Jest to aplikacja zewnętrzna. <strong>Jeśli jej nie ufasz, nie powinno się jej autoryzować.</strong>"
prompt_html: "%{client_name} prosi o dostęp do twojego konta. <strong>Tylko zatwierdź tę prośbę, jeżeli ją rozpoznajesz i ufasz.</strong>"
review_permissions: Sprawdź uprawnienia
title: Wymagana jest autoryzacja
show:

View File

@ -60,7 +60,6 @@ pt-BR:
error:
title: Ocorreu um erro
new:
prompt_html: O %{client_name} gostaria de ter permissão para acessar sua conta. Trata-se de uma aplicação de terceiros. <strong>Se você não confia nesta aplicação, então você não deve autorizá-la.</strong>
review_permissions: Rever permissões
title: Autorização necessária
show:

View File

@ -60,7 +60,6 @@ pt-PT:
error:
title: Ocorreu um erro
new:
prompt_html: "%{client_name} pretende ter permissão para aceder à sua conta. É uma aplicação de terceiros. <strong>Se não confia nesta aplicação, então não deve autorizá-la.</strong>"
review_permissions: Rever permissões
title: Autorização necessária
show:

View File

@ -60,7 +60,6 @@ ro:
error:
title: A apărut o eroare
new:
prompt_html: "%{client_name} dorește să îți acceseze contul. Este o aplicație terță. <strong>Dacă nu aveți încredere în ea, atunci nu ar trebui să o autorizați.</strong>"
review_permissions: Revizuiți permisiunile
title: Autorizare necesară
show:

View File

@ -60,7 +60,6 @@ ru:
error:
title: Произошла ошибка
new:
prompt_html: "%{client_name} хочет получить доступ к вашему аккаунту. Это стороннее приложение. <strong>Если вы ему не доверяете, не разрешайте доступ.</strong>"
review_permissions: Просмотр разрешений
title: Требуется авторизация
show:

View File

@ -60,7 +60,6 @@ sco:
error:
title: A error haes occurrt
new:
prompt_html: "%{client_name} wad like permission fir tae access yer accoont. It is a third-party application. <strong>Gin ye dinnae trust it, then ye shuidnae authorize it.</strong>"
review_permissions: Luik ower permissions
title: Authorization requirt
show:

View File

@ -60,7 +60,6 @@ si:
error:
title: දෝෂයක් සිදු වී ඇත
new:
prompt_html: "%{client_name} ඔබගේ ගිණුමට ප්‍රවේශ වීමට අවසර ලබා ගැනීමට කැමති වේ. එය තෙවන පාර්ශවීය යෙදුමකි. <strong>ඔබ එය විශ්වාස නොකරන්නේ නම්, ඔබ එයට අවසර නොදිය යුතුය.</strong>"
review_permissions: අවසර සමාලෝචනය
title: බලය පැවරීමේ අවශ්ය
show:

View File

@ -60,7 +60,6 @@ sk:
error:
title: Nastala chyba
new:
prompt_html: "%{client_name} žiada o povolenie na prístup k vášmu účtu. Ide o aplikáciu tretej strany. <strong>Ak jej nedôverujete, nemali by ste ju povoliť.</strong>"
review_permissions: Preskúmať povolenia
title: Je potrebné schválenie
show:

View File

@ -60,7 +60,6 @@ sl:
error:
title: Prišlo je do napake
new:
prompt_html: "%{client_name} želi dovoljenje za dostop do vašega računa. Gre za zunanji program. <strong>Če mu ne zaupate, mu ne dodelite teh pravic.</strong>"
review_permissions: Preglej dovoljenja
title: Potrebna je odobritev
show:

View File

@ -60,7 +60,6 @@ sq:
error:
title: Ndodhi një gabim
new:
prompt_html: "%{client_name} do të donte leje të hyjë në llogarinë tuaj. Është një aplikacion palësh të treta. <strong>Nëse si zini besë, atëherë sduhet ta autorizoni.</strong>"
review_permissions: Shqyrtoni leje
title: Lypset autorizim
show:

View File

@ -60,7 +60,6 @@ sr-Latn:
error:
title: Dogodila se greška
new:
prompt_html: "%{client_name} želi dozvolu za pristup tvom nalogu. U pitanju je aplikacija treće strane. <strong>Ako smatraš da nije pouzdana, ne bi trebalo da je ovlastiš.</strong>"
review_permissions: Pregledaj dozvole
title: Potrebna autorizacija
show:

View File

@ -60,7 +60,6 @@ sr:
error:
title: Догодила се грешка
new:
prompt_html: "%{client_name} жели дозволу за приступ твом налогу. У питању је апликација треће стране. <strong>Ако сматраш да није поуздана, не би требало да је овластиш.</strong>"
review_permissions: Прегледај дозволе
title: Потребна ауторизација
show:

View File

@ -60,7 +60,6 @@ sv:
error:
title: Ett fel har uppstått
new:
prompt_html: "%{client_name} vill ha behörighet att komma åt ditt konto. Det är en applikation från tredje part. <strong>Du bör endast godkänna den om du litar på den.</strong>"
review_permissions: Granska behörigheter
title: Godkännande krävs
show:

View File

@ -60,7 +60,6 @@ th:
error:
title: เกิดข้อผิดพลาด
new:
prompt_html: "%{client_name} ต้องการสิทธิอนุญาตเพื่อเข้าถึงบัญชีของคุณ แอปพลิเคชันเป็นแอปพลิเคชันจากบุคคลที่สาม <strong>หากคุณไม่เชื่อถือแอปพลิเคชัน คุณไม่ควรอนุญาตแอปพลิเคชัน</strong>"
review_permissions: ตรวจทานสิทธิอนุญาต
title: ต้องการการอนุญาต
show:

View File

@ -60,7 +60,7 @@ tr:
error:
title: Bir hata oluştu
new:
prompt_html: "%{client_name} hesabınıza erişme izni istiyor. Bu üçüncü taraf bir uygulamadır. <strong>Eğer güvenmiyorsanız, izin vermemelisiniz.</strong>"
prompt_html: "%{client_name} hesabınıze erişmek için izin istiyor. <strong>Bu isteği sadece bu kaynağı tanıyor ve güveniyorsanız onaylayın.</strong>"
review_permissions: İzinleri incele
title: İzin gerekli
show:

View File

@ -60,7 +60,7 @@ uk:
error:
title: Сталася помилка
new:
prompt_html: "%{client_name} хоче отримати доступ до вашого облікового запису. Це сторонній застосунок. <strong>Якщо ви йому не довіряєте, не варто авторизувати його.</strong>"
prompt_html: "%{client_name} хоче отримати дозвіл на доступ до вашого облікового запису. <strong>Схвалюйте цей запит, якщо ви впізнаєте це джерело і довіряєте йому.</strong>"
review_permissions: Переглянути дозволи
title: Необхідна авторизація
show:

View File

@ -60,7 +60,7 @@ vi:
error:
title: Một lỗi đã xảy ra
new:
prompt_html: "%{client_name} yêu cầu truy cập tài khoản của bạn. Đây là ứng dụng của bên thứ ba. <strong>Nếu không tin tưởng, đừng cho phép nó.</strong>"
prompt_html: "%{client_name} cần được bạn cho phép truy cập vào tài khoản. <strong>Cho phép nếu bạn tin tưởng ứng dụng này.</strong>"
review_permissions: Quyền truy cập
title: Yêu cầu truy cập
show:

View File

@ -60,7 +60,7 @@ zh-CN:
error:
title: 发生错误
new:
prompt_html: "%{client_name} 希望得到访问你账号的许可。这是一个第三方应用。<strong>如果你不信任它,那么你不应该授权它。</strong>"
prompt_html: "%{client_name} 请求获得访问您账户的权限。 <strong>请在确保自己了解并信任此来源后再批准该请求。</strong>"
review_permissions: 检查权限
title: 需要授权
show:

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