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

Merge upstream changes
This commit is contained in:
Claire 2022-02-23 20:04:23 +01:00 committed by GitHub
commit 8c9c05d579
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
76 changed files with 657 additions and 178 deletions

View file

@ -22,6 +22,7 @@ jobs:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
if: github.event_name != 'pull_request'
- uses: docker/metadata-action@v3
id: meta
with:
@ -31,6 +32,7 @@ jobs:
tags: |
type=edge,branch=main
type=semver,pattern={{ raw }}
type=ref,event=pr
- uses: docker/build-push-action@v2
with:
context: .

View file

@ -17,17 +17,7 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
data = {
policy: 'all',
alerts: {
follow: alerts_enabled,
follow_request: alerts_enabled,
favourite: alerts_enabled,
reblog: alerts_enabled,
mention: alerts_enabled,
poll: alerts_enabled,
status: alerts_enabled,
update: alerts_enabled,
},
alerts: Notification::TYPES.index_with { alerts_enabled },
}
data.deep_merge!(data_params) if params[:data]
@ -62,15 +52,6 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
end
def data_params
@data_params ||= params.require(:data).permit(:policy, alerts: [
:follow,
:follow_request,
:favourite,
:reblog,
:mention,
:poll,
:status,
:update,
])
@data_params ||= params.require(:data).permit(:policy, alerts: Notification::TYPES)
end
end

View file

@ -57,7 +57,7 @@ defineMessages({
});
const fetchRelatedRelationships = (dispatch, notifications) => {
const accountIds = notifications.filter(item => item.type === 'follow').map(item => item.account.id);
const accountIds = notifications.filter(item => ['follow', 'follow_request', 'admin.sign_up'].indexOf(item.type) !== -1).map(item => item.account.id);
if (accountIds > 0) {
dispatch(fetchRelationships(accountIds));
@ -144,6 +144,7 @@ const excludeTypesFromFilter = filter => {
'poll',
'status',
'update',
'admin.sign_up',
]);
return allTypes.filterNot(item => item === filter).toJS();

View file

@ -0,0 +1,101 @@
// Package imports.
import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { HotKeys } from 'react-hotkeys';
import classNames from 'classnames';
// Our imports.
import Permalink from 'flavours/glitch/components/permalink';
import AccountContainer from 'flavours/glitch/containers/account_container';
import NotificationOverlayContainer from '../containers/overlay_container';
import Icon from 'flavours/glitch/components/icon';
export default class NotificationFollow extends ImmutablePureComponent {
static propTypes = {
hidden: PropTypes.bool,
id: PropTypes.string.isRequired,
account: ImmutablePropTypes.map.isRequired,
notification: ImmutablePropTypes.map.isRequired,
unread: PropTypes.bool,
};
handleMoveUp = () => {
const { notification, onMoveUp } = this.props;
onMoveUp(notification.get('id'));
}
handleMoveDown = () => {
const { notification, onMoveDown } = this.props;
onMoveDown(notification.get('id'));
}
handleOpen = () => {
this.handleOpenProfile();
}
handleOpenProfile = () => {
const { notification } = this.props;
this.context.router.history.push(`/@${notification.getIn(['account', 'acct'])}`);
}
handleMention = e => {
e.preventDefault();
const { notification, onMention } = this.props;
onMention(notification.get('account'), this.context.router.history);
}
getHandlers () {
return {
moveUp: this.handleMoveUp,
moveDown: this.handleMoveDown,
open: this.handleOpen,
openProfile: this.handleOpenProfile,
mention: this.handleMention,
reply: this.handleMention,
};
}
render () {
const { account, notification, hidden, unread } = this.props;
// Links to the display name.
const displayName = account.get('display_name_html') || account.get('username');
const link = (
<bdi><Permalink
className='notification__display-name'
href={account.get('url')}
title={account.get('acct')}
to={`/@${account.get('acct')}`}
dangerouslySetInnerHTML={{ __html: displayName }}
/></bdi>
);
// Renders.
return (
<HotKeys handlers={this.getHandlers()}>
<div className={classNames('notification notification-admin-sign-up focusable', { unread })} tabIndex='0'>
<div className='notification__message'>
<div className='notification__favourite-icon-wrapper'>
<Icon fixedWidth id='user-plus' />
</div>
<FormattedMessage
id='notification.admin.sign_up'
defaultMessage='{name} signed up'
values={{ name: link }}
/>
</div>
<AccountContainer hidden={hidden} id={account.get('id')} withNote={false} />
<NotificationOverlayContainer notification={notification} />
</div>
</HotKeys>
);
}
}

View file

@ -6,6 +6,7 @@ import ClearColumnButton from './clear_column_button';
import GrantPermissionButton from './grant_permission_button';
import SettingToggle from './setting_toggle';
import PillBarButton from './pill_bar_button';
import { isStaff } from 'flavours/glitch/util/initial_state';
export default class ColumnSettings extends React.PureComponent {
@ -156,7 +157,7 @@ export default class ColumnSettings extends React.PureComponent {
</div>
<div role='group' aria-labelledby='notifications-update'>
<span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span>
<span id='notifications-update' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span>
<div className='column-settings__pillbar'>
<PillBarButton disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'update']} onChange={onChange} label={alertStr} />
@ -165,6 +166,19 @@ export default class ColumnSettings extends React.PureComponent {
<PillBarButton prefix='notifications' settings={settings} settingPath={['sounds', 'update']} onChange={onChange} label={soundStr} />
</div>
</div>
{isStaff && (
<div role='group' aria-labelledby='notifications-admin-sign-up'>
<span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.admin.sign_up' defaultMessage='New sign-ups:' /></span>
<div className='column-settings__pillbar'>
<PillBarButton disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'admin.sign_up']} onChange={onChange} label={alertStr} />
{showPushSettings && <PillBarButton prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'admin.sign_up']} onChange={this.onPushChange} label={pushStr} />}
<PillBarButton prefix='notifications' settings={settings} settingPath={['shows', 'admin.sign_up']} onChange={onChange} label={showStr} />
<PillBarButton prefix='notifications' settings={settings} settingPath={['sounds', 'admin.sign_up']} onChange={onChange} label={soundStr} />
</div>
</div>
)}
</div>
);
}

View file

@ -8,6 +8,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import StatusContainer from 'flavours/glitch/containers/status_container';
import NotificationFollow from './follow';
import NotificationFollowRequestContainer from '../containers/follow_request_container';
import NotificationAdminSignup from './admin_signup';
export default class Notification extends ImmutablePureComponent {
@ -63,6 +64,19 @@ export default class Notification extends ImmutablePureComponent {
unread={this.props.unread}
/>
);
case 'admin.sign_up':
return (
<NotificationAdminSignup
hidden={hidden}
id={notification.get('id')}
account={notification.get('account')}
notification={notification}
onMoveDown={onMoveDown}
onMoveUp={onMoveUp}
onMention={onMention}
unread={this.props.unread}
/>
);
case 'mention':
return (
<StatusContainer

View file

@ -41,6 +41,7 @@ const initialState = ImmutableMap({
poll: false,
status: false,
update: false,
'admin.sign_up': false,
}),
quickFilter: ImmutableMap({
@ -61,6 +62,7 @@ const initialState = ImmutableMap({
poll: true,
status: true,
update: true,
'admin.sign_up': true,
}),
sounds: ImmutableMap({
@ -72,6 +74,7 @@ const initialState = ImmutableMap({
poll: true,
status: true,
update: true,
'admin.sign_up': true,
}),
}),

View file

@ -45,7 +45,7 @@ defineMessages({
});
const fetchRelatedRelationships = (dispatch, notifications) => {
const accountIds = notifications.filter(item => item.type === 'follow').map(item => item.account.id);
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));
@ -132,6 +132,7 @@ const excludeTypesFromFilter = filter => {
'poll',
'status',
'update',
'admin.sign_up',
]);
return allTypes.filterNot(item => item === filter).toJS();

View file

@ -6,7 +6,7 @@ export const CircularProgress = ({ size, strokeWidth }) => {
const radius = (size - strokeWidth) / 2;
return (
<svg width={size} heigh={size} viewBox={viewBox} className='circular-progress' role='progressbar'>
<svg width={size} height={size} viewBox={viewBox} className='circular-progress' role='progressbar'>
<circle
fill='none'
cx={size / 2}

View file

@ -90,7 +90,7 @@ Object.keys(emojiIndex.emojis).forEach(key => {
let { short_names, search, unified } = emojiMartData.emojis[key];
if (short_names[0] !== key) {
throw new Error('The compresser expects the first short_code to be the ' +
throw new Error('The compressor expects the first short_code to be the ' +
'key. It may need to be rewritten if the emoji change such that this ' +
'is no longer the case.');
}

View file

@ -5,6 +5,7 @@ import { FormattedMessage } from 'react-intl';
import ClearColumnButton from './clear_column_button';
import GrantPermissionButton from './grant_permission_button';
import SettingToggle from './setting_toggle';
import { isStaff } from 'mastodon/initial_state';
export default class ColumnSettings extends React.PureComponent {
@ -155,7 +156,7 @@ export default class ColumnSettings extends React.PureComponent {
</div>
<div role='group' aria-labelledby='notifications-update'>
<span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span>
<span id='notifications-update' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span>
<div className='column-settings__row'>
<SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'update']} onChange={onChange} label={alertStr} />
@ -164,6 +165,19 @@ export default class ColumnSettings extends React.PureComponent {
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'update']} onChange={onChange} label={soundStr} />
</div>
</div>
{isStaff && (
<div role='group' aria-labelledby='notifications-admin-sign-up'>
<span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.admin.sign_up' defaultMessage='New sign-ups:' /></span>
<div className='column-settings__row'>
<SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'admin.sign_up']} onChange={onChange} label={alertStr} />
{showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'admin.sign_up']} onChange={this.onPushChange} label={pushStr} />}
<SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'admin.sign_up']} onChange={onChange} label={showStr} />
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'admin.sign_up']} onChange={onChange} label={soundStr} />
</div>
</div>
)}
</div>
);
}

View file

@ -20,6 +20,7 @@ const messages = defineMessages({
reblog: { id: 'notification.reblog', defaultMessage: '{name} boosted your status' },
status: { id: 'notification.status', defaultMessage: '{name} just posted' },
update: { id: 'notification.update', defaultMessage: '{name} edited a post' },
adminSignUp: { id: 'notification.admin.sign_up', defaultMessage: '{name} signed up' },
});
const notificationForScreenReader = (intl, message, timestamp) => {
@ -344,6 +345,28 @@ class Notification extends ImmutablePureComponent {
);
}
renderAdminSignUp (notification, account, link) {
const { intl, unread } = this.props;
return (
<HotKeys handlers={this.getHandlers()}>
<div className={classNames('notification notification-admin-sign-up focusable', { unread })} tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.adminSignUp, { name: account.get('acct') }), notification.get('created_at'))}>
<div className='notification__message'>
<div className='notification__favourite-icon-wrapper'>
<Icon id='user-plus' fixedWidth />
</div>
<span title={notification.get('created_at')}>
<FormattedMessage id='notification.admin.sign_up' defaultMessage='{name} signed up' values={{ name: link }} />
</span>
</div>
<AccountContainer id={account.get('id')} hidden={this.props.hidden} />
</div>
</HotKeys>
);
}
render () {
const { notification } = this.props;
const account = notification.get('account');
@ -367,6 +390,8 @@ class Notification extends ImmutablePureComponent {
return this.renderUpdate(notification, link);
case 'poll':
return this.renderPoll(notification, account);
case 'admin.sign_up':
return this.renderAdminSignUp(notification, account, link);
}
return null;

View file

@ -308,7 +308,7 @@
"notification.poll": "Ha finalitzat una enquesta en la que has votat",
"notification.reblog": "{name} ha impulsat el teu estat",
"notification.status": "ha publicat {name}",
"notification.update": "{name} edited a post",
"notification.update": "{name} ha editat una publicació",
"notifications.clear": "Netejar notificacions",
"notifications.clear_confirmation": "Estàs segur que vols esborrar permanentment totes les teves notificacions?",
"notifications.column_settings.alert": "Notificacions d'escriptori",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Nous tuts:",
"notifications.column_settings.unread_notifications.category": "Notificacions no llegides",
"notifications.column_settings.unread_notifications.highlight": "Destaca notificacions no llegides",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Edicions:",
"notifications.filter.all": "Tots",
"notifications.filter.boosts": "Impulsos",
"notifications.filter.favourites": "Favorits",

View file

@ -308,7 +308,7 @@
"notification.poll": "En afstemning, du deltog i, er færdig",
"notification.reblog": "{name} fremhævede dit indlæg",
"notification.status": "{name} har netop udgivet",
"notification.update": "{name} edited a post",
"notification.update": "{name} redigerede et indlæg",
"notifications.clear": "Ryd notifikationer",
"notifications.clear_confirmation": "Er du sikker på, du vil rydde alle dine notifikationer permanent?",
"notifications.column_settings.alert": "Skrivebordsnotifikationer",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Nye indlæg:",
"notifications.column_settings.unread_notifications.category": "Ulæste notifikationer",
"notifications.column_settings.unread_notifications.highlight": "Fremhæv ulæste notifikationer",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Redigeringer:",
"notifications.filter.all": "Alle",
"notifications.filter.boosts": "Fremhævelser",
"notifications.filter.favourites": "Favoritter",

View file

@ -308,7 +308,7 @@
"notification.poll": "Τελείωσε μια από τις ψηφοφορίες που συμμετείχες",
"notification.reblog": "Ο/Η {name} προώθησε την κατάστασή σου",
"notification.status": "Ο/Η {name} μόλις έγραψε κάτι",
"notification.update": "{name} edited a post",
"notification.update": "{name} επεξεργάστηκε μια δημοσίευση",
"notifications.clear": "Καθαρισμός ειδοποιήσεων",
"notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις όλες τις ειδοποιήσεις σου;",
"notifications.column_settings.alert": "Ειδοποιήσεις επιφάνειας εργασίας",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Νέα τουτ:",
"notifications.column_settings.unread_notifications.category": "Μη αναγνωσμένες ειδοποιήσεις",
"notifications.column_settings.unread_notifications.highlight": "Επισήμανση μη αναγνωσμένων ειδοποιήσεων",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Επεξεργασίες:",
"notifications.filter.all": "Όλες",
"notifications.filter.boosts": "Προωθήσεις",
"notifications.filter.favourites": "Αγαπημένα",

View file

@ -308,7 +308,7 @@
"notification.poll": "Finalizó una encuesta en la que votaste",
"notification.reblog": "{name} adhirió a tu mensaje",
"notification.status": "{name} acaba de enviar un mensaje",
"notification.update": "{name} edited a post",
"notification.update": "{name} editó un mensaje",
"notifications.clear": "Limpiar notificaciones",
"notifications.clear_confirmation": "¿Estás seguro que querés limpiar todas tus notificaciones permanentemente?",
"notifications.column_settings.alert": "Notificaciones de escritorio",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Nuevos mensajes:",
"notifications.column_settings.unread_notifications.category": "Notificaciones sin leer",
"notifications.column_settings.unread_notifications.highlight": "Resaltar notificaciones no leídas",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Ediciones:",
"notifications.filter.all": "Todas",
"notifications.filter.boosts": "Adhesiones",
"notifications.filter.favourites": "Favoritos",

View file

@ -308,7 +308,7 @@
"notification.poll": "Una encuesta en la que has votado ha terminado",
"notification.reblog": "{name} ha retooteado tu publicación",
"notification.status": "{name} acaba de publicar",
"notification.update": "{name} edited a post",
"notification.update": "{name} editó una publicación",
"notifications.clear": "Limpiar notificaciones",
"notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?",
"notifications.column_settings.alert": "Notificaciones de escritorio",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Nuevas publicaciones:",
"notifications.column_settings.unread_notifications.category": "Notificaciones sin leer",
"notifications.column_settings.unread_notifications.highlight": "Destacar notificaciones no leídas",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Ediciones:",
"notifications.filter.all": "Todos",
"notifications.filter.boosts": "Retoots",
"notifications.filter.favourites": "Favoritos",

View file

@ -47,8 +47,8 @@
"account.unmute": "Desmututu @{name}",
"account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak",
"account_note.placeholder": "Click to add a note",
"admin.dashboard.daily_retention": "User retention rate by day after sign-up",
"admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
"admin.dashboard.daily_retention": "Erabiltzaile atxikitze-tasa izena eman ondorengo eguneko",
"admin.dashboard.monthly_retention": "Erabiltzaile atxikitze-tasa izena eman ondorengo hilabeteko",
"admin.dashboard.retention.average": "Batezbestekoa",
"admin.dashboard.retention.cohort": "Izen emate hilean",
"admin.dashboard.retention.cohort_size": "Erabiltzaile berriak",
@ -105,7 +105,7 @@
"compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Save changes",
"compose_form.save_changes": "Gorde aldaketak",
"compose_form.sensitive.hide": "Markatu multimedia hunkigarri gisa",
"compose_form.sensitive.marked": "Multimedia edukia hunkigarri gisa markatu da",
"compose_form.sensitive.unmarked": "Multimedia edukia ez da hunkigarri gisa markatu",
@ -308,7 +308,7 @@
"notification.poll": "Zuk erantzun duzun inkesta bat bukatu da",
"notification.reblog": "{name}(e)k bultzada eman dio zure bidalketari",
"notification.status": "{name} erabiltzaileak bidalketa egin berri du",
"notification.update": "{name} edited a post",
"notification.update": "{name} erabiltzaileak bidalketa bat editatu du",
"notifications.clear": "Garbitu jakinarazpenak",
"notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?",
"notifications.column_settings.alert": "Mahaigaineko jakinarazpenak",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Bidalketa berriak:",
"notifications.column_settings.unread_notifications.category": "Irakurri gabeko jakinarazpenak",
"notifications.column_settings.unread_notifications.highlight": "Nabarmendu irakurri gabeko jakinarazpenak",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Edizioak:",
"notifications.filter.all": "Denak",
"notifications.filter.boosts": "Bultzadak",
"notifications.filter.favourites": "Gogokoak",
@ -367,20 +367,20 @@
"regeneration_indicator.label": "Kargatzen…",
"regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!",
"relative_time.days": "{number}e",
"relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
"relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
"relative_time.full.just_now": "just now",
"relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago",
"relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
"relative_time.full.days": "Duela {number, plural, one {egun #} other {# egun}}",
"relative_time.full.hours": "Duela {number, plural, one {ordu #} other {# ordu}}",
"relative_time.full.just_now": "oraintxe",
"relative_time.full.minutes": "Duela {number, plural, one {minutu #} other {# minutu}}",
"relative_time.full.seconds": "Duela {number, plural, one {segundo #} other {# segundo}}",
"relative_time.hours": "{number}h",
"relative_time.just_now": "orain",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "gaur",
"reply_indicator.cancel": "Utzi",
"report.categories.other": "Other",
"report.categories.other": "Bestelakoak",
"report.categories.spam": "Spam",
"report.categories.violation": "Content violates one or more server rules",
"report.categories.violation": "Edukiak zerbitzariko arau bat edo gehiago urratzen ditu",
"report.forward": "Birbidali hona: {target}",
"report.forward_hint": "Kontu hau beste zerbitzari batekoa da. Bidali txostenaren kopia anonimo hara ere?",
"report.hint": "Txostena zure zerbitzariaren moderatzaileei bidaliko zaie. Kontu hau zergatik salatzen duzun behean azaldu dezakezu:",
@ -409,14 +409,14 @@
"status.delete": "Ezabatu",
"status.detailed_status": "Elkarrizketaren ikuspegi xehetsua",
"status.direct": "Mezu zuzena @{name}(r)i",
"status.edit": "Edit",
"status.edited": "Edited {date}",
"status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
"status.edit": "Editatu",
"status.edited": "Editatua {date}",
"status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua",
"status.embed": "Txertatu",
"status.favourite": "Gogokoa",
"status.filtered": "Iragazita",
"status.history.created": "{name} created {date}",
"status.history.edited": "{name} edited {date}",
"status.history.created": "{name} erabiltzaileak sortua {date}",
"status.history.edited": "{name} erabiltzaileak editatua {date}",
"status.load_more": "Kargatu gehiago",
"status.media_hidden": "Multimedia ezkutatua",
"status.mention": "Aipatu @{name}",

View file

@ -308,7 +308,7 @@
"notification.poll": "Kysely, johon osallistuit, on päättynyt",
"notification.reblog": "{name} buustasi julkaisusi",
"notification.status": "{name} julkaisi juuri",
"notification.update": "{name} edited a post",
"notification.update": "{name} muokkasi viestiä",
"notifications.clear": "Tyhjennä ilmoitukset",
"notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?",
"notifications.column_settings.alert": "Työpöytäilmoitukset",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Uudet julkaisut:",
"notifications.column_settings.unread_notifications.category": "Lukemattomat ilmoitukset",
"notifications.column_settings.unread_notifications.highlight": "Korosta lukemattomat ilmoitukset",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Muokkaukset:",
"notifications.filter.all": "Kaikki",
"notifications.filter.boosts": "Buustit",
"notifications.filter.favourites": "Suosikit",

View file

@ -13,7 +13,7 @@
"account.domain_blocked": "Domaine bloqué",
"account.edit_profile": "Modifier le profil",
"account.enable_notifications": "Me notifier quand @{name} publie",
"account.endorse": "Recommander sur le profil",
"account.endorse": "Recommander sur votre profil",
"account.follow": "Suivre",
"account.followers": "Abonnés",
"account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour linstant.",
@ -47,7 +47,7 @@
"account.unmute": "Ne plus masquer @{name}",
"account.unmute_notifications": "Ne plus masquer les notifications de @{name}",
"account_note.placeholder": "Cliquez pour ajouter une note",
"admin.dashboard.daily_retention": "User retention rate by day after sign-up",
"admin.dashboard.daily_retention": "Taux de maintien des utilisateur·rice·s par jour après inscription",
"admin.dashboard.monthly_retention": "Brugerfastholdelsesrate efter måned efter tilmelding",
"admin.dashboard.retention.average": "Moyenne",
"admin.dashboard.retention.cohort": "Mois d'inscription",
@ -308,7 +308,7 @@
"notification.poll": "Un sondage auquel vous avez participé vient de se terminer",
"notification.reblog": "{name} a partagé votre message",
"notification.status": "{name} vient de publier",
"notification.update": "{name} edited a post",
"notification.update": "{name} a modifié un message",
"notifications.clear": "Effacer les notifications",
"notifications.clear_confirmation": "Voulez-vous vraiment effacer toutes vos notifications?",
"notifications.column_settings.alert": "Notifications du navigateur",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Nouveaux messages :",
"notifications.column_settings.unread_notifications.category": "Notifications non lues",
"notifications.column_settings.unread_notifications.highlight": "Surligner les notifications non lues",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Modifications :",
"notifications.filter.all": "Tout",
"notifications.filter.boosts": "Partages",
"notifications.filter.favourites": "Favoris",
@ -415,8 +415,8 @@
"status.embed": "Intégrer",
"status.favourite": "Ajouter aux favoris",
"status.filtered": "Filtré",
"status.history.created": "{name} created {date}",
"status.history.edited": "{name} edited {date}",
"status.history.created": "créé par {name} {date}",
"status.history.edited": "édité par {name} {date}",
"status.load_more": "Charger plus",
"status.media_hidden": "Média caché",
"status.mention": "Mentionner @{name}",

View file

@ -308,7 +308,7 @@
"notification.poll": "Unha enquisa na que votaches rematou",
"notification.reblog": "{name} compartiu a túa publicación",
"notification.status": "{name} publicou",
"notification.update": "{name} edited a post",
"notification.update": "{name} editou unha publicación",
"notifications.clear": "Limpar notificacións",
"notifications.clear_confirmation": "Tes a certeza de querer limpar de xeito permanente todas as túas notificacións?",
"notifications.column_settings.alert": "Notificacións de escritorio",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Novas publicacións:",
"notifications.column_settings.unread_notifications.category": "Notificacións non lidas",
"notifications.column_settings.unread_notifications.highlight": "Resaltar notificacións non lidas",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Edicións:",
"notifications.filter.all": "Todo",
"notifications.filter.boosts": "Compartidos",
"notifications.filter.favourites": "Favoritos",

View file

@ -308,7 +308,7 @@
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "חצרוצך הודהד על ידי {name}",
"notification.status": "{name} just posted",
"notification.update": "{name} edited a post",
"notification.update": "{name} ערכו פוסט",
"notifications.clear": "הסרת התראות",
"notifications.clear_confirmation": "להסיר את כל ההתראות? בטוח?",
"notifications.column_settings.alert": "התראות לשולחן העבודה",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "New toots:",
"notifications.column_settings.unread_notifications.category": "Unread notifications",
"notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "שינויים:",
"notifications.filter.all": "All",
"notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favourites",

View file

@ -308,7 +308,7 @@
"notification.poll": "Egy szavazás, melyben részt vettél, véget ért",
"notification.reblog": "{name} megtolta a bejegyzésedet",
"notification.status": "{name} bejegyzést tett közzé",
"notification.update": "{name} edited a post",
"notification.update": "{name} szerkesztett egy bejegyzést",
"notifications.clear": "Értesítések törlése",
"notifications.clear_confirmation": "Biztos, hogy véglegesen törölni akarod az összes értesítésed?",
"notifications.column_settings.alert": "Asztali értesítések",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Új bejegyzések:",
"notifications.column_settings.unread_notifications.category": "Olvasatlan értesítések",
"notifications.column_settings.unread_notifications.highlight": "Olvasatlan értesítések kiemelése",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Szerkesztések:",
"notifications.filter.all": "Mind",
"notifications.filter.boosts": "Megtolások",
"notifications.filter.favourites": "Kedvencnek jelölések",

View file

@ -308,7 +308,7 @@
"notification.poll": "Japat yang Anda ikuti telah berakhir",
"notification.reblog": "{name} mem-boost status anda",
"notification.status": "{name} baru saja memposting",
"notification.update": "{name} edited a post",
"notification.update": "{name} mengedit kiriman",
"notifications.clear": "Hapus notifikasi",
"notifications.clear_confirmation": "Apa anda yakin hendak menghapus semua notifikasi anda?",
"notifications.column_settings.alert": "Notifikasi desktop",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Toot baru:",
"notifications.column_settings.unread_notifications.category": "Notifikasi yang belum dibaca",
"notifications.column_settings.unread_notifications.highlight": "Sorot notifikasi yang belum dibaca",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Edit:",
"notifications.filter.all": "Semua",
"notifications.filter.boosts": "Boost",
"notifications.filter.favourites": "Favorit",

View file

@ -308,7 +308,7 @@
"notification.poll": "Könnun sem þú tókst þátt í er lokið",
"notification.reblog": "{name} endurbirti færsluna þína",
"notification.status": "{name} sendi inn rétt í þessu",
"notification.update": "{name} edited a post",
"notification.update": "{name} breytti færslu",
"notifications.clear": "Hreinsa tilkynningar",
"notifications.clear_confirmation": "Ertu viss um að þú viljir endanlega eyða öllum tilkynningunum þínum?",
"notifications.column_settings.alert": "Tilkynningar á skjáborði",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Nýjar færslur:",
"notifications.column_settings.unread_notifications.category": "Ólesnar tilkynningar",
"notifications.column_settings.unread_notifications.highlight": "Áherslulita ólesnar tilkynningar",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Breytingar:",
"notifications.filter.all": "Allt",
"notifications.filter.boosts": "Endurbirtingar",
"notifications.filter.favourites": "Eftirlæti",

View file

@ -308,7 +308,7 @@
"notification.poll": "Un sondaggio in cui hai votato è terminato",
"notification.reblog": "{name} ha condiviso il tuo post",
"notification.status": "{name} ha appena pubblicato un post",
"notification.update": "{name} edited a post",
"notification.update": "{name} ha modificato un post",
"notifications.clear": "Cancella notifiche",
"notifications.clear_confirmation": "Vuoi davvero cancellare tutte le notifiche?",
"notifications.column_settings.alert": "Notifiche desktop",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Nuovi post:",
"notifications.column_settings.unread_notifications.category": "Notifiche non lette",
"notifications.column_settings.unread_notifications.highlight": "Evidenzia notifiche non lette",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Modifiche:",
"notifications.filter.all": "Tutti",
"notifications.filter.boosts": "Condivisioni",
"notifications.filter.favourites": "Apprezzati",

View file

@ -313,7 +313,7 @@
"notification.poll": "アンケートが終了しました",
"notification.reblog": "{name}さんがあなたの投稿をブーストしました",
"notification.status": "{name}さんが投稿しました",
"notification.update": "{name} edited a post",
"notification.update": "{name} が投稿を編集しました",
"notifications.clear": "通知を消去",
"notifications.clear_confirmation": "本当に通知を消去しますか?",
"notifications.column_settings.alert": "デスクトップ通知",

View file

@ -308,7 +308,7 @@
"notification.poll": "Rapirsiyeke ku te deng daye qediya",
"notification.reblog": "{name} şandiya te bilind kir",
"notification.status": "{name} niha şand",
"notification.update": "{name} edited a post",
"notification.update": "{name} şandiyek serrast kir",
"notifications.clear": "Agahdariyan pak bike",
"notifications.clear_confirmation": "Bi rastî tu dixwazî bi awayekî dawî hemû agahdariyên xwe pak bikî?",
"notifications.column_settings.alert": "Agahdariyên sermaseyê",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Şandiyên nû:",
"notifications.column_settings.unread_notifications.category": "Agahdariyên nexwendî",
"notifications.column_settings.unread_notifications.highlight": "Agahiyên nexwendî nîşan bike",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Serrastkirin:",
"notifications.filter.all": "Hemû",
"notifications.filter.boosts": "Bilindkirî",
"notifications.filter.favourites": "Bijarte",

View file

@ -308,7 +308,7 @@
"notification.poll": "당신이 참여 한 투표가 종료되었습니다",
"notification.reblog": "{name} 님이 부스트 했습니다",
"notification.status": "{name} 님이 방금 게시물을 올렸습니다",
"notification.update": "{name} edited a post",
"notification.update": "{name} 님이 게시물을 수정했습니다",
"notifications.clear": "알림 지우기",
"notifications.clear_confirmation": "정말로 알림을 삭제하시겠습니까?",
"notifications.column_settings.alert": "데스크탑 알림",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "새 게시물:",
"notifications.column_settings.unread_notifications.category": "읽지 않은 알림",
"notifications.column_settings.unread_notifications.highlight": "읽지 않은 알림 강조",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "수정내역:",
"notifications.filter.all": "모두",
"notifications.filter.boosts": "부스트",
"notifications.filter.favourites": "즐겨찾기",

View file

@ -308,7 +308,7 @@
"notification.poll": "Aprauja, kurā tu piedalījies, ir pabeigta",
"notification.reblog": "{name} paaugstināja tavu ziņu",
"notification.status": "{name} tikko publicēja",
"notification.update": "{name} edited a post",
"notification.update": "{name} ir rediģējis rakstu",
"notifications.clear": "Notīrīt paziņojumus",
"notifications.clear_confirmation": "Vai tiešām vēlies neatgriezeniski notīrīt visus savus paziņojumus?",
"notifications.column_settings.alert": "Darbvirsmas paziņojumi",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Jaunas ziņas:",
"notifications.column_settings.unread_notifications.category": "Nelasītie paziņojumi",
"notifications.column_settings.unread_notifications.highlight": "Iezīmēt nelasītos paziņojumus",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Labojumi:",
"notifications.filter.all": "Visi",
"notifications.filter.boosts": "Palielinājumi",
"notifications.filter.favourites": "Izlases",

View file

@ -313,7 +313,7 @@
"notification.poll": "Głosowanie w którym brałeś(-aś) udział zakończyło się",
"notification.reblog": "{name} podbił(a) Twój wpis",
"notification.status": "{name} właśnie utworzył(a) wpis",
"notification.update": "{name} edited a post",
"notification.update": "{name} edytował post",
"notifications.clear": "Wyczyść powiadomienia",
"notifications.clear_confirmation": "Czy na pewno chcesz bezpowrotnie usunąć wszystkie powiadomienia?",
"notifications.column_settings.alert": "Powiadomienia na pulpicie",
@ -332,7 +332,7 @@
"notifications.column_settings.status": "Nowe wpisy:",
"notifications.column_settings.unread_notifications.category": "Nieprzeczytane powiadomienia",
"notifications.column_settings.unread_notifications.highlight": "Podświetl nieprzeczytane powiadomienia",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Edycje:",
"notifications.filter.all": "Wszystkie",
"notifications.filter.boosts": "Podbicia",
"notifications.filter.favourites": "Ulubione",

View file

@ -308,7 +308,7 @@
"notification.poll": "Uma votação em que participaste chegou ao fim",
"notification.reblog": "{name} partilhou a tua publicação",
"notification.status": "{name} acabou de publicar",
"notification.update": "{name} edited a post",
"notification.update": "{name} editou uma publicação",
"notifications.clear": "Limpar notificações",
"notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?",
"notifications.column_settings.alert": "Notificações no ambiente de trabalho",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Novos toots:",
"notifications.column_settings.unread_notifications.category": "Notificações não lidas",
"notifications.column_settings.unread_notifications.highlight": "Destacar notificações não lidas",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Edições:",
"notifications.filter.all": "Todas",
"notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favoritos",

View file

@ -35,7 +35,7 @@
"account.never_active": "Никогда",
"account.posts": "Посты",
"account.posts_with_replies": "Посты и ответы",
"account.report": "Жалоба №{name}",
"account.report": "Пожаловаться на @{name}",
"account.requested": "Ожидает подтверждения. Нажмите для отмены запроса",
"account.share": "Поделиться профилем @{name}",
"account.show_reblogs": "Показывать продвижения от @{name}",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Новые посты:",
"notifications.column_settings.unread_notifications.category": "Непрочитанные уведомления",
"notifications.column_settings.unread_notifications.highlight": "Выделять непрочитанные уведомления",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Изменения:",
"notifications.filter.all": "Все",
"notifications.filter.boosts": "Продвижения",
"notifications.filter.favourites": "Отметки «избранного»",

View file

@ -308,7 +308,7 @@
"notification.poll": "Ka përfunduar një pyetësor ku keni votuar",
"notification.reblog": "{name} përforcoi mesazhin tuaj",
"notification.status": "{name} sapo postoi",
"notification.update": "{name} edited a post",
"notification.update": "{name} përpunoi një postim",
"notifications.clear": "Spastroji njoftimet",
"notifications.clear_confirmation": "Jeni i sigurt se doni të spastrohen përgjithmonë krejt njoftimet tuaja?",
"notifications.column_settings.alert": "Njoftime desktopi",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Mesazhe të rinj:",
"notifications.column_settings.unread_notifications.category": "Njoftime të palexuara",
"notifications.column_settings.unread_notifications.highlight": "Theksoji njoftimet e palexuara",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Përpunime:",
"notifications.filter.all": "Krejt",
"notifications.filter.boosts": "Përforcime",
"notifications.filter.favourites": "Të parapëlqyer",

View file

@ -308,7 +308,7 @@
"notification.poll": "En omröstning du röstat i har avslutats",
"notification.reblog": "{name} knuffade din status",
"notification.status": "{name} skrev just",
"notification.update": "{name} edited a post",
"notification.update": "{name} redigerade ett inlägg",
"notifications.clear": "Rensa aviseringar",
"notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?",
"notifications.column_settings.alert": "Skrivbordsaviseringar",

View file

@ -308,7 +308,7 @@
"notification.poll": "การสำรวจความคิดเห็นที่คุณได้ลงคะแนนได้สิ้นสุดแล้ว",
"notification.reblog": "{name} ได้ดันโพสต์ของคุณ",
"notification.status": "{name} เพิ่งโพสต์",
"notification.update": "{name} edited a post",
"notification.update": "{name} ได้แก้ไขโพสต์",
"notifications.clear": "ล้างการแจ้งเตือน",
"notifications.clear_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการล้างการแจ้งเตือนทั้งหมดของคุณอย่างถาวร?",
"notifications.column_settings.alert": "การแจ้งเตือนบนเดสก์ท็อป",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "โพสต์ใหม่:",
"notifications.column_settings.unread_notifications.category": "การแจ้งเตือนที่ยังไม่ได้อ่าน",
"notifications.column_settings.unread_notifications.highlight": "เน้นการแจ้งเตือนที่ยังไม่ได้อ่าน",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "การแก้ไข:",
"notifications.filter.all": "ทั้งหมด",
"notifications.filter.boosts": "การดัน",
"notifications.filter.favourites": "รายการโปรด",

View file

@ -308,7 +308,7 @@
"notification.poll": "Oy verdiğiniz bir anket sona erdi",
"notification.reblog": "{name} gönderini teşvik etti",
"notification.status": "{name} az önce gönderdi",
"notification.update": "{name} edited a post",
"notification.update": "{name} bir gönderiyi düzenledi",
"notifications.clear": "Bildirimleri temizle",
"notifications.clear_confirmation": "Tüm bildirimlerinizi kalıcı olarak temizlemek ister misiniz?",
"notifications.column_settings.alert": "Masaüstü bildirimleri",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Yeni gönderiler:",
"notifications.column_settings.unread_notifications.category": "Okunmamış bildirimler",
"notifications.column_settings.unread_notifications.highlight": "Okunmamış bildirimleri öne çıkar",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Düzenlemeler:",
"notifications.filter.all": "Tümü",
"notifications.filter.boosts": "Boostlar",
"notifications.filter.favourites": "Beğeniler",

View file

@ -308,7 +308,7 @@
"notification.poll": "Опитування, у якому ви голосували, закінчилося",
"notification.reblog": "{name} передмухнув(-ла) Ваш допис",
"notification.status": "{name} щойно дописує",
"notification.update": "{name} edited a post",
"notification.update": "{name} змінює допис",
"notifications.clear": "Очистити сповіщення",
"notifications.clear_confirmation": "Ви впевнені, що хочете назавжди видалити всі сповіщеня?",
"notifications.column_settings.alert": "Сповіщення на комп'ютері",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Нові дмухи:",
"notifications.column_settings.unread_notifications.category": "Непрочитані сповіщення",
"notifications.column_settings.unread_notifications.highlight": "Виділити непрочитані сповіщення",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Зміни:",
"notifications.filter.all": "Усі",
"notifications.filter.boosts": "Передмухи",
"notifications.filter.favourites": "Улюблені",

View file

@ -308,7 +308,7 @@
"notification.poll": "Cuộc bình chọn đã kết thúc",
"notification.reblog": "{name} chia sẻ tút của bạn",
"notification.status": "{name} vừa đăng",
"notification.update": "{name} edited a post",
"notification.update": "{name} đã viết lại một tút",
"notifications.clear": "Xóa hết thông báo",
"notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?",
"notifications.column_settings.alert": "Thông báo trên máy tính",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "Tút mới:",
"notifications.column_settings.unread_notifications.category": "Thông báo chưa đọc",
"notifications.column_settings.unread_notifications.highlight": "Nổi bật thông báo chưa đọc",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Lượt sửa:",
"notifications.filter.all": "Toàn bộ",
"notifications.filter.boosts": "Chia sẻ",
"notifications.filter.favourites": "Thích",

View file

@ -308,7 +308,7 @@
"notification.poll": "你参与的一个投票已经结束",
"notification.reblog": "{name} 转嘟了你的嘟文",
"notification.status": "{name} 刚刚发嘟",
"notification.update": "{name} edited a post",
"notification.update": "{name} 编辑了嘟文",
"notifications.clear": "清空通知列表",
"notifications.clear_confirmation": "你确定要永久清空通知列表吗?",
"notifications.column_settings.alert": "桌面通知",

View file

@ -308,7 +308,7 @@
"notification.poll": "您曾投過的投票已經結束",
"notification.reblog": "{name} 轉嘟了您的嘟文",
"notification.status": "{name} 剛剛嘟文",
"notification.update": "{name} edited a post",
"notification.update": "{name} 編輯了嘟文",
"notifications.clear": "清除通知",
"notifications.clear_confirmation": "確定要永久清除您的通知嗎?",
"notifications.column_settings.alert": "桌面通知",
@ -327,7 +327,7 @@
"notifications.column_settings.status": "新嘟文:",
"notifications.column_settings.unread_notifications.category": "未讀通知",
"notifications.column_settings.unread_notifications.highlight": "突顯未讀通知",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "編輯:",
"notifications.filter.all": "全部",
"notifications.filter.boosts": "轉嘟",
"notifications.filter.favourites": "最愛",
@ -367,11 +367,11 @@
"regeneration_indicator.label": "載入中…",
"regeneration_indicator.sublabel": "您的主頁時間軸正在準備中!",
"relative_time.days": "{number} 天",
"relative_time.full.days": "{number, plural, one {# 天} other {# 天}} 前",
"relative_time.full.hours": "{number, plural, one {# 小時} other {# 小時}} 前",
"relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前",
"relative_time.full.hours": "{number, plural, one {# 小時} other {# 小時}}前",
"relative_time.full.just_now": "剛剛",
"relative_time.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}} 前",
"relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}} 前",
"relative_time.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}前",
"relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前",
"relative_time.hours": "{number}小時前",
"relative_time.just_now": "剛剛",
"relative_time.minutes": "{number} 分前",
@ -410,7 +410,7 @@
"status.detailed_status": "詳細的對話內容",
"status.direct": "發送私訊給 @{name}",
"status.edit": "編輯",
"status.edited": "已編輯:{date}",
"status.edited": "編輯於 {date}",
"status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}",
"status.embed": "內嵌",
"status.favourite": "最愛",

View file

@ -37,6 +37,7 @@ const initialState = ImmutableMap({
poll: false,
status: false,
update: false,
'admin.sign_up': false,
}),
quickFilter: ImmutableMap({
@ -57,6 +58,7 @@ const initialState = ImmutableMap({
poll: true,
status: true,
update: true,
'admin.sign_up': true,
}),
sounds: ImmutableMap({
@ -68,6 +70,7 @@ const initialState = ImmutableMap({
poll: true,
status: true,
update: true,
'admin.sign_up': true,
}),
}),

View file

@ -22,6 +22,7 @@ filenames.forEach(filename => {
'notification.poll': full['notification.poll'] || '',
'notification.status': full['notification.status'] || '',
'notification.update': full['notification.update'] || '',
'notification.admin.sign_up': full['notification.admin.sign_up'] || '',
'status.show_more': full['status.show_more'] || '',
'status.reblog': full['status.reblog'] || '',

View file

@ -549,7 +549,7 @@ class FeedManager
end
else
# A reblog may reach earlier than the original status because of the
# delay of the worker deliverying the original status, the late addition
# delay of the worker delivering the original status, the late addition
# by merging timelines, and other reasons.
# If such a reblog already exists, just do not re-insert it into the feed.
return false unless redis.zscore(reblog_key, status.id).nil?

View file

@ -36,6 +36,7 @@ class Notification < ApplicationRecord
favourite
poll
update
admin.sign_up
).freeze
TARGET_STATUS_INCLUDES_BY_TYPE = {
@ -63,13 +64,10 @@ class Notification < ApplicationRecord
scope :without_suspended, -> { joins(:from_account).merge(Account.without_suspended) }
scope :browserable, ->(exclude_types = [], account_id = nil) {
types = TYPES - exclude_types.map(&:to_sym)
if account_id.nil?
where(type: types)
else
where(type: types, from_account_id: account_id)
end
scope = all
scope = where(from_account_id: account_id) if account_id.present?
scope = scope.where(type: TYPES - exclude_types.map(&:to_sym)) unless exclude_types.empty?
scope
}
def type
@ -142,6 +140,8 @@ class Notification < ApplicationRecord
self.from_account_id = activity&.account_id
when 'Mention'
self.from_account_id = activity&.status&.account_id
when 'Account'
self.from_account_id = activity&.id
end
end
end

View file

@ -5,6 +5,7 @@ class BootstrapTimelineService < BaseService
@source_account = source_account
autofollow_inviter!
notify_staff!
end
private
@ -14,4 +15,10 @@ class BootstrapTimelineService < BaseService
FollowService.new.call(@source_account, @source_account.user.invite.user.account)
end
def notify_staff!
User.staff.includes(:account).find_each do |user|
NotifyService.new.call(user.account, :'admin.sign_up', @source_account)
end
end
end

View file

@ -2,7 +2,7 @@
class FetchLinkCardService < BaseService
URL_PATTERN = %r{
(#{Twitter::TwitterText::Regex[:valid_url_preceding_chars]}) # $1 preceeding chars
(#{Twitter::TwitterText::Regex[:valid_url_preceding_chars]}) # $1 preceding chars
( # $2 URL
(https?:\/\/) # $3 Protocol (required)
(#{Twitter::TwitterText::Regex[:valid_domain]}) # $4 Domain(s)

View file

@ -22,34 +22,6 @@ class NotifyService < BaseService
FeedManager.instance.filter?(:mentions, @notification.mention.status, @recipient)
end
def blocked_status?
false
end
def blocked_favourite?
false
end
def blocked_follow?
false
end
def blocked_reblog?
false
end
def blocked_follow_request?
false
end
def blocked_poll?
false
end
def blocked_update?
false
end
def following_sender?
return @following_sender if defined?(@following_sender)
@following_sender = @recipient.following?(@notification.from_account) || @recipient.requested?(@notification.from_account)
@ -71,7 +43,7 @@ class NotifyService < BaseService
message? && @notification.target_status.direct_visibility?
end
# Returns true if the sender has been mentionned by the recipient up the thread
# Returns true if the sender has been mentioned by the recipient up the thread
def response_to_recipient?
return false if @notification.target_status.in_reply_to_id.nil?
@ -149,15 +121,15 @@ class NotifyService < BaseService
return blocked if message? && from_staff?
blocked ||= domain_blocking? # Skip for domain blocked accounts
blocked ||= @recipient.blocking?(@notification.from_account) # Skip for blocked accounts
blocked ||= domain_blocking?
blocked ||= @recipient.blocking?(@notification.from_account)
blocked ||= @recipient.muting_notifications?(@notification.from_account)
blocked ||= hellbanned? # Hellban
blocked ||= optional_non_follower? # Options
blocked ||= optional_non_following? # Options
blocked ||= optional_non_following_and_direct? # Options
blocked ||= hellbanned?
blocked ||= optional_non_follower?
blocked ||= optional_non_following?
blocked ||= optional_non_following_and_direct?
blocked ||= conversation_muted?
blocked ||= send("blocked_#{@notification.type}?") # Type-dependent filters
blocked ||= blocked_mention? if @notification.type == :mention
blocked
end

View file

@ -13,4 +13,4 @@
<%= t('admin_mailer.new_trending_tags.no_approved_tags') %>
<% end %>
<%= raw t('application_mailer.view')%> <%= admin_trends_tags_url(pending_review: '1') %>
<%= raw t('application_mailer.view')%> <%= admin_trends_tags_url(status: 'pending_review') %>

View file

@ -62,6 +62,7 @@ ignore_unused:
- 'themes.*'
- 'statuses.attached.*'
- 'move_handler.carry_{mutes,blocks}_over_text'
- 'notification_mailer.*'
ignore_inconsistent_interpolations:
- '*.one'

View file

@ -2,7 +2,7 @@
# in the Links header per default.
# In our case, that will bloat headers too much and potentially cause
# issues with reverse proxies. Furhermore, we don't need those links,
# issues with reverse proxies. Furthermore, we don't need those links,
# as we already output them as HTML link tags.
Rails.application.config.action_view.preload_links_header = false

View file

@ -3,7 +3,7 @@ lv:
activerecord:
attributes:
poll:
expires_at: Gala termiņš
expires_at: Deadline
options: Izvēles
user:
agreement: Pakalpojuma līgums

View file

@ -55,7 +55,7 @@ th:
subject: 'Mastodon: เปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยแล้ว'
title: เปิดใช้งาน 2FA แล้ว
two_factor_recovery_codes_changed:
explanation: ยกเลิกรหัสกู้คืนก่อนหน้าและสร้างรหัสใหม่แล้ว
explanation: ยกเลิกรหัสกู้คืนก่อนหน้านี้และสร้างรหัสใหม่แล้ว
subject: 'Mastodon: สร้างรหัสกู้คืนสองปัจจัยใหม่แล้ว'
title: เปลี่ยนรหัสกู้คืน 2FA แล้ว
unlock_instructions:

View file

@ -1176,6 +1176,9 @@ en:
carry_mutes_over_text: This user moved from %{acct}, which you had muted.
copy_account_note_text: 'This user moved from %{acct}, here were your previous notes about them:'
notification_mailer:
admin:
sign_up:
subject: "%{name} signed up"
digest:
action: View all notifications
body: Here is a brief summary of the messages you missed since your last visit on %{since}

View file

@ -110,6 +110,7 @@ eu:
confirm: Berretsi
confirmed: Berretsita
confirming: Berresten
custom: Pertsonalizatua
delete: Ezabatu datuak
deleted: Ezabatua
demote: Jaitsi mailaz
@ -201,6 +202,7 @@ eu:
silenced: Isilarazita
statuses: Bidalketa
subscribe: Harpidetu
suspend: Kanporatu
suspended: Kanporatuta
suspension_irreversible: Kontu honen datuak behin betiko ezabatu dira. Kontua kanporatzea atzera bota dezakezu, berriz erabilgarri izan dadin, baina datuak ezingo dira berreskuratu.
suspension_reversible_hint_html: Kontu hau kanporatua izan da eta bere datuak %{date}(e)an behin betiko ezabatuko dira. Ordura arte kontua kalterik gabe leheneratu daiteke. Kontuaren datu guztiak oraintxe bertan ezabatu nahi badituzu, jarraian egin dezakezu.
@ -221,6 +223,7 @@ eu:
whitelisted: Zerrenda zurian
action_logs:
action_types:
approve_appeal: Onartu apelazioa
approve_user: Onartu erabiltzailea
assigned_to_self_report: Esleitu salaketa
change_email_user: Aldatu erabiltzailearen e-maila
@ -252,6 +255,7 @@ eu:
enable_user: Gaitu erabiltzailea
memorialize_account: Bihurtu kontua oroigarri
promote_user: Igo erabiltzailea mailaz
reject_appeal: Baztertu apelazioa
reject_user: Baztertu erabiltzailea
remove_avatar_user: Kendu abatarra
reopen_report: Berrireki txostena
@ -270,6 +274,7 @@ eu:
update_domain_block: Eguneratu domeinu-blokeoa
update_status: Eguneratu bidalketa
actions:
approve_appeal_html: "%{name} erabiltzaileak %{target} erabiltzailearen moderazio erabakiaren apelazioa onartu du"
approve_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen izen-ematea onartu du"
assigned_to_self_report_html: "%{name} erabiltzaileak %{target} salaketa bere buruari esleitu dio"
change_email_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen e-posta helbidea aldatu du"
@ -301,6 +306,7 @@ eu:
enable_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen saioa gaitu du"
memorialize_account_html: "%{name} erabiltzaileak %{target} kontua memoriala bihurtu du"
promote_user_html: "%{name} erabiltzaileak %{target} erabiltzailea mailaz igo du"
reject_appeal_html: "%{name} erabiltzaileak %{target} erabiltzailearen moderazio erabakiaren apelazioa baztertu du"
reject_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen izen-ematea baztertu du"
remove_avatar_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen abatarra kendu du"
reopen_report_html: "%{name} erabiltzaileak %{target} txostena berrireki du"
@ -387,6 +393,10 @@ eu:
top_languages: Hizkuntza aktiboenak
top_servers: Zerbitzari aktiboenak
website: Webgunea
disputes:
appeals:
empty: Ez da apelaziorik aurkitu.
title: Apelazioak
domain_allows:
add_new: Sartu domeinua zerrenda zurian
created_msg: Domeinua ongi sartu da zerrenda zurian
@ -424,6 +434,10 @@ eu:
silence: isilarazia
suspend: kanporatua
show:
affected_accounts:
one: Datu-baseko kontu bati eragiten dio
other: Datu-baseko %{count} konturi eragiten die
zero: Ez die eragiten datu-baseko kontuei
retroactive:
silence: Kendu isilarazteko agindua domeinu honetako kontu guztiei
suspend: Kendu kanporatzeko agindua domeinu honetako kontu guztiei
@ -474,6 +488,10 @@ eu:
delivery_error_hint: Banaketa ezin bada %{count} egunean egin, banaezin bezala markatuko da automatikoki.
destroyed_msg: "%{domain} domeinuko datuak berehala ezabatzeko ilaran daude orain."
empty: Ez da domeinurik aurkitu.
known_accounts:
one: Kontu ezagun %{count}
other: "%{count} kontu ezagun"
zero: Kontu ezagunik ez
moderation:
all: Denak
limited: Mugatua
@ -531,41 +549,61 @@ eu:
report_notes:
created_msg: Salaketa oharra ongi sortu da!
destroyed_msg: Salaketa oharra ongi ezabatu da!
today_at: Gaur %{time}(e)tan
reports:
account:
notes:
one: Ohar %{count}
other: "%{count} ohar"
action_log: Auditoria-egunkaria
action_taken_by: Neurrien hartzailea
actions:
other_description_html: Ikusi kontuaren portaera kontrolatzeko eta salatutako kontuarekin komunikazioa pertsonalizatzeko aukera gehiago.
silence_description_html: Profila dagoeneko jarraitzen dutenei edo eskuz bilatzen dutenei bakarrik agertuko zaie, bere irismena asko mugatuz. Beti bota daiteke atzera.
suspend_description_html: Profila eta bere eduki guztiak iritsiezinak bihurtuko dira, ezabatzen den arte. Kontuarekin ezin da interakziorik eduki. Atzera bota daiteke 30 eguneko epean.
actions_description_html: Erabaki txosten hau konpontzeko ze ekintza hartu. Salatutako kontuaren aurka zigor ekintza bat hartzen baduzu, eposta jakinarazpen bat bidaliko zaie, <strong>Spam</strong> kategoria hautatzean ezik.
add_to_report: Gehitu gehiago txostenera
are_you_sure: Ziur zaude?
assign_to_self: Esleitu niri
assigned: Esleitutako moderatzailea
by_target_domain: Jakinarazitako kontuaren domeinua
category: Kategoria
category_description_html: Kontu edo/eta eduki hau salatu izanaren arrazoia salatutako kontuarekiko komunikazioan aipatuko da
comment:
none: Bat ere ez
comment_description_html: 'Informazio gehiago emateko, %{name} idatzi:'
created_at: Salatua
delete_and_resolve: Ezabatu bidalketak
forwarded: Birbidalia
forwarded_to: 'Hona birbidalia: %{domain}'
mark_as_resolved: Markatu konpondutako gisa
mark_as_unresolved: Markatu konpondu gabeko gisa
no_one_assigned: Inor ez
notes:
create: Gehitu oharra
create_and_resolve: Konpondu ohar batekin
create_and_unresolve: Berrireki ohar batekin
delete: Ezabatu
placeholder: Azaldu hartutako neurriak, edo erlazioa duten bestelako berriak...
title: Oharrak
notes_description_html: Ikusi eta idatzi oharrak beste moderatzaileentzat eta zuretzat etorkizunerako
quick_actions_description_html: 'Hartu ekintza azkar bat edo korritu behera salatutako edukia ikusteko:'
reopen: Berrireki salaketa
report: 'Salaketa #%{id}'
reported_account: Salatutako kontua
reported_by: Salatzailea
resolved: Konponduta
resolved_msg: Salaketa ongi konpondu da!
skip_to_actions: Salto ekintzetara
status: Mezua
statuses: Salatutako edukia
statuses_description_html: Salatutako edukia salatutako kontuarekiko komunikazioan aipatuko da
target_origin: Salatutako kontuaren jatorria
title: Salaketak
unassign: Kendu esleipena
unresolved: Konpondu gabea
updated_at: Eguneratua
view_profile: Ikusi profila
rules:
add_new: Gehitu araua
delete: Ezabatu
@ -667,12 +705,21 @@ eu:
destroyed_msg: Guneko igoera ongi ezabatu da!
statuses:
back_to_account: Atzera kontuaren orrira
back_to_report: Atzera txostenaren orrira
batch:
remove_from_report: Kendu txostenetik
report: Salatu
deleted: Ezabatuta
media:
title: Multimedia
no_status_selected: Ez da bidalketarik aldatu ez delako bidalketarik aukeratu
title: Kontuaren bidalketak
with_media: Multimediarekin
strikes:
actions:
delete_statuses: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketak ezabatu ditu"
disable: "%{name} erabiltzailea %{target} erabiltzailearen kontua izoztu du"
none: "%{name} erabiltzaileak abisua bidali dio %{target} erabiltzaileari"
system_checks:
database_schema_check:
message_html: Aplikatu gabeko datu-basearen migrazioak daude. Exekutatu aplikazioak esperotako portaera izan dezan

View file

@ -162,6 +162,11 @@ fi:
not_subscribed: Ei tilaaja
pending: Odottaa tarkistusta
perform_full_suspension: Siirrä kokonaan jäähylle
previous_strikes: Aiemmat varoitukset
previous_strikes_description_html:
one: Tällä tilillä on <strong>yksi</strong> varoitus.
other: Tällä tilillä on <strong>%{count}</strong> varoitusta.
zero: Tämä tili on <strong>hyvässä kunnossa</strong>.
promote: Ylennä
protocol: Protokolla
public: Julkinen
@ -226,6 +231,7 @@ fi:
whitelisted: Sallittu liittämiselle
action_logs:
action_types:
approve_appeal: Hyväksy valitus
approve_user: Hyväksy käyttäjä
assigned_to_self_report: Määritä raportti
change_email_user: Vaihda sähköposti käyttäjälle
@ -257,6 +263,7 @@ fi:
enable_user: Tili otettu käyttöön
memorialize_account: Muuta muistotiliksi
promote_user: Käyttäjä ylennetty
reject_appeal: Hylkää valitus
reject_user: Hylkää käyttäjä
remove_avatar_user: Profiilikuvan poisto
reopen_report: Uudelleenavaa raportti
@ -275,6 +282,7 @@ fi:
update_domain_block: Päivitä verkkotunnuksen esto
update_status: Päivitä viesti
actions:
approve_appeal_html: "%{name} hyväksyi moderointipäätöksen muutoksenhaun lähettäjältä %{target}"
approve_user_html: "%{name} hyväksyi käyttäjän rekisteröitymisen kohteesta %{target}"
assigned_to_self_report_html: "%{name} otti raportin %{target} tehtäväkseen"
change_email_user_html: "%{name} vaihtoi käyttäjän %{target} sähköpostiosoitteen"
@ -306,6 +314,7 @@ fi:
enable_user_html: "%{name} salli kirjautumisen käyttäjälle %{target}"
memorialize_account_html: "%{name} muutti käyttäjän %{target} tilin muistosivuksi"
promote_user_html: "%{name} ylensi käyttäjän %{target}"
reject_appeal_html: "%{name} hylkäsi moderointipäätöksen muutoksenhaun %{target}"
reject_user_html: "%{name} hylkäsi käyttäjän rekisteröitymisen kohteesta %{target}"
remove_avatar_user_html: "%{name} poisti käyttäjän %{target} profiilikuvan"
reopen_report_html: "%{name} avasi uudelleen raportin %{target}"
@ -384,6 +393,18 @@ fi:
media_storage: Median tallennustila
new_users: uudet käyttäjät
opened_reports: raportit avattu
pending_appeals_html:
one: "<strong>%{count}</strong> vireillä oleva valitus"
other: "<strong>%{count}</strong> vireillä olevat valitukset"
pending_reports_html:
one: "<strong>%{count}</strong> odottava raportti"
other: "<strong>%{count}</strong> odottavat raportit"
pending_tags_html:
one: "<strong>%{count}</strong> odottava hashtagi"
other: "<strong>%{count}</strong> odottavat hashtagit"
pending_users_html:
one: "<strong>%{count}</strong> odottava käyttäjä"
other: "<strong>%{count}</strong> odottavat käyttäjät"
resolved_reports: raportit ratkaistu
software: Ohjelmisto
sources: Kirjautumisen lähteet
@ -392,6 +413,10 @@ fi:
top_languages: Aktiiviset kielet
top_servers: Aktiiviset palvelimet
website: Sivusto
disputes:
appeals:
empty: Valituksia ei löytynyt.
title: Valitukset
domain_allows:
add_new: Salli liitto verkkotunnuksella
created_msg: Verkkotunnus on onnistuneesti sallittu federaatiolle
@ -429,6 +454,10 @@ fi:
silence: hiljennetty
suspend: jäähyllä
show:
affected_accounts:
one: Tämä vaikuttaa yhteen tiliin tietokannassa
other: Vaikuttaa %{count} tiliin tietokannassa
zero: Tämä ei vaikuta mihinkään tietokannan tiliin
retroactive:
silence: Peru kaikkien tässä verkkotunnuksessa jo olemassa olevien tilien hiljennys
suspend: Peru kaikkien tässä verkkotunnuksessa jo olemassa olevien tilien jäähy
@ -471,11 +500,18 @@ fi:
unavailable: Ei saatavilla
unavailable_message: Toimitus ei käytettävissä
warning: Varoitus
warning_message:
one: Toimitusvirhe %{count} päivä
other: Toimitushäiriö %{count} päivää
delivery_available: Toimitus on saatavilla
delivery_error_days: Toimitusvirheen päivät
delivery_error_hint: Jos toimitus ei ole mahdollista %{count} päivän aikana, se merkitään automaattisesti toimittamattomaksi.
destroyed_msg: Tiedot %{domain} on nyt jonossa välitöntä poistoa varten.
empty: Verkkotunnuksia ei löytynyt.
known_accounts:
one: "%{count} tunnettu tili"
other: "%{count} tunnettua tiliä"
zero: Ei tunnettua tiliä
moderation:
all: Kaikki
limited: Rajoitettu
@ -535,6 +571,10 @@ fi:
destroyed_msg: Muistiinpano onnistuneesti poistettu raportista!
today_at: Tänään klo %{time}
reports:
account:
notes:
one: "%{count} ilmoitus"
other: "%{count} ilmoitusta"
action_log: Tarkastusloki
action_taken_by: Toimenpiteen tekijä
actions:
@ -901,6 +941,12 @@ fi:
directory: Profiilihakemisto
explanation: Löydä käyttäjiä heidän kiinnostustensa mukaan
explore_mastodon: Tutki %{title}ia
disputes:
strikes:
created_at: Päivätty
recipient: Osoitettu
status: 'Viesti #%{id}'
status_removed: Viesti on jo poistettu järjestelmästä
domain_validator:
invalid_domain: ei ole kelvollinen toimialueen nimi
errors:
@ -1359,6 +1405,7 @@ fi:
formats:
default: "%d.%m.%Y klo %H.%M"
month: "%b %Y"
time: "%H:%M"
two_factor_authentication:
add: Lisää
disable: Poista käytöstä
@ -1385,12 +1432,17 @@ fi:
subject: Ole hyvä ja vahvista sisäänkirjautumisyritys
title: Sisäänkirjautumisyritys
warning:
categories:
spam: Roskaposti
reason: 'Syy:'
subject:
disable: Tilisi %{acct} on jäädytetty
none: Varoitus %{acct}
title:
delete_statuses: Viestit poistettu
disable: Tili jäädytetty
none: Varoitus
sensitive: Media piilotettu
silence: Rajoitettu tili
suspend: Tilin käyttäminen keskeytetty
welcome:

View file

@ -16,11 +16,11 @@ fr:
contact: Contact
contact_missing: Non défini
contact_unavailable: Non disponible
discover_users: Découvrez des utilisateurs
discover_users: Découvrez des utilisateur·rice·s
documentation: Documentation
federation_hint_html: Avec un compte sur %{instance}, vous pourrez suivre les gens sur nimporte quel serveur Mastodon et au-delà.
federation_hint_html: Avec un compte sur %{instance}, vous pourrez suivre des gens sur nimporte quel serveur Mastodon et au-delà.
get_apps: Essayez une application mobile
hosted_on: Serveur Mastodon hébergé par %{domain}
hosted_on: Serveur Mastodon hébergé sur %{domain}
instance_actor_flash: |
Ce compte est un acteur virtuel utilisé pour représenter le serveur lui-même et non un·e utilisateur·rice individuel·le.
Il est utilisé à des fins de fédération et ne doit pas être bloqué à moins que vous ne vouliez bloquer linstance entière, auquel cas vous devriez utiliser un blocage de domaine.
@ -35,7 +35,7 @@ fr:
one: message
other: messages
status_count_before: Ayant publié
tagline: Suivez vos amis et découvrez-en de nouveaux
tagline: Suivez vos ami·e·s et découvrez-en de nouveaux·elles
terms: Conditions dutilisation
unavailable_content: Serveurs modérés
unavailable_content_description:
@ -162,6 +162,11 @@ fr:
not_subscribed: Non abonné
pending: En attente dapprobation
perform_full_suspension: Suspendre
previous_strikes: Sanctions précédentes
previous_strikes_description_html:
one: Ce compte a reçu <strong>une</strong> sanction.
other: Ce compte a reçu <strong>%{count}</strong> sanctions.
zero: Ce compte est <strong>en règle</strong>.
promote: Promouvoir
protocol: Protocole
public: Publique
@ -226,6 +231,7 @@ fr:
whitelisted: Sur liste blanche
action_logs:
action_types:
approve_appeal: Approuver l'appel
approve_user: Approuver lutilisateur
assigned_to_self_report: Affecter le signalement
change_email_user: Modifier le courriel pour
@ -257,6 +263,7 @@ fr:
enable_user: Activer lutilisateur
memorialize_account: Ériger en mémorial
promote_user: Promouvoir lutilisateur
reject_appeal: Rejeter l'appel
reject_user: Rejeter lutilisateur
remove_avatar_user: Supprimer lavatar
reopen_report: Rouvrir le signalement
@ -275,6 +282,7 @@ fr:
update_domain_block: Mettre à jour le blocage de domaine
update_status: Mettre à jour le message
actions:
approve_appeal_html: "%{name} a approuvé l'appel de la décision de modération émis par %{target}"
approve_user_html: "%{name} a approuvé linscription de %{target}"
assigned_to_self_report_html: "%{name} sest assigné·e le signalement de %{target}"
change_email_user_html: "%{name} a modifié l'adresse de courriel de l'utilisateur·rice %{target}"
@ -306,6 +314,7 @@ fr:
enable_user_html: "%{name} a activé la connexion de l'utilisateur·rice %{target}"
memorialize_account_html: "%{name} a converti le compte de %{target} en un mémorial"
promote_user_html: "%{name} a promu l'utilisateur·rice %{target}"
reject_appeal_html: "%{name} a rejeté l'appel de la décision de modération émis par %{target}"
reject_user_html: "%{name} a rejeté linscription de %{target}"
remove_avatar_user_html: "%{name} a supprimé l'avatar de %{target}"
reopen_report_html: "%{name} a rouvert le signalement %{target}"
@ -384,6 +393,9 @@ fr:
media_storage: Stockage des médias
new_users: nouveaux utilisateurs
opened_reports: rapports ouverts
pending_appeals_html:
one: "<strong>%{count}</strong> appel en attente"
other: "<strong>%{count}</strong> appels en attente"
pending_reports_html:
one: "<strong>%{count}</strong> rapport en attente"
other: "<strong>%{count}</strong> rapports en attente"
@ -401,6 +413,10 @@ fr:
top_languages: Langues les plus actives
top_servers: Serveurs les plus actifs
website: Site Web
disputes:
appeals:
empty: Aucun appel trouvé.
title: Appels
domain_allows:
add_new: Mettre le domaine sur liste sur blanche
created_msg: Ce domaine a été ajouté à la liste blanche avec succès
@ -562,9 +578,12 @@ fr:
action_log: Journal daudit
action_taken_by: Intervention de
actions:
delete_description_html: Les messages signalés seront supprimés et une sanction sera enregistrée pour vous aider à prendre les mesures appropriées en cas d'infractions futures par le même compte.
other_description_html: Voir plus d'options pour contrôler le comportement du compte et personnaliser la communication vers le compte signalé.
resolve_description_html: Aucune mesure ne sera prise contre le compte signalé, aucune sanction ne sera enregistrée et le sigalement sera clôturé.
silence_description_html: Le profil ne sera visible que pour ceux qui le suivent déjà ou le consultent manuellement, ce qui limite considérablement sa portée. Peut toujours être restauré.
suspend_description_html: Le profil et tout son contenu deviendront inaccessibles jusqu'à ce qu'il soit éventuellement supprimé. Interagir avec le compte sera impossible. Réversible dans les 30 jours.
actions_description_html: Décidez des mesures à prendre pour résoudre ce signalement. Si vous prenez des mesures punitives contre le compte signalé, une notification sera envoyée par e-mail, sauf si la catégorie <strong>Spam</strong> est sélectionnée.
add_to_report: Ajouter davantage au rapport
are_you_sure: Voulez-vous vraiment faire ça ?
assign_to_self: Me lassigner
@ -718,6 +737,16 @@ fr:
no_status_selected: Aucun statut na été modifié car aucun na été sélectionné
title: Messages du compte
with_media: Avec médias
strikes:
actions:
delete_statuses: "%{name} a supprimé les messages de %{target}"
disable: "%{name} a bloqué le compte de %{target}"
none: "%{name} a envoyé un avertissement à %{target}"
sensitive: "%{name} a marqué le compte de %{target} comme sensible"
silence: "%{name} a limité le compte de %{target}"
suspend: "%{name} a suspendu le compte de %{target}"
appeal_approved: Appel soumis
appeal_pending: Appel en attente
system_checks:
database_schema_check:
message_html: Vous avez des migrations de base de données en attente. Veuillez les exécuter pour vous assurer que l'application se comporte comme prévu
@ -739,6 +768,10 @@ fr:
allow_provider: Autoriser l'éditeur
disallow: Interdire le lien
disallow_provider: Interdire l'éditeur
shared_by_over_week:
one: Partagé par une personne au cours de la semaine dernière
other: Partagé par %{count} personnes au cours de la semaine dernière
zero: Non partagé au cours de la semaine dernière
title: Liens tendances
usage_comparison: Partagé %{today} fois aujourd'hui, comparé à %{yesterday} hier
pending_review: En attente de révision
@ -765,6 +798,10 @@ fr:
trending_rank: 'Tendance #%{rank}'
usable: Peut être utilisé
usage_comparison: Utilisé %{today} fois aujourd'hui, comparé à %{yesterday} hier
used_by_over_week:
one: Utilisé par une personne au cours de la semaine dernière
other: Utilisé par %{count} personnes au cours de la semaine dernière
zero: Non utilisé au cours de la semaine dernière
title: Tendances
warning_presets:
add_new: Ajouter un nouveau
@ -773,6 +810,17 @@ fr:
empty: Vous n'avez pas encore créé de paramètres prédéfinis pour les avertissements.
title: Gérer les avertissements prédéfinis
admin_mailer:
new_appeal:
actions:
delete_statuses: effacer les messages
disable: bloquer le compte
none: un avertissement
sensitive: marquer le compte comme sensible
silence: limiter le compte
suspend: suspendre le compte
body: "%{target} fait appel de la décision de modération émise par %{action_taken_by} le %{date} et qui était : %{type}. Cette personne a écrit :"
next_steps: Vous pouvez approuver l'appel pour annuler la décision de modération, ou l'ignorer.
subject: "%{username} fait appel d'une décision de modération sur %{instance}"
new_pending_account:
body: Les détails du nouveau compte se trouvent ci-dessous. Vous pouvez approuver ou rejeter cette demande.
subject: Nouveau compte à examiner sur %{instance} (%{username})
@ -928,6 +976,31 @@ fr:
directory: Annuaire des profils
explanation: Découvrir des utilisateur·rice·s en fonction de leurs centres dintérêt
explore_mastodon: Explorer %{title}
disputes:
strikes:
action_taken: Mesure prise
appeal_approved: Cette sanction a été annulée en appel et n'est plus valide
appeal_rejected: L'appel a été rejeté
appeal_submitted_at: Appel soumis le
appealed_msg: Votre demande d'appel a été soumise. Si elle est approuvée, vous en serez informé·e.
appeals:
submit: Faire appel
associated_report: Rapport associé
created_at: En date du
recipient: Adressé à
status: 'Message #%{id}'
status_removed: Message déjà supprimé du système
title: "%{action} du %{date}"
title_actions:
delete_statuses: Suppression de message
disable: Suspension de compte
none: Avertissement
sensitive: Marquage d'un compte comme sensible
silence: Limitation du compte
suspend: Suspension de compte
your_appeal_approved: Votre appel a été approuvé
your_appeal_pending: Vous avez soumis un appel
your_appeal_rejected: Votre appel a été rejeté
domain_validator:
invalid_domain: nest pas un nom de domaine valide
errors:
@ -1222,6 +1295,9 @@ fr:
reply:
proceed: Confirmer la réponse
prompt: 'Vous souhaitez répondre à ce message :'
reports:
errors:
invalid_rules: ne fait pas référence à des règles valides
scheduled_statuses:
over_daily_limit: Vous avez dépassé la limite de %{limit} messages planifiés par jour
over_total_limit: Vous avez dépassé la limite de %{limit} messages planifiés
@ -1488,6 +1564,15 @@ fr:
recovery_instructions_html: Si vous perdez laccès à votre téléphone, vous pouvez utiliser un des codes de récupération ci-dessous pour retrouver laccès à votre compte. <strong>Conservez les codes de récupération en sécurité</strong>. Par exemple, en les imprimant et en les stockant avec vos autres documents importants.
webauthn: Clés de sécurité
user_mailer:
appeal_approved:
action: Aller à votre compte
explanation: L'appel de la sanction contre votre compte mise en place le %{strike_date} que vous avez soumis le %{appeal_date} a été approuvé. Votre compte est de nouveau en règle.
subject: Votre appel du %{date} a été approuvé
title: Appel approuvé
appeal_rejected:
explanation: L'appel de la sanction contre votre compte mise en place le %{strike_date} que vous avez soumis le %{appeal_date} a été rejeté.
subject: Votre appel du %{date} a été rejeté
title: Appel rejeté
backup_ready:
explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée!
subject: Votre archive est prête à être téléchargée
@ -1499,6 +1584,8 @@ fr:
subject: Veuillez confirmer la tentative de connexion
title: Tentative de connexion
warning:
appeal: Faire appel
appeal_description: Si vous pensez qu'il s'agit d'une erreur, vous pouvez faire appel auprès de l'équipe de %{instance}.
categories:
spam: Indésirable
violation: Le contenu viole les directives de la communauté suivantes

View file

@ -120,6 +120,10 @@ he:
reject_media: חסימת קבצי מדיה
reject_media_hint: מסירה קבצי מדיה השמורים מקומית ומונעת מהורדת קבצים נוספים בעתיד. לא רלוונטי להשעיות
show:
affected_accounts:
one: חשבון אחד במסד נתונים מושפע
other: "%{count} חשבונות במסד נתונים מושפעים"
zero: אף חשבון במסד נתונים מושפע
retroactive:
silence: הסרת השתקה מכל החשבונות על שרת זה
suspend: הסרת השעייה מכל החשבונות על שרת זה
@ -175,6 +179,17 @@ he:
remove_from_report: הסרה מהדיווח
report: דווח
title: ניהול
trends:
links:
shared_by_over_week:
one: שותף ע"י משתמש\ת אחד\ת בשבוע האחרון
other: שותף ע"י %{count} משתמשים בשבוע האחרון
zero: לא שותף בכלל בשבוע האחרון
tags:
used_by_over_week:
one: היה בשימוש משתמש\ת אחד\ת בשבוע האחרון
other: היה בשימוש ע"י %{count} משתמשים בשבוע האחרון
zero: לא היה בשימוש בכלל בשבוע האחרון
application_mailer:
settings: 'שינוי הגדרות דוא"ל: %{link}'
view: 'תצוגה:'

View file

@ -786,6 +786,10 @@ id:
trending_rank: 'Sedang tren #%{rank}'
usable: Dapat digunakan
usage_comparison: Digunakan %{today} kali hari ini, dibandingkan %{yesterday} kemarin
used_by_over_week:
one: Dipakai oleh satu orang lebih dari seminggu lalu
other: Dipakai oleh %{count} orang selama seminggu terakhir
zero: Tidak dipakai siapapun lebih dari seminggu lalu
title: Tren
warning_presets:
add_new: Tambah baru
@ -980,6 +984,12 @@ id:
delete_statuses: Penghapusan kiriman
disable: Pembekuan akun
none: Peringatan
sensitive: Tandai akun sebagai sensitif
silence: Pembatasan akun
suspend: Penangguhan akun
your_appeal_approved: Banding Anda disetujui
your_appeal_pending: Anda telah mengirim banding
your_appeal_rejected: Banding Anda ditolak
domain_validator:
invalid_domain: bukan nama domain yang valid
errors:
@ -1533,6 +1543,15 @@ id:
recovery_instructions_html: Jika anda kehilangan akses pada handphone anda, anda bisa menggunakan kode pemulihan dibawah ini untuk mendapatkan kembali akses pada akun anda. Simpan kode pemulihan anda baik-baik, misalnya dengan mencetaknya atau menyimpannya bersama dokumen penting lainnya.
webauthn: Kunci keamanan
user_mailer:
appeal_approved:
action: Ke akun Anda
explanation: Banding peringatan terhadap akun Anda pada %{strike_date} yang Anda kirim pada %{appeal_date} telah disetujui. Akun Anda akan kembali ditandai sebagai akun bagus.
subject: Banding Anda dari %{date} telah disetujui
title: Banding disetujui
appeal_rejected:
explanation: Banding terhadap akun Anda pada %{strike_date} yang Anda ajukan %{appeal_date} telah ditolak.
subject: Banding Anda dari %{date} telah ditolak
title: Banding ditolak
backup_ready:
explanation: Cadangan penuh akun Mastodon Anda sudah dapat diunduh!
subject: Arsip Anda sudah siap diunduh
@ -1544,6 +1563,8 @@ id:
subject: Harap konfirmasi usaha masuk akun
title: Usaha masuk akun
warning:
appeal: Ajukan banding
appeal_description: Jika Anda yakin ini galat, Anda dapat mengajukan banding ke staf %{instance}.
categories:
spam: Spam
violation: Konten melanggar panduan komunitas berikut

View file

@ -198,6 +198,7 @@ ja:
silenced: サイレンス済み
statuses: 投稿数
subscribe: 購読する
suspend: サスペンド
suspended: 停止済み
suspension_irreversible: このアカウントのデータは削除され元に戻せなくなります。後日アカウントの凍結を解除することはできますがデータは元に戻せません。
suspension_reversible_hint_html: アカウントは停止されており、データは %{date} に完全に削除されます。それまではアカウントを元に戻すことができます。今すぐ完全に削除したい場合は以下から行うことができます。
@ -218,6 +219,7 @@ ja:
whitelisted: 連合許可済み
action_logs:
action_types:
approve_appeal: 抗議を承認
approve_user: ユーザーの承認
assigned_to_self_report: 通報の担当者に設定
change_email_user: ユーザーのメールアドレスを変更
@ -249,6 +251,7 @@ ja:
enable_user: ユーザーを有効化
memorialize_account: 追悼アカウント化
promote_user: ユーザーを昇格
reject_appeal: 抗議を却下
reject_user: ユーザーを拒否
remove_avatar_user: アイコンを削除
reopen_report: 未解決に戻す
@ -267,6 +270,7 @@ ja:
update_domain_block: ドメインブロックを更新
update_status: 投稿を更新
actions:
approve_appeal_html: "%{name} さんが %{target} からの抗議を承認しました"
approve_user_html: "%{target} から登録された %{name} さんを承認しました"
assigned_to_self_report_html: "%{name} さんが通報 %{target} を自身の担当に割り当てました"
change_email_user_html: "%{name} さんが %{target} さんのメールアドレスを変更しました"
@ -298,6 +302,7 @@ ja:
enable_user_html: "%{name} さんが %{target} さんのログインを有効化しました"
memorialize_account_html: "%{name} さんが %{target} さんを追悼アカウントページに登録しました"
promote_user_html: "%{name} さんが %{target} さんを昇格しました"
reject_appeal_html: "%{name} さんが %{target} からの抗議を却下しました"
reject_user_html: "%{target} から登録された %{name} さんを拒否しました"
remove_avatar_user_html: "%{name} さんが %{target} さんのアイコンを削除しました"
reopen_report_html: "%{name} さんが通報 %{target} を未解決に戻しました"
@ -376,6 +381,14 @@ ja:
media_storage: メディアストレージ
new_users: 新規ユーザー
opened_reports: 新規通報
pending_appeals_html:
other: 保留中の抗議 <strong>%{count}</strong> 件
pending_reports_html:
other: 保留中の通報 <strong>%{count}</strong> 件
pending_tags_html:
other: 保留中のハッシュタグ <strong>%{count}</strong> 件
pending_users_html:
other: 保留中のユーザー <strong>%{count}</strong> 件
resolved_reports: 解決済みの通報
software: ソフトウェア
sources: サインアップソース
@ -384,6 +397,10 @@ ja:
top_languages: トップのアクティブ言語
top_servers: トップアクティブサーバー
website: ウェブサイト
disputes:
appeals:
empty: 抗議はありません。
title: 抗議
domain_allows:
add_new: 連合を許可
created_msg: 連合を許可しました
@ -893,6 +910,9 @@ ja:
directory: ディレクトリ
explanation: 関心を軸にユーザーを発見しよう
explore_mastodon: "%{title}を探索"
disputes:
strikes:
appeal: 抗議
domain_validator:
invalid_domain: は無効なドメイン名です
errors:
@ -1300,8 +1320,8 @@ ja:
enabled_hint: 設定した期間を過ぎた投稿は、以下の例外に該当しない限り、自動的に削除されます
exceptions: 例外
explanation: 投稿の削除はサーバーに負荷がかかるため、サーバーが混み合っていないときに時間をかけて行われます。
ignore_favs: お気に入りされた数を無視
ignore_reblogs: ブーストされた数を無視
ignore_favs: 設定しない
ignore_reblogs: 設定しない
interaction_exceptions: インタラクションに基づく例外
interaction_exceptions_explanation: お気に入りやブーストの基準値を一度超えてしまった投稿は、基準値を下回った後であっても、削除される保証はありません。
keep_direct: ダイレクトメッセージを保持
@ -1325,10 +1345,10 @@ ja:
'63113904': 2年
'7889238': 3ヶ月
min_age_label: 投稿を保持する期間
min_favs: これ以上お気に入りに登録された投稿を無視する
min_favs_hint: この数以上、お気に入りに登録された投稿を削除しません。空白にしておくと、お気に入りに登録された数に関わらず投稿を削除します。
min_reblogs: これ以上ブーストされた投稿を無視する
min_reblogs_hint: この数以上、ブーストされた投稿を削除しません。空白にしておくと、ブーストされた数に関わらず投稿を削除します。
min_favs: お気に入りの基準値
min_favs_hint: この数以上、お気に入りされた投稿を削除せずに残します。空白にしておくと、お気に入りに登録された数に関わらず投稿を削除します。
min_reblogs: ブーストの基準値
min_reblogs_hint: この数以上、ブーストされた投稿を削除せずに残します。空白にしておくと、ブーストされた数に関わらず投稿を削除します。
stream_entries:
pinned: 固定された投稿
reblogged: さんがブースト

View file

@ -929,7 +929,12 @@ ru:
explore_mastodon: Изучайте %{title}
disputes:
strikes:
action_taken: Предпринятые меры
appeal_approved: Это замечание было успешно обжаловано и более не действительно
appeals:
submit: Подать обжалование
created_at: Дата
recipient: Адресовано
status: 'Пост #%{id}'
title: "%{action} от %{date}"
your_appeal_approved: Ваша апелляция одобрена
@ -1293,7 +1298,7 @@ ru:
authorized_apps: Приложения
back: Назад в Mastodon
delete: Удаление учётной записи
development: Разработка
development: Разработчикам
edit_profile: Изменить профиль
export: Экспорт данных
featured_tags: Особенные хэштеги
@ -1514,6 +1519,7 @@ ru:
webauthn: Ключи безопасности
user_mailer:
appeal_approved:
action: Перейти к своему профилю
subject: Ваша апелляция от %{date} была одобрена
title: Апелляция одобрена
appeal_rejected:

View file

@ -77,16 +77,35 @@ fi:
ip_block:
comment: Valinnainen. Muista miksi lisäsit tämän säännön.
expires_in: IP-osoitteet ovat rajallinen resurssi, joskus niitä jaetaan ja vaihtavat usein omistajaa. Tästä syystä epämääräisiä IP-lohkoja ei suositella.
ip: Kirjoita IPv4- tai IPv6-osoite. Voit estää kokonaisia alueita käyttämällä CIDR-syntaksia. Varo, että et lukitse itseäsi!
severities:
no_access: Estä pääsy kaikkiin resursseihin
sign_up_requires_approval: Uudet rekisteröitymiset edellyttävät hyväksyntääsi
severity: Valitse, mitä tapahtuu tämän IP-osoitteen pyynnöille
rule:
text: Kuvaile sääntöä tai vaatimusta tämän palvelimen käyttäjille. Yritä pitää se lyhyenä ja yksinkertaisena
sessions:
otp: Syötä puhelimeen saamasi kaksivaiheisen tunnistautumisen koodi tai käytä palautuskoodia.
webauthn: Jos kyseessä on USB-avain, muista laittaa se paikalleen ja tarvittaessa napauttaa sitä.
tag:
name: Voit muuttaa esimerkiksi kirjaimia paremmin luettavaksi
user:
chosen_languages: Kun valittu, vain valituilla kielillä julkaistut viestit näkyvät julkisilla aikajanoilla
labels:
account:
fields:
name: Nimike
value: Sisältö
account_alias:
acct: Vanhan tilin käsittely
account_migration:
acct: Uuden tilin käsittely
account_warning_preset:
text: Esiasetettu teksti
title: Otsikko
admin_account_action:
include_statuses: Sisällytä raportoidut viestit sähköpostiin
send_email_notification: Ilmoita käyttäjälle sähköpostitse
text: Mukautettu varoitus
type: Toimenpide
types:
@ -99,8 +118,11 @@ fi:
announcement:
all_day: Koko päivän kestävä tapahtuma
ends_at: Tapahtuman loppu
scheduled_at: Ajasta julkaisu
starts_at: Tapahtuman alku
text: Ilmoitus
appeal:
text: Perustele, miksi tämä päätös olisi kumottava
defaults:
autofollow: Kutsu seuraamaan tiliäsi
avatar: Profiilikuva
@ -117,6 +139,9 @@ fi:
expires_in: Vanhenee
fields: Profiilin metadata
header: Otsakekuva
honeypot: "%{label} (älä täytä)"
inbox_url: Välityspostilaatikon URL-osoite
irreversible: Pudota piilottamisen sijaan
locale: Kieli
locked: Lukitse tili
max_uses: Käyttökertoja enintään
@ -134,10 +159,12 @@ fi:
setting_default_privacy: Julkaisun näkyvyys
setting_default_sensitive: Merkitse media aina arkaluontoiseksi
setting_delete_modal: Kysy vahvistusta ennen viestin poistamista
setting_disable_swiping: Poista pyyhkäisyt käytöstä
setting_display_media: Median näyttäminen
setting_display_media_default: Oletus
setting_display_media_hide_all: Piilota kaikki
setting_display_media_show_all: Näytä kaikki
setting_expand_spoilers: Laajenna aina sisältövaroituksilla merkityt viestit
setting_hide_network: Piilota verkkosi
setting_noindex: Jättäydy pois hakukoneindeksoinnista
setting_reduce_motion: Vähennä animaatioiden liikettä
@ -146,6 +173,7 @@ fi:
setting_theme: Sivuston teema
setting_trends: Näytä päivän trendit
setting_unfollow_modal: Kysy vahvistusta, ennen kuin lopetat seuraamisen
setting_use_blurhash: Näytä värikkäät liukuvärit piilotetulle medialle
setting_use_pending_items: Hidastila
severity: Vakavuus
sign_in_token_attempt: Turvakoodi
@ -166,12 +194,14 @@ fi:
invite_request:
text: Miksi haluat liittyä?
ip_block:
comment: Kommentti
ip: IP
severities:
no_access: Estä pääsy
sign_up_requires_approval: Rajoita rekisteröitymisiä
severity: Sääntö
notification_emails:
appeal: Joku valittaa valvojan päätöksestä
digest: Lähetä koosteviestejä sähköpostitse
favourite: Lähetä sähköposti, kun joku tykkää tilastasi
follow: Lähetä sähköposti, kun joku seuraa sinua
@ -179,14 +209,21 @@ fi:
mention: Lähetä sähköposti, kun sinut mainitaan
pending_account: Uusi tili tarvitsee tarkastusta
reblog: Lähetä sähköposti, kun joku buustaa julkaisusi
report: Uusi raportti on lähetetty
trending_tag: Uusi trendi vaatii tarkastelua
rule:
text: Sääntö
tag:
listable: Salli tämän hashtagin näkyä hauissa ja ehdotuksissa
name: Aihetunniste
trendable: Salli tämän aihetunnisteen näkyä trendeissä
usable: Salli postauksien käyttää tätä aihetunnistetta
'no': Ei
recommended: Suositeltu
required:
mark: "*"
text: pakollinen tieto
title:
sessions:
webauthn: Käytä jotakin suojausavainta kirjautuaksesi sisään
'yes': Kyllä

View file

@ -27,6 +27,8 @@ fr:
scheduled_at: Laisser vide pour publier lannonce immédiatement
starts_at: Optionnel. Si votre annonce est liée à une période spécifique
text: Vous pouvez utiliser la syntaxe des messages. Veuillez prendre en compte lespace que l'annonce prendra sur lécran de l'utilisateur·rice
appeal:
text: Vous ne pouvez faire appel d'une sanction qu'une seule fois
defaults:
autofollow: Les personnes qui sinscrivent grâce à linvitation vous suivront automatiquement
avatar: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px
@ -119,6 +121,8 @@ fr:
scheduled_at: Planifier la publication
starts_at: Début de lévénement
text: Annonce
appeal:
text: Expliquez pourquoi cette décision devrait être annulée
defaults:
autofollow: Invitation à suivre votre compte
avatar: Image de profil
@ -197,6 +201,7 @@ fr:
sign_up_requires_approval: Limite des inscriptions
severity: Règle
notification_emails:
appeal: Une personne fait appel d'une décision des modérateur·rice·s
digest: Envoyer des courriels récapitulatifs
favourite: Quelquun a ajouté mon message à ses favoris
follow: Quelquun vient de me suivre
@ -204,6 +209,8 @@ fr:
mention: Quelquun me mentionne
pending_account: Nouveau compte en attente dapprobation
reblog: Quelquun a partagé mon message
report: Nouveau signalement soumis
trending_tag: Nouvelle tendance nécessitant supervision
rule:
text: Règle
tag:

View file

@ -141,7 +141,7 @@ gl:
header: Cabeceira
honeypot: "%{label} (non completar)"
inbox_url: URL da caixa de entrada do repetidor
irreversible: Soltar en lugar de agochar
irreversible: Desbotar en lugar de agochar
locale: Idioma da interface
locked: Requerir aprobar seguimento
max_uses: Número máximo de usos

View file

@ -27,6 +27,8 @@ id:
scheduled_at: Biarkan kosong jika ingin menerbitkan pengumuman secara langsung
starts_at: Opsional. Persiapan jika pengumuman Anda terikat pada rentang waktu tertentu
text: Anda dapat menggunakan sintaks toot. Mohon perhatikan ruang pengumuman yang mungkin akan memenuhi layar pengguna
appeal:
text: Anda hanya dapat mengajukan banding peringatan sekali
defaults:
autofollow: Orang yang ingin mendaftar lewat undangan, otomatis mengikuti Anda
avatar: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px
@ -119,6 +121,8 @@ id:
scheduled_at: Jadwal publikasi
starts_at: Awal mulai event
text: Pengumuman
appeal:
text: Jelaskan mengapa keputusan ini perlu dibatalkan
defaults:
autofollow: Undang untuk mengikuti Anda
avatar: Avatar
@ -197,6 +201,7 @@ id:
sign_up_requires_approval: Batasi pendaftaran
severity: Aturan
notification_emails:
appeal: Seseorang mengajukan banding tehadap keputusan moderator
digest: Kirim email berisi rangkuman
favourite: Kirim email saat seseorang menyukai status anda
follow: Kirim email saat seseorang mengikuti anda
@ -204,6 +209,8 @@ id:
mention: Kirim email saat seseorang menyebut anda
pending_account: Kirim email ketika akun baru perlu ditinjau
reblog: Kirim email saat seseorang mem-boost status anda
report: Laporan baru dikirim
trending_tag: Tren baru harus ditinjau
rule:
text: Aturan
tag:

View file

@ -27,6 +27,8 @@ ru:
scheduled_at: Оставьте поля незаполненными, чтобы опубликовать объявление сразу
starts_at: Необязательно. На случай, если ваше объявление привязано к какому-то временному интервалу
text: Вы можете использовать тот же синтаксис, что и в постах. Будьте предусмотрительны насчёт места, которое займёт объявление на экране пользователей
appeal:
text: Вы можете обжаловать замечание только один раз
defaults:
autofollow: Люди, пришедшие по этому приглашению, автоматически будут подписаны на вас.
avatar: Поддерживается PNG, GIF и JPG. Максимальный размер — %{size}. Будет уменьшен до %{dimensions}px.

View file

@ -27,6 +27,8 @@ th:
scheduled_at: เว้นว่างไว้เพื่อเผยแพร่ประกาศทันที
starts_at: ไม่จำเป็น ในกรณีที่ประกาศของคุณผูกไว้กับช่วงเวลาที่เฉพาะเจาะจง
text: คุณสามารถใช้ไวยากรณ์โพสต์ โปรดระวังพื้นที่ที่ประกาศจะใช้ในหน้าจอของผู้ใช้
appeal:
text: คุณสามารถอุทธรณ์การลงโทษได้เพียงครั้งเดียวเท่านั้น
defaults:
autofollow: ผู้คนที่ลงทะเบียนผ่านคำเชิญจะติดตามคุณโดยอัตโนมัติ
avatar: PNG, GIF หรือ JPG สูงสุด %{size} จะถูกย่อขนาดเป็น %{dimensions}px

View file

@ -150,6 +150,10 @@ th:
not_subscribed: ไม่ได้บอกรับ
pending: การตรวจทานที่รอดำเนินการ
perform_full_suspension: ระงับ
previous_strikes: การลงโทษก่อนหน้านี้
previous_strikes_description_html:
one: บัญชีนี้มี <strong>หนึ่ง</strong> การลงโทษ
other: บัญชีนี้มี <strong>%{count}</strong> การลงโทษ
promote: เลื่อนขั้น
protocol: โปรโตคอล
public: สาธารณะ
@ -190,6 +194,7 @@ th:
silence: จำกัด
silenced: จำกัดอยู่
statuses: โพสต์
strikes: การลงโทษก่อนหน้านี้
subscribe: บอกรับ
suspend: ระงับ
suspended: ระงับอยู่
@ -369,6 +374,14 @@ th:
media_storage: ที่เก็บข้อมูลสื่อ
new_users: ผู้ใช้ใหม่
opened_reports: รายงานที่เปิด
pending_appeals_html:
other: "<strong>%{count}</strong> การอุทธรณ์ที่รอดำเนินการ"
pending_reports_html:
other: "<strong>%{count}</strong> รายงานที่รอดำเนินการ"
pending_tags_html:
other: "<strong>%{count}</strong> แฮชแท็กที่รอดำเนินการ"
pending_users_html:
other: "<strong>%{count}</strong> ผู้ใช้ที่รอดำเนินการ"
resolved_reports: รายงานที่แก้ปัญหาแล้ว
software: ซอฟต์แวร์
sources: แหล่งที่มาการลงทะเบียน
@ -413,6 +426,10 @@ th:
silence: จำกัดอยู่
suspend: ระงับอยู่
show:
affected_accounts:
one: หนึ่งบัญชีในฐานข้อมูลที่ได้รับผลกระทบ
other: "%{count} บัญชีในฐานข้อมูลที่ได้รับผลกระทบ"
zero: ไม่มีบัญชีในฐานข้อมูลที่ได้รับผลกระทบ
retroactive:
silence: เลิกทำการจำกัดบัญชีที่มีผลที่มีอยู่จากโดเมนนี้
suspend: เลิกระงับบัญชีที่มีผลที่มีอยู่จากโดเมนนี้
@ -457,6 +474,10 @@ th:
delivery_available: มีการจัดส่ง
delivery_error_days: วันที่มีข้อผิดพลาดการจัดส่ง
empty: ไม่พบโดเมน
known_accounts:
one: "%{count} บัญชีที่รู้จัก"
other: "%{count} บัญชีที่รู้จัก"
zero: ไม่มีบัญชีที่รู้จัก
moderation:
all: ทั้งหมด
limited: จำกัดอยู่
@ -518,6 +539,7 @@ th:
notes:
other: "%{count} หมายเหตุ"
action_log: รายการบันทึกการตรวจสอบ
action_taken_by: ใช้การกระทำโดย
are_you_sure: คุณแน่ใจหรือไม่?
assign_to_self: มอบหมายให้ฉัน
assigned: ผู้ควบคุมที่ได้รับมอบหมาย
@ -691,6 +713,10 @@ th:
allow_provider: อนุญาตผู้เผยแพร่
disallow: ไม่อนุญาตลิงก์
disallow_provider: ไม่อนุญาตผู้เผยแพร่
shared_by_over_week:
one: แบ่งปันโดยหนึ่งคนในช่วงสัปดาห์ที่ผ่านมา
other: แบ่งปันโดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา
zero: ไม่มีใครแบ่งปันในช่วงสัปดาห์ที่ผ่านมา
title: ลิงก์ที่กำลังนิยม
usage_comparison: แบ่งปัน %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้
pending_review: การตรวจทานที่รอดำเนินการ
@ -717,6 +743,10 @@ th:
trending_rank: 'กำลังนิยม #%{rank}'
usable: สามารถใช้
usage_comparison: ใช้ %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้
used_by_over_week:
one: ใช้โดยหนึ่งคนในช่วงสัปดาห์ที่ผ่านมา
other: ใช้โดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา
zero: ไม่มีใครใช้ในช่วงสัปดาห์ที่ผ่านมา
title: แนวโน้ม
warning_presets:
add_new: เพิ่มใหม่
@ -878,10 +908,13 @@ th:
explore_mastodon: สำรวจ %{title}
disputes:
strikes:
action_taken: การกระทำที่ใช้
appeal_submitted_at: ส่งการอุทธรณ์แล้ว
appeals:
submit: ส่งการอุทธรณ์
associated_report: รายงานที่เกี่ยวข้อง
created_at: ลงวันที่
recipient: ส่งถึง
status: 'โพสต์ #%{id}'
title_actions:
delete_statuses: การเอาโพสต์ออก
@ -1039,7 +1072,7 @@ th:
move_handler:
carry_blocks_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ปิดกั้น
carry_mutes_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ซ่อน
copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้าของคุณเกี่ยวกับผู้ใช้:'
copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้านี้ของคุณเกี่ยวกับผู้ใช้:'
notification_mailer:
digest:
action: ดูการแจ้งเตือนทั้งหมด
@ -1292,7 +1325,7 @@ th:
reblogged: ดันแล้ว
sensitive_content: เนื้อหาที่ละเอียดอ่อน
tags:
does_not_match_previous_name: ไม่ตรงกับชื่อก่อนหน้า
does_not_match_previous_name: ไม่ตรงกับชื่อก่อนหน้านี้
terms:
title: เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัวของ %{instance}
themes:

View file

@ -15,7 +15,7 @@ class FixReblogsInFeeds < ActiveRecord::Migration[5.1]
# feed, with an entry in a reblog tracking zset (where the score
# is once again set to the reblogging status' ID, and the value
# is set to the reblogged status' ID). This is safe for Redis'
# float coersion because in this reblog tracking zset, we only
# float conversion because in this reblog tracking zset, we only
# need the rebloggging status' ID to be able to stop tracking
# entries after they have gotten too far down the feed, which
# does not require an exact value.

View file

@ -54,7 +54,7 @@ module Mastodon
ActiveRecord::Base.connection.add_index(:media_attachments, :remote_url, name: :index_media_attachments_remote_url, where: 'remote_url is not null', algorithm: :concurrently, if_not_exists: true)
max_id = Mastodon::Snowflake.id_at(options[:days].days.ago)
max_id = Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false)
start_at = Time.now.to_f
unless options[:continue] && ActiveRecord::Base.connection.table_exists?('statuses_to_be_deleted')

View file

@ -18,7 +18,7 @@ describe Settings::TwoFactorAuthentication::OtpAuthenticationController do
user.update(otp_required_for_login: true)
end
it 'redirects to two factor authentciation methods list page' do
it 'redirects to two factor authentication methods list page' do
get :show
expect(response).to redirect_to settings_two_factor_authentication_methods_path

View file

@ -29,7 +29,7 @@ RSpec.describe Web::PushSubscription, type: :model do
context "when notification is a #{type}" do
let(:notification_type) { type }
it "returns boolean corresonding to alert setting" do
it "returns boolean corresponding to alert setting" do
expect(subject.pushable?(notification)).to eq data[:alerts][type]
end
end

View file

@ -66,7 +66,7 @@ RSpec.describe BlockDomainService, type: :service do
expect(Account.find_remote('badguy', 'evil.org').silenced_at).to_not eq DomainBlock.find_by(domain: 'evil.org').created_at
end
it 'leaves the domains status and attachements, but clears media' do
it 'leaves the domains status and attachments, but clears media' do
expect { bad_status1.reload }.not_to raise_error
expect { bad_status2.reload }.not_to raise_error
expect { bad_attachment.reload }.not_to raise_error

View file

@ -13,7 +13,7 @@ RSpec.describe ClearDomainMediaService, type: :service do
subject.call(DomainBlock.create!(domain: 'evil.org', severity: :silence, reject_media: true))
end
it 'leaves the domains status and attachements, but clears media' do
it 'leaves the domains status and attachments, but clears media' do
expect { bad_status1.reload }.not_to raise_error
expect { bad_status2.reload }.not_to raise_error
expect { bad_attachment.reload }.not_to raise_error

View file

@ -90,7 +90,7 @@ RSpec.describe DeleteAccountService, type: :service do
let!(:account) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub) }
let!(:local_follower) { Fabricate(:account) }
it 'sends a reject follow to follwer inboxes' do
it 'sends a reject follow to follower inboxes' do
subject.call
expect(a_request(:post, account.inbox_url)).to have_been_made.once
end

View file

@ -27,7 +27,7 @@ RSpec.describe UnreservedUsernameValidator, type: :validator do
context 'reserved_username?' do
let(:reserved_username) { true }
it 'calls erros.add' do
it 'calls errors.add' do
expect(errors).to have_received(:add).with(:username, :reserved)
end
end
@ -35,7 +35,7 @@ RSpec.describe UnreservedUsernameValidator, type: :validator do
context '!reserved_username?' do
let(:reserved_username) { false }
it 'not calls erros.add' do
it 'not calls errors.add' do
expect(errors).not_to have_received(:add).with(:username, any_args)
end
end