1
0
mirror of https://github.com/funamitech/mastodon synced 2024-11-27 14:29:03 +09:00
This commit is contained in:
Noa Himesaka 2023-10-01 20:01:10 +09:00
commit dcbe49f91b
99 changed files with 813 additions and 390 deletions

4
.bundler-audit.yml Normal file
View File

@ -0,0 +1,4 @@
---
ignore:
# Sidekiq security issue, fixes in the latest Sidekiq 7 but we can not upgrade. Will be fixed in Sidekiq 6.5.10
- CVE-2023-26141

View File

@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.4
# This needs to be bookworm-slim because the Ruby image is built on bookworm-slim
ARG NODE_VERSION="20.6-bookworm-slim"
ARG NODE_VERSION="20.7-bookworm-slim"
FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
FROM node:${NODE_VERSION} as build

View File

@ -686,7 +686,7 @@ GEM
scenic (1.7.0)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
selenium-webdriver (4.11.0)
selenium-webdriver (4.13.1)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
@ -804,7 +804,7 @@ GEM
rack-proxy (>= 0.6.1)
railties (>= 5.2)
semantic_range (>= 2.3.0)
websocket (1.2.9)
websocket (1.2.10)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)

View File

@ -1,11 +1,24 @@
# frozen_string_literal: true
module DatabaseHelper
def replica_enabled?
ENV['REPLICA_DB_NAME'] || ENV.fetch('REPLICA_DATABASE_URL', nil)
end
module_function :replica_enabled?
def with_read_replica(&block)
ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block)
if replica_enabled?
ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block)
else
yield
end
end
def with_primary(&block)
ApplicationRecord.connected_to(role: :writing, &block)
if replica_enabled?
ApplicationRecord.connected_to(role: :writing, &block)
else
yield
end
end
end

View File

@ -1,10 +0,0 @@
export const DROPDOWN_MENU_OPEN = 'DROPDOWN_MENU_OPEN';
export const DROPDOWN_MENU_CLOSE = 'DROPDOWN_MENU_CLOSE';
export function openDropdownMenu(id, keyboard, scroll_key) {
return { type: DROPDOWN_MENU_OPEN, id, keyboard, scroll_key };
}
export function closeDropdownMenu(id) {
return { type: DROPDOWN_MENU_CLOSE, id };
}

View File

@ -0,0 +1,11 @@
import { createAction } from '@reduxjs/toolkit';
export const openDropdownMenu = createAction<{
id: string;
keyboard: boolean;
scrollKey: string;
}>('dropdownMenu/open');
export const closeDropdownMenu = createAction<{ id: string }>(
'dropdownMenu/close',
);

View File

@ -1,12 +1,14 @@
import { createAction } from '@reduxjs/toolkit';
import type { ModalProps } from 'flavours/glitch/reducers/modal';
import type { MODAL_COMPONENTS } from '../features/ui/components/modal_root';
export type ModalType = keyof typeof MODAL_COMPONENTS;
interface OpenModalPayload {
modalType: ModalType;
modalProps: unknown;
modalProps: ModalProps;
}
export const openModal = createAction<OpenModalPayload>('MODAL_OPEN');

View File

@ -4,9 +4,14 @@ import { openDropdownMenu, closeDropdownMenu } from 'flavours/glitch/actions/dro
import { fetchHistory } from 'flavours/glitch/actions/history';
import DropdownMenu from 'flavours/glitch/components/dropdown_menu';
/**
*
* @param {import('flavours/glitch/store').RootState} state
* @param {*} props
*/
const mapStateToProps = (state, { statusId }) => ({
openDropdownId: state.getIn(['dropdown_menu', 'openId']),
openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']),
openDropdownId: state.dropdownMenu.openId,
openedViaKeyboard: state.dropdownMenu.keyboard,
items: state.getIn(['history', statusId, 'items']),
loading: state.getIn(['history', statusId, 'loading']),
});
@ -15,11 +20,11 @@ const mapDispatchToProps = (dispatch, { statusId }) => ({
onOpen (id, onItemClick, keyboard) {
dispatch(fetchHistory(statusId));
dispatch(openDropdownMenu(id, keyboard));
dispatch(openDropdownMenu({ id, keyboard }));
},
onClose (id) {
dispatch(closeDropdownMenu(id));
dispatch(closeDropdownMenu({ id }));
},
});

View File

@ -23,9 +23,14 @@ const MOUSE_IDLE_DELAY = 300;
const listenerOptions = supportsPassiveEvents ? { passive: true } : false;
/**
*
* @param {import('flavours/glitch/store').RootState} state
* @param {*} props
*/
const mapStateToProps = (state, { scrollKey }) => {
return {
preventScroll: scrollKey === state.getIn(['dropdown_menu', 'scroll_key']),
preventScroll: scrollKey === state.dropdownMenu.scrollKey,
};
};

View File

@ -6,9 +6,12 @@ import DropdownMenu from 'flavours/glitch/components/dropdown_menu';
import { isUserTouching } from '../is_mobile';
/**
* @param {import('flavours/glitch/store').RootState} state
*/
const mapStateToProps = state => ({
openDropdownId: state.getIn(['dropdown_menu', 'openId']),
openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']),
openDropdownId: state.dropdownMenu.openId,
openedViaKeyboard: state.dropdownMenu.keyboard,
});
const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
@ -20,7 +23,7 @@ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
actions: items,
onClick: onItemClick,
},
}) : openDropdownMenu(id, keyboard, scrollKey));
}) : openDropdownMenu({ id, keyboard, scrollKey }));
},
onClose(id) {
@ -28,7 +31,7 @@ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
modalType: 'ACTIONS',
ignoreFocus: false,
}));
dispatch(closeDropdownMenu(id));
dispatch(closeDropdownMenu({ id }));
},
});

View File

@ -4,7 +4,7 @@ import { PureComponent } from 'react';
const iconStyle = {
height: null,
lineHeight: '27px',
width: `${18 * 1.28571429}px`,
minWidth: `${18 * 1.28571429}px`,
};
export default class TextIconButton extends PureComponent {

View File

@ -55,8 +55,10 @@ const homeTooSlow = createSelector([
getHomeFeedSpeed,
], (isLoading, isPartial, speed) =>
!isLoading && !isPartial // Only if the home feed has finished loading
&& (speed.gap > (30 * 60) // If the average gap between posts is more than 20 minutes
|| (Date.now() - speed.newest) > (1000 * 3600)) // If the most recent post is from over an hour ago
&& (
(speed.gap > (30 * 60) // If the average gap between posts is more than 30 minutes
|| (Date.now() - speed.newest) > (1000 * 3600)) // If the most recent post is from over an hour ago
)
);
const mapStateToProps = state => ({

View File

@ -80,7 +80,7 @@ const mapStateToProps = state => ({
hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,
canUploadMore: !state.getIn(['compose', 'media_attachments']).some(x => ['audio', 'video'].includes(x.get('type'))) && state.getIn(['compose', 'media_attachments']).size < 4,
isWide: state.getIn(['local_settings', 'stretch']),
dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,
dropdownMenuIsOpen: state.dropdownMenu.openId !== null,
unreadNotifications: state.getIn(['notifications', 'unread']),
showFaviconBadge: state.getIn(['local_settings', 'notifications', 'favicon_badge']),
hicolorPrivacyIcons: state.getIn(['local_settings', 'hicolor_privacy_icons']),

View File

@ -1,19 +0,0 @@
import Immutable from 'immutable';
import {
DROPDOWN_MENU_OPEN,
DROPDOWN_MENU_CLOSE,
} from '../actions/dropdown_menu';
const initialState = Immutable.Map({ openId: null, keyboard: false, scroll_key: null });
export default function dropdownMenu(state = initialState, action) {
switch (action.type) {
case DROPDOWN_MENU_OPEN:
return state.merge({ openId: action.id, keyboard: action.keyboard, scroll_key: action.scroll_key });
case DROPDOWN_MENU_CLOSE:
return state.get('openId') === action.id ? state.set('openId', null).set('scroll_key', null) : state;
default:
return state;
}
}

View File

@ -0,0 +1,33 @@
import { createReducer } from '@reduxjs/toolkit';
import { closeDropdownMenu, openDropdownMenu } from '../actions/dropdown_menu';
interface DropdownMenuState {
openId: string | null;
keyboard: boolean;
scrollKey: string | null;
}
const initialState: DropdownMenuState = {
openId: null,
keyboard: false,
scrollKey: null,
};
export const dropdownMenuReducer = createReducer(initialState, (builder) => {
builder
.addCase(
openDropdownMenu,
(state, { payload: { id, keyboard, scrollKey } }) => {
state.openId = id;
state.keyboard = keyboard;
state.scrollKey = scrollKey;
},
)
.addCase(closeDropdownMenu, (state, { payload: { id } }) => {
if (state.openId === id) {
state.openId = null;
state.scrollKey = null;
}
});
});

View File

@ -16,7 +16,7 @@ import contexts from './contexts';
import conversations from './conversations';
import custom_emojis from './custom_emojis';
import domain_lists from './domain_lists';
import dropdown_menu from './dropdown_menu';
import { dropdownMenuReducer } from './dropdown_menu';
import filters from './filters';
import followed_tags from './followed_tags';
import height_cache from './height_cache';
@ -49,7 +49,7 @@ import user_lists from './user_lists';
const reducers = {
announcements,
dropdown_menu,
dropdownMenu: dropdownMenuReducer,
timelines,
meta,
alerts,

View File

@ -1,13 +1,13 @@
import { Record as ImmutableRecord, Stack } from 'immutable';
import type { PayloadAction } from '@reduxjs/toolkit';
import type { Reducer } from '@reduxjs/toolkit';
import { COMPOSE_UPLOAD_CHANGE_SUCCESS } from '../actions/compose';
import type { ModalType } from '../actions/modal';
import { openModal, closeModal } from '../actions/modal';
import { TIMELINE_DELETE } from '../actions/timelines';
type ModalProps = Record<string, unknown>;
export type ModalProps = Record<string, unknown>;
interface Modal {
modalType: ModalType;
modalProps: ModalProps;
@ -62,33 +62,22 @@ const pushModal = (
});
};
export function modalReducer(
state: State = initialState,
action: PayloadAction<{
modalType: ModalType;
ignoreFocus: boolean;
modalProps: Record<string, unknown>;
}>,
) {
switch (action.type) {
case openModal.type:
return pushModal(
state,
action.payload.modalType,
action.payload.modalProps,
);
case closeModal.type:
return popModal(state, action.payload);
case COMPOSE_UPLOAD_CHANGE_SUCCESS:
return popModal(state, { modalType: 'FOCAL_POINT', ignoreFocus: false });
case TIMELINE_DELETE:
return state.update('stack', (stack) =>
stack.filterNot(
// @ts-expect-error TIMELINE_DELETE action is not typed yet.
(modal) => modal.get('modalProps').statusId === action.id,
),
);
default:
return state;
}
}
export const modalReducer: Reducer<State> = (state = initialState, action) => {
if (openModal.match(action))
return pushModal(
state,
action.payload.modalType,
action.payload.modalProps,
);
else if (closeModal.match(action)) return popModal(state, action.payload);
// TODO: type those actions
else if (action.type === COMPOSE_UPLOAD_CHANGE_SUCCESS)
return popModal(state, { modalType: 'FOCAL_POINT', ignoreFocus: false });
else if (action.type === TIMELINE_DELETE)
return state.update('stack', (stack) =>
stack.filterNot(
(modal) => modal.get('modalProps').statusId === action.id,
),
);
else return state;
};

View File

@ -281,6 +281,7 @@
background: transparent;
cursor: pointer;
padding: 0 3px;
white-space: nowrap;
outline: 0;
transition: all 100ms ease-in;
transition-property: background-color, color;

View File

@ -1,10 +0,0 @@
export const DROPDOWN_MENU_OPEN = 'DROPDOWN_MENU_OPEN';
export const DROPDOWN_MENU_CLOSE = 'DROPDOWN_MENU_CLOSE';
export function openDropdownMenu(id, keyboard, scroll_key) {
return { type: DROPDOWN_MENU_OPEN, id, keyboard, scroll_key };
}
export function closeDropdownMenu(id) {
return { type: DROPDOWN_MENU_CLOSE, id };
}

View File

@ -0,0 +1,11 @@
import { createAction } from '@reduxjs/toolkit';
export const openDropdownMenu = createAction<{
id: string;
keyboard: boolean;
scrollKey: string;
}>('dropdownMenu/open');
export const closeDropdownMenu = createAction<{ id: string }>(
'dropdownMenu/close',
);

View File

@ -1,12 +1,14 @@
import { createAction } from '@reduxjs/toolkit';
import type { ModalProps } from 'mastodon/reducers/modal';
import type { MODAL_COMPONENTS } from '../features/ui/components/modal_root';
export type ModalType = keyof typeof MODAL_COMPONENTS;
interface OpenModalPayload {
modalType: ModalType;
modalProps: unknown;
modalProps: ModalProps;
}
export const openModal = createAction<OpenModalPayload>('MODAL_OPEN');

View File

@ -0,0 +1,45 @@
import type { ApiCustomEmojiJSON } from './custom_emoji';
export interface ApiAccountFieldJSON {
name: string;
value: string;
verified_at: string | null;
}
export interface ApiAccountRoleJSON {
color: string;
id: string;
name: string;
}
// See app/serializers/rest/account_serializer.rb
export interface ApiAccountJSON {
acct: string;
avatar: string;
avatar_static: string;
bot: boolean;
created_at: string;
discoverable: boolean;
display_name: string;
emojis: ApiCustomEmojiJSON[];
fields: ApiAccountFieldJSON[];
followers_count: number;
following_count: number;
group: boolean;
header: string;
header_static: string;
id: string;
last_status_at: string;
locked: boolean;
noindex: boolean;
note: string;
roles: ApiAccountJSON[];
statuses_count: number;
uri: string;
url: string;
username: string;
moved?: ApiAccountJSON;
suspended?: boolean;
limited?: boolean;
memorial?: boolean;
}

View File

@ -0,0 +1,8 @@
// See app/serializers/rest/account_serializer.rb
export interface ApiCustomEmojiJSON {
shortcode: string;
static_url: string;
url: string;
category?: string;
visible_in_picker: boolean;
}

View File

@ -0,0 +1,18 @@
// See app/serializers/rest/relationship_serializer.rb
export interface ApiRelationshipJSON {
blocked_by: boolean;
blocking: boolean;
domain_blocking: boolean;
endorsed: boolean;
followed_by: boolean;
following: boolean;
id: string;
languages: string[] | null;
muting_notifications: boolean;
muting: boolean;
note: string;
notifying: boolean;
requested_by: boolean;
requested: boolean;
showing_reblogs: boolean;
}

View File

@ -4,9 +4,14 @@ import { openDropdownMenu, closeDropdownMenu } from 'mastodon/actions/dropdown_m
import { fetchHistory } from 'mastodon/actions/history';
import DropdownMenu from 'mastodon/components/dropdown_menu';
/**
*
* @param {import('mastodon/store').RootState} state
* @param {*} props
*/
const mapStateToProps = (state, { statusId }) => ({
openDropdownId: state.getIn(['dropdown_menu', 'openId']),
openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']),
openDropdownId: state.dropdownMenu.openId,
openedViaKeyboard: state.dropdownMenu.keyboard,
items: state.getIn(['history', statusId, 'items']),
loading: state.getIn(['history', statusId, 'loading']),
});
@ -15,11 +20,11 @@ const mapDispatchToProps = (dispatch, { statusId }) => ({
onOpen (id, onItemClick, keyboard) {
dispatch(fetchHistory(statusId));
dispatch(openDropdownMenu(id, keyboard));
dispatch(openDropdownMenu({ id, keyboard }));
},
onClose (id) {
dispatch(closeDropdownMenu(id));
dispatch(closeDropdownMenu({ id }));
},
});

View File

@ -23,9 +23,14 @@ const MOUSE_IDLE_DELAY = 300;
const listenerOptions = supportsPassiveEvents ? { passive: true } : false;
/**
*
* @param {import('mastodon/store').RootState} state
* @param {*} props
*/
const mapStateToProps = (state, { scrollKey }) => {
return {
preventScroll: scrollKey === state.getIn(['dropdown_menu', 'scroll_key']),
preventScroll: scrollKey === state.dropdownMenu.scrollKey,
};
};

View File

@ -7,9 +7,12 @@ import { openModal, closeModal } from '../actions/modal';
import DropdownMenu from '../components/dropdown_menu';
import { isUserTouching } from '../is_mobile';
/**
* @param {import('mastodon/store').RootState} state
*/
const mapStateToProps = state => ({
openDropdownId: state.getIn(['dropdown_menu', 'openId']),
openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']),
openDropdownId: state.dropdownMenu.openId,
openedViaKeyboard: state.dropdownMenu.keyboard,
});
const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
@ -25,7 +28,7 @@ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
actions: items,
onClick: onItemClick,
},
}) : openDropdownMenu(id, keyboard, scrollKey));
}) : openDropdownMenu({ id, keyboard, scrollKey }));
},
onClose(id) {
@ -33,7 +36,7 @@ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
modalType: 'ACTIONS',
ignoreFocus: false,
}));
dispatch(closeDropdownMenu(id));
dispatch(closeDropdownMenu({ id }));
},
});

View File

@ -4,7 +4,7 @@ import { PureComponent } from 'react';
const iconStyle = {
height: null,
lineHeight: '27px',
width: `${18 * 1.28571429}px`,
minWidth: `${18 * 1.28571429}px`,
};
export default class TextIconButton extends PureComponent {

View File

@ -55,8 +55,10 @@ const homeTooSlow = createSelector([
getHomeFeedSpeed,
], (isLoading, isPartial, speed) =>
!isLoading && !isPartial // Only if the home feed has finished loading
&& (speed.gap > (30 * 60) // If the average gap between posts is more than 20 minutes
|| (Date.now() - speed.newest) > (1000 * 3600)) // If the most recent post is from over an hour ago
&& (
(speed.gap > (30 * 60) // If the average gap between posts is more than 30 minutes
|| (Date.now() - speed.newest) > (1000 * 3600)) // If the most recent post is from over an hour ago
)
);
const mapStateToProps = state => ({

View File

@ -79,7 +79,7 @@ const mapStateToProps = state => ({
hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,
hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,
canUploadMore: !state.getIn(['compose', 'media_attachments']).some(x => ['audio', 'video'].includes(x.get('type'))) && state.getIn(['compose', 'media_attachments']).size < 4,
dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,
dropdownMenuIsOpen: state.dropdownMenu.openId !== null,
firstLaunch: state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION,
username: state.getIn(['accounts', me, 'username']),
});

View File

@ -26,7 +26,7 @@
"account.domain_blocked": "Блокиран домейн",
"account.edit_profile": "Редактиране на профила",
"account.enable_notifications": "Известяване при публикуване от @{name}",
"account.endorse": "Характеристика на профила",
"account.endorse": "Представи в профила",
"account.featured_tags.last_status_at": "Последна публикация на {date}",
"account.featured_tags.last_status_never": "Няма публикации",
"account.featured_tags.title": "Главни хаштагове на {name}",
@ -393,7 +393,7 @@
"media_gallery.toggle_visible": "Скриване на {number, plural, one {изображение} other {изображения}}",
"moved_to_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен, защото се преместихте в {movedToAccount}.",
"mute_modal.duration": "Времетраене",
"mute_modal.hide_notifications": "Скривате ли известията от потребителя?",
"mute_modal.hide_notifications": "Скриване на известия от този потребител?",
"mute_modal.indefinite": "Неопределено",
"navigation_bar.about": "Относно",
"navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс",

View File

@ -321,7 +321,7 @@
"interaction_modal.login.action": "Torna a l'inici",
"interaction_modal.login.prompt": "Domini del teu servidor domèstic, p.ex. mastodon.social",
"interaction_modal.no_account_yet": "No a Mastodon?",
"interaction_modal.on_another_server": "En un servidor diferent",
"interaction_modal.on_another_server": "A un altre servidor",
"interaction_modal.on_this_server": "En aquest servidor",
"interaction_modal.sign_in": "No has iniciat sessió en aquest servidor. On tens el teu compte?",
"interaction_modal.sign_in_hint": "Ajuda: Aquesta és la web on vas registrar-te. Si no ho recordes, mira el correu electrònic de benvinguda en la teva safata d'entrada. També pots introduïr el teu nom d'usuari complet! (per ex. @Mastodon@mastodon.social)",
@ -391,7 +391,7 @@
"load_pending": "{count, plural, one {# element nou} other {# elements nous}}",
"loading_indicator.label": "Es carrega...",
"media_gallery.toggle_visible": "{number, plural, one {Amaga la imatge} other {Amaga les imatges}}",
"moved_to_account_banner.text": "El teu compte {disabledAccount} està actualment desactivat perquè l'has traslladat a {movedToAccount}.",
"moved_to_account_banner.text": "El teu compte {disabledAccount} està desactivat perquè l'has mogut a {movedToAccount}.",
"mute_modal.duration": "Durada",
"mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?",
"mute_modal.indefinite": "Indefinit",
@ -426,8 +426,8 @@
"notification.admin.sign_up": "{name} s'ha registrat",
"notification.favourite": "{name} ha afavorit el teu tut",
"notification.follow": "{name} et segueix",
"notification.follow_request": "{name} ha sol·licitat seguir-te",
"notification.mention": "{name} t'ha mencionat",
"notification.follow_request": "{name} ha sol·licitat de seguir-te",
"notification.mention": "{name} t'ha esmentat",
"notification.own_poll": "La teva enquesta ha finalitzat",
"notification.poll": "Ha finalitzat una enquesta en què has votat",
"notification.reblog": "{name} t'ha impulsat",
@ -451,7 +451,7 @@
"notifications.column_settings.show": "Mostra a la columna",
"notifications.column_settings.sound": "Reprodueix so",
"notifications.column_settings.status": "Nous tuts:",
"notifications.column_settings.unread_notifications.category": "Notificacions no llegides",
"notifications.column_settings.unread_notifications.category": "Notificacions pendents de llegir",
"notifications.column_settings.unread_notifications.highlight": "Destaca les notificacions no llegides",
"notifications.column_settings.update": "Edicions:",
"notifications.filter.all": "Totes",
@ -473,25 +473,25 @@
"onboarding.action.back": "Porta'm enrere",
"onboarding.actions.back": "Porta'm enrere",
"onboarding.actions.go_to_explore": "Mira què és tendència",
"onboarding.actions.go_to_home": "Vés a la teva línia de temps inici",
"onboarding.actions.go_to_home": "Ves a la teva línia de temps",
"onboarding.compose.template": "Hola Mastodon!",
"onboarding.follows.empty": "Malauradament, cap resultat pot ser mostrat ara mateix. Pots provar de fer servir la cerca o visitar la pàgina Explora per a trobar gent a qui seguir o provar-ho de nou més tard.",
"onboarding.follows.lead": "Tu tens cura de la teva línia de temps inici. Com més gent segueixis, més activa i interessant serà. Aquests perfils poden ser un bon punt d'inici—sempre pots acabar deixant-los de seguir!",
"onboarding.follows.title": "Popular a Mastodon",
"onboarding.follows.lead": "La teva línia de temps inici només està a les teves mans. Com més gent segueixis, més activa i interessant serà. Aquests perfils poden ser un bon punt d'inici—sempre pots acabar deixant de seguir-los!:",
"onboarding.follows.title": "Personalitza la pantalla d'inci",
"onboarding.share.lead": "Permet que la gent sàpiga com trobar-te a Mastodon!",
"onboarding.share.message": "Sóc {username} a #Mastodon! Vine i segueix-me a {url}",
"onboarding.share.next_steps": "Possibles passes següents:",
"onboarding.share.title": "Comparteix el teu perfil",
"onboarding.start.lead": "El teu nou compte a Mastodon ja està preparat. Aquí tens com en pots treure tot el suc:",
"onboarding.start.lead": "El teu nou compte ja està preparat a Mastodon, la xarxa social on tu—no un algorisme—té tot el control. Aquí tens com en pots treure tot el suc:",
"onboarding.start.skip": "Vols saltar-te tota la resta?",
"onboarding.start.title": "Llestos!",
"onboarding.steps.follow_people.body": "Tu tens cura de la teva línia de temps. Omple-la de gent interessant.",
"onboarding.steps.follow_people.title": "{count, plural, zero {No segueixes cap persona} one {Segeueixes ona persona} other {Segueixes # persones}}",
"onboarding.steps.publish_status.body": "Saluda el món.",
"onboarding.steps.follow_people.body": "Mastodon va de seguir a gent interessant.",
"onboarding.steps.follow_people.title": "Personalitza la pantalla d'inci",
"onboarding.steps.publish_status.body": "Saluda al món amb text, fotos, vídeos o enquestes {emoji}",
"onboarding.steps.publish_status.title": "Fes el teu primer tut",
"onboarding.steps.setup_profile.body": "És més fàcil que altres interaccionin amb tu si tens un perfil complet.",
"onboarding.steps.setup_profile.body": "És més fàcil que altres interactuïn amb tu si tens un perfil complet.",
"onboarding.steps.setup_profile.title": "Personalitza el perfil",
"onboarding.steps.share_profile.body": "Permet als teus amics de saber com trobar-te a Mastodon!",
"onboarding.steps.share_profile.body": "Fer saber als teus amics com trobar-te a Mastodon",
"onboarding.steps.share_profile.title": "Comparteix el teu perfil",
"onboarding.tips.2fa": "<strong>Ho sabies?</strong> Pots securitzar el teu compte activant l'autenticació de doble factor en la configuració del teu perfil. Funciona amb qualsevol aplicació TOTP de la teva elecció, no cal número de telèfon!",
"onboarding.tips.accounts_from_other_servers": "<strong>Ho sabies?</strong> Com Mastodon és descentralitzat, et pots trobar amb perfils que són a servidors diferents del teu. I, tanmateix, també hi pots interactuar sense cap problema! El servidor és la segona part del seu nom d'usuari!",

View File

@ -114,7 +114,7 @@
"column.directory": "Prozkoumat profily",
"column.domain_blocks": "Blokované domény",
"column.favourites": "Oblíbené",
"column.firehose": "Živé kanály l",
"column.firehose": "Živé kanály",
"column.follow_requests": "Žádosti o sledování",
"column.home": "Domů",
"column.lists": "Seznamy",
@ -585,6 +585,7 @@
"search.quick_action.open_url": "Otevřít URL v Mastodonu",
"search.quick_action.status_search": "Příspěvky odpovídající {x}",
"search.search_or_paste": "Hledat nebo vložit URL",
"search_popout.full_text_search_disabled_message": "Nedostupné na {domain}.",
"search_popout.language_code": "Kód jazyka podle ISO",
"search_popout.options": "Možnosti hledání",
"search_popout.quick_actions": "Rychlé akce",

View File

@ -143,7 +143,7 @@
"compose_form.hashtag_warning": "Dieser Beitrag wird unter keinem Hashtag sichtbar sein, weil er nicht öffentlich ist. Nur öffentliche Beiträge können nach Hashtags durchsucht werden.",
"compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Andere können dir folgen und deine Beiträge sehen, die nur für Follower bestimmt sind.",
"compose_form.lock_disclaimer.lock": "geschützt",
"compose_form.placeholder": "Was gibt's Neues?",
"compose_form.placeholder": "Was gibts Neues?",
"compose_form.poll.add_option": "Auswahl",
"compose_form.poll.duration": "Umfragedauer",
"compose_form.poll.option_placeholder": "{number}. Auswahl",
@ -286,7 +286,7 @@
"footer.source_code": "Quellcode anzeigen",
"footer.status": "Status",
"generic.saved": "Gespeichert",
"getting_started.heading": "Auf geht's!",
"getting_started.heading": "Auf gehts!",
"hashtag.column_header.tag_mode.all": "und {additional}",
"hashtag.column_header.tag_mode.any": "oder {additional}",
"hashtag.column_header.tag_mode.none": "ohne {additional}",
@ -360,7 +360,7 @@
"keyboard_shortcuts.requests": "Liste der Follower-Anfragen aufrufen",
"keyboard_shortcuts.search": "Suchleiste fokussieren",
"keyboard_shortcuts.spoilers": "Feld für Inhaltswarnung anzeigen/ausblenden",
"keyboard_shortcuts.start": "„Auf geht's!“ öffnen",
"keyboard_shortcuts.start": "„Auf gehts!“ öffnen",
"keyboard_shortcuts.toggle_hidden": "Beitragstext hinter der Inhaltswarnung anzeigen/ausblenden",
"keyboard_shortcuts.toggle_sensitivity": "Medien anzeigen/ausblenden",
"keyboard_shortcuts.toot": "Neuen Beitrag erstellen",

View File

@ -590,6 +590,7 @@
"search.quick_action.open_url": "Open URL in Mastodon",
"search.quick_action.status_search": "Posts matching {x}",
"search.search_or_paste": "Search or paste URL",
"search_popout.full_text_search_disabled_message": "Unavailable on {domain}.",
"search_popout.language_code": "ISO language code",
"search_popout.options": "Search options",
"search_popout.quick_actions": "Quick actions",

View File

@ -113,6 +113,7 @@
"column.direct": "Privataj mencioj",
"column.directory": "Foliumi la profilojn",
"column.domain_blocks": "Blokitaj domajnoj",
"column.favourites": "Stelumoj",
"column.firehose": "Vivantaj fluoj",
"column.follow_requests": "Petoj de sekvado",
"column.home": "Hejmo",
@ -136,6 +137,7 @@
"compose.language.search": "Serĉi lingvojn...",
"compose.published.body": "Afiŝo publikigita.",
"compose.published.open": "Malfermi",
"compose.saved.body": "Afiŝo konservita.",
"compose_form.direct_message_warning_learn_more": "Lerni pli",
"compose_form.encryption_warning": "La afiŝoj en Mastodon ne estas tutvoje ĉifritaj. Ne kunhavigu tiklajn informojn ĉe Mastodon.",
"compose_form.hashtag_warning": "Ĉi tiu afiŝo ne estos listigita en neniu kradvorto ĉar ĝi ne estas publika. Nur publikaj afiŝoj povas esti serĉitaj per kradvortoj.",
@ -180,6 +182,7 @@
"confirmations.mute.explanation": "Tio kaŝos la mesaĝojn de la uzanto kaj la mesaĝojn kiuj mencias rin, sed ri ankoraŭ rajtos vidi viajn mesaĝojn kaj sekvi vin.",
"confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?",
"confirmations.redraft.confirm": "Forigi kaj reskribi",
"confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi tiun afiŝon kaj reskribi ĝin? Ĉiuj diskonigoj kaj stelumoj estos perditaj, kaj respondoj al la originala mesaĝo estos senparentaj.",
"confirmations.reply.confirm": "Respondi",
"confirmations.reply.message": "Respondi nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?",
"confirmations.unfollow.confirm": "Ne plu sekvi",
@ -548,6 +551,7 @@
"search.search_or_paste": "Serĉu aŭ algluu URL-on",
"search_popout.quick_actions": "Rapidaj agoj",
"search_popout.recent": "Lastaj serĉoj",
"search_popout.user": "uzanto",
"search_results.accounts": "Profiloj",
"search_results.all": "Ĉiuj",
"search_results.hashtags": "Kradvortoj",

View File

@ -302,8 +302,8 @@
"hashtag.follow": "Seguir etiqueta",
"hashtag.unfollow": "Dejar de seguir etiqueta",
"hashtags.and_other": "…y {count, plural, other {# más}}",
"home.actions.go_to_explore": "Mirá qué está en tendencia",
"home.actions.go_to_suggestions": "Encontrá cuentas para seguir",
"home.actions.go_to_explore": "Ver qué está en tendencia",
"home.actions.go_to_suggestions": "Encontrar cuentas para seguir",
"home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar adhesiones",
"home.column_settings.show_replies": "Mostrar respuestas",

View File

@ -379,7 +379,7 @@
"lists.delete": "Borrar lista",
"lists.edit": "Editar lista",
"lists.edit.submit": "Cambiar título",
"lists.exclusive": "Ocultar estas publicaciones en inicio",
"lists.exclusive": "Ocultar estas publicaciones de inicio",
"lists.new.create": "Añadir lista",
"lists.new.title_placeholder": "Título de la nueva lista",
"lists.replies_policy.followed": "Cualquier usuario seguido",

View File

@ -15,13 +15,13 @@
"account.add_or_remove_from_list": "افزودن یا برداشتن از سیاهه‌ها",
"account.badges.bot": "روبات",
"account.badges.group": "گروه",
"account.block": "مسدود کردن @{name}",
"account.block_domain": "مسدود کردن دامنهٔ {domain}",
"account.block": "انسداد @{name}",
"account.block_domain": "انسداد دامنهٔ {domain}",
"account.block_short": "انسداد",
"account.blocked": "مسدود شده",
"account.blocked": "مسدود",
"account.browse_more_on_origin_server": "مرور بیش‌تر روی نمایهٔ اصلی",
"account.cancel_follow_request": "رد کردن درخواست پی‌گیری",
"account.direct": "خصوصی از @{name} نام ببرید",
"account.direct": "اشارهٔ خصوصی به @{name}",
"account.disable_notifications": "آگاه کردن من هنگام فرسته‌های @{name} را متوقّف کن",
"account.domain_blocked": "دامنه مسدود شد",
"account.edit_profile": "ویرایش نمایه",
@ -46,7 +46,7 @@
"account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد",
"account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.",
"account.media": "رسانه",
"account.mention": "نام‌بردن از @{name}",
"account.mention": "اشاره به @{name}",
"account.moved_to": "{name} نشان داده که حساب جدیدش این است:",
"account.mute": "خموشاندن @{name}",
"account.mute_notifications_short": "خموشی آگاهی‌ها",
@ -110,7 +110,7 @@
"column.blocks": "کاربران مسدود شده",
"column.bookmarks": "نشانک‌ها",
"column.community": "خط زمانی محلّی",
"column.direct": "خصوصی نام ببرید",
"column.direct": "اشاره‌های خصوصی",
"column.directory": "مرور نمایه‌ها",
"column.domain_blocks": "دامنه‌های مسدود شده",
"column.favourites": "برگزیده‌ها",
@ -137,6 +137,7 @@
"compose.language.search": "جست‌وجوی زبان‌ها…",
"compose.published.body": "فرسته منتشر شد.",
"compose.published.open": "گشودن",
"compose.saved.body": "فرسته ذخیره شد.",
"compose_form.direct_message_warning_learn_more": "بیشتر بدانید",
"compose_form.encryption_warning": "فرسته‌های ماستودون رمزگذاری سرتاسری نشده‌اند. هیچ اطّلاعات حساسی را روی ماستودون هم‌رسانی نکنید.",
"compose_form.hashtag_warning": "از آن‌جا که این فرسته عمومی نیست زیر هیچ برچسبی سیاهه نخواهد شد. تنها فرسته‌های عمومی می‌توانند با برچسب جست‌وجو شوند.",
@ -147,7 +148,7 @@
"compose_form.poll.duration": "مدت نظرسنجی",
"compose_form.poll.option_placeholder": "گزینهٔ {number}",
"compose_form.poll.remove_option": "برداشتن این گزینه",
"compose_form.poll.switch_to_multiple": بدیل به نظرسنجی چندگزینه‌ای",
"compose_form.poll.switch_to_multiple": غییر نظرسنجی برای اجازه به چندین گزینه",
"compose_form.poll.switch_to_single": "تبدیل به نظرسنجی تک‌گزینه‌ای",
"compose_form.publish": "انتشار",
"compose_form.publish_form": "انتشار",
@ -160,8 +161,8 @@
"compose_form.spoiler.unmarked": "افزودن هشدار محتوا",
"compose_form.spoiler_placeholder": "هشدارتان را این‌جا بنویسید",
"confirmation_modal.cancel": "لغو",
"confirmations.block.block_and_report": "مسدود کردن و گزارش",
"confirmations.block.confirm": "مسدود کردن",
"confirmations.block.block_and_report": "انسداد و گزارش",
"confirmations.block.confirm": "انسداد",
"confirmations.block.message": "مطمئنید که می‌خواهید {name} را مسدود کنید؟",
"confirmations.cancel_follow_request.confirm": "رد کردن درخواست",
"confirmations.cancel_follow_request.message": "مطمئنید که می خواهید درخواست پی‌گیری {name} را لغو کنید؟",
@ -171,7 +172,7 @@
"confirmations.delete_list.message": "مطمئنید می‌خواهید این سیاهه را برای همیشه حذف کنید؟",
"confirmations.discard_edit_media.confirm": "دور انداختن",
"confirmations.discard_edit_media.message": "تغییرات ذخیره نشده‌ای در توضیحات یا پیش‌نمایش رسانه دارید. همگی نادیده گرفته شوند؟",
"confirmations.domain_block.confirm": "مسدود کردن تمام دامنه",
"confirmations.domain_block.confirm": "انسداد تمام دامنه",
"confirmations.domain_block.message": "آیا جدی جدی می‌خواهید تمام دامنهٔ {domain} را مسدود کنید؟ در بیشتر موارد مسدود کردن یا خموشاندن چند حساب خاص کافی است و توصیه می‌شود. پس از این کار شما هیچ محتوایی را از این دامنه در خط زمانی عمومی یا آگاهی‌هایتان نخواهید دید. پی‌گیرانتان از این دامنه هم برداشته خواهند شد.",
"confirmations.edit.confirm": "ویرایش",
"confirmations.edit.message": "در صورت ویرایش، پیامی که در حال نوشتنش بودید از بین خواهد رفت. می‌خواهید ادامه دهید؟",
@ -181,6 +182,7 @@
"confirmations.mute.explanation": "این کار فرسته‌های آن‌ها و فرسته‌هایی را که از آن‌ها نام برده پنهان می‌کند، ولی آن‌ها همچنان اجازه دارند فرسته‌های شما را ببینند و شما را پی‌گیری کنند.",
"confirmations.mute.message": "مطمئنید می‌خواهید {name} را بخموشانید؟",
"confirmations.redraft.confirm": "حذف و بازنویسی",
"confirmations.redraft.message": "مطمئنید که می‌خواهید این فرسته را حذف کنید و از نو بنویسید؟ با این کار تقویت‌ها و پسندهایش از دست رفته و پاسخ‌ها به آن بی‌مرجع می‌شود.",
"confirmations.reply.confirm": "پاسخ",
"confirmations.reply.message": "اگر الان پاسخ دهید، چیزی که در حال نوشتنش بودید پاک خواهد شد. می‌خواهید ادامه دهید؟",
"confirmations.unfollow.confirm": "پی‌نگرفتن",
@ -294,16 +296,23 @@
"hashtag.column_settings.tag_mode.any": "هرکدام از این‌ها",
"hashtag.column_settings.tag_mode.none": "هیچ‌کدام از این‌ها",
"hashtag.column_settings.tag_toggle": "افزودن برچسب‌هایی بیشتر به این ستون",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} مشارکت کننده} other {{counter} مشارکت کننده}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}} امروز",
"hashtag.follow": "پی‌گرفتن برچسب",
"hashtag.unfollow": "پی‌نگرفتن برچسب",
"hashtags.and_other": "…و {count, plural, other {# بیش‌تر}}",
"home.actions.go_to_explore": "ببینید چه داغ است",
"home.actions.go_to_suggestions": "یافتن افراد برای پی‌گیری",
"home.column_settings.basic": "پایه‌ای",
"home.column_settings.show_reblogs": "نمایش تقویت‌ها",
"home.column_settings.show_replies": "نمایش پاسخ‌ها",
"home.explore_prompt.body": "خوراک خانگیتان ترکیبی از فرسته‌ها از برچسب‌هایی که برای پی‌گیری گزیده‌اید، افرادی که پی می‌گیرید و فرسته‌هایی که تقویت می‌کنند را خواهد داشت. اگر خیلی خلوت به نظر می‌رسد،‌ شاید بخواهید:",
"home.explore_prompt.title": "این پایگاه خانگیتان در ماستودون است.",
"home.hide_announcements": "نهفتن اعلامیه‌ها",
"home.pending_critical_update.body": "لطفاً کارساز ماستودونتان را در نخستین فرصت به‌روز کنید!",
"home.pending_critical_update.link": "دیدن به‌روز رسانی‌ها",
"home.pending_critical_update.title": "به‌روز رسانی امنیتی بحرانی موجود است!",
"home.show_announcements": "نمایش اعلامیه‌ها",
"interaction_modal.description.favourite": "با حسابی روی ماستودون می‌توانید این فرسته را برگزیده تا نگارنده بداند قدردانش هستید و برای آینده ذخیره‌اش می‌کنید.",
"interaction_modal.description.follow": "با حسابی روی ماستودون می‌توانید {name} را برای دریافت فرسته‌هایش در خوراک خانگیتان دنبال کنید.",
@ -314,6 +323,8 @@
"interaction_modal.no_account_yet": "در ماستودون نیست؟",
"interaction_modal.on_another_server": "روی کارسازی دیگر",
"interaction_modal.on_this_server": "روی این کارساز",
"interaction_modal.sign_in": "شما در این کارساز وارد نشده‌اید. حسابتان کجا میزبانی شده؟",
"interaction_modal.sign_in_hint": "نکته: میزبانتان، پایگاه وبیست که رویش ثبت‌نام کرده‌اید. اگر به خاطر نمی‌آورید، به رایانامهٔ خوش‌آمد در صندوق ورودیتان بنگرید. همچنین می‌توانید نام کاربری کاملتان (چون @Mastodon@mastodon.social) را وارد کنید!",
"interaction_modal.title.favourite": "فرسته‌های برگزیدهٔ {name}",
"interaction_modal.title.follow": "پیگیری {name}",
"interaction_modal.title.reblog": "تقویت فرستهٔ {name}",
@ -330,6 +341,7 @@
"keyboard_shortcuts.direct": "باز کردن ستون اشاره‌های خصوصی",
"keyboard_shortcuts.down": "پایین بردن در سیاهه",
"keyboard_shortcuts.enter": "گشودن فرسته",
"keyboard_shortcuts.favourite": "پسندیدن فرسته",
"keyboard_shortcuts.favourites": "گشودن فهرست برگزیده‌ها",
"keyboard_shortcuts.federated": "گشودن خط زمانی همگانی",
"keyboard_shortcuts.heading": "میان‌برهای صفحه‌کلید",
@ -337,7 +349,7 @@
"keyboard_shortcuts.hotkey": "میان‌بر",
"keyboard_shortcuts.legend": "نمایش این نشانه",
"keyboard_shortcuts.local": "گشودن خط زمانی محلّی",
"keyboard_shortcuts.mention": "نام‌بردن نویسنده",
"keyboard_shortcuts.mention": "اشاره به نویسنده",
"keyboard_shortcuts.muted": "گشودن فهرست کاربران خموش",
"keyboard_shortcuts.my_profile": "گشودن نمایه‌تان",
"keyboard_shortcuts.notifications": "گشودن ستون آگاهی‌ها",
@ -361,7 +373,7 @@
"lightbox.previous": "قبلی",
"limited_account_hint.action": "به هر روی نمایه نشان داده شود",
"limited_account_hint.title": "این نمایه از سوی ناظم‌های {domain} پنهان شده.",
"link_preview.author": "بر اساس {name}",
"link_preview.author": "از {name}",
"lists.account.add": "افزودن به سیاهه",
"lists.account.remove": "برداشتن از سیاهه",
"lists.delete": "حذف سیاهه",
@ -402,6 +414,7 @@
"navigation_bar.lists": "سیاهه‌ها",
"navigation_bar.logout": "خروج",
"navigation_bar.mutes": "کاربران خموشانده",
"navigation_bar.opened_in_classic_interface": "فرسته‌ها، حساب‌ها و دیگر صفحه‌های خاص به طور پیش‌گزیده در میانای وب کلاسیک گشوده می‌شوند.",
"navigation_bar.personal": "شخصی",
"navigation_bar.pins": "فرسته‌های سنجاق شده",
"navigation_bar.preferences": "ترجیحات",
@ -411,11 +424,11 @@
"not_signed_in_indicator.not_signed_in": "برای دسترسی به این منبع باید وارد شوید.",
"notification.admin.report": "{name}، {target} را گزارش داد",
"notification.admin.sign_up": "{name} ثبت نام کرد",
"notification.favourite": "{name} نوشتهٔ شما را پسندید",
"notification.favourite": "{name} فرسته‌تان را برگزید",
"notification.follow": "{name} پی‌گیرتان شد",
"notification.follow_request": "{name} می‌خواهد پی‌گیر شما باشد",
"notification.mention": "{name} از شما نام برد",
"notification.own_poll": "نظرسنجی شما به پایان رسید",
"notification.follow_request": "{name} درخواست پی‌گیریتان را داد",
"notification.mention": "{name} به شما اشاره کرد",
"notification.own_poll": "نظرسنجیتان پایان یافت",
"notification.poll": "نظرسنجی‌ای که در آن رأی دادید به پایان رسیده است",
"notification.reblog": "{name} فرسته‌تان را تقویت کرد",
"notification.status": "{name} چیزی فرستاد",
@ -431,7 +444,7 @@
"notifications.column_settings.filter_bar.show_bar": "نمایش نوار پالایه",
"notifications.column_settings.follow": "پی‌گیرندگان جدید:",
"notifications.column_settings.follow_request": "درخواست‌های جدید پی‌گیری:",
"notifications.column_settings.mention": "نام‌بردنها:",
"notifications.column_settings.mention": "اشارهها:",
"notifications.column_settings.poll": "نتایج نظرسنجی:",
"notifications.column_settings.push": "آگاهی‌های ارسالی",
"notifications.column_settings.reblog": "تقویت‌ها:",
@ -445,7 +458,7 @@
"notifications.filter.boosts": "تقویت‌ها",
"notifications.filter.favourites": "برگزیده‌ها",
"notifications.filter.follows": "پی‌گرفتگان",
"notifications.filter.mentions": "نام‌بردنها",
"notifications.filter.mentions": "اشارهها",
"notifications.filter.polls": "نتایج نظرسنجی",
"notifications.filter.statuses": "به‌روز رسانی‌ها از کسانی که پی‌گیرشانید",
"notifications.grant_permission": "اعطای مجوز.",
@ -480,10 +493,10 @@
"onboarding.steps.setup_profile.title": "Customize your profile",
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"onboarding.tips.2fa": "<strong>آیا میدانستید؟</strong> شما می‌توانید با رفتن به تنظیمات حساب و فعال کردن احراز هویت دوعاملی، حساب خود را ایمن کنید؟ این قابلیت با هر نرم‌افزار TOTP دلخواه شما کار مي‌کند و نیازی به شماره تلفن ندارد!",
"onboarding.tips.accounts_from_other_servers": "<strong>آیا می‌دانستید؟</strong> چون ماستودون نامتمرکز است، بعضی از پروفایل‌هایی که با آنها برخورد می‌کنید درواقع روی کارساز هایی متفاوت از کارساز شما میزبانی می‌شوند. و شما همچنان می‌توانید با آنها به شکل راحت و روان تعامل کنید! کارساز آن‌ها در نیمه دوم نام کاربری‌شان است!",
"onboarding.tips.migration": "<strong>آیا می‌دانستید؟</strong> اگر احساس می‌کنید {domain} انتخاب کارساز خوبی برای آینده‌تان نیست، می‌توانید بدون از دست دادن پیگیرهایتان به یک کارساز ماستودون دیگر مهاجرت کنید. شما حتی می‌توانید کارساز خودتان را میزبانی کنید!",
"onboarding.tips.verification": "<strong>آیا می‌دانستید؟</strong> شما می‌توانید حساب خود را با قراردادن پیوندی به نمایه ماستودون‌تان روی وبسایت خود، و اضافه کردن وبسایت‌تان به نمایه خود تایید کنید. بدون نیاز به هیچ کارمزد یا سندی!",
"onboarding.tips.2fa": "<strong>آیا می‌دانستید؟</strong> می‌توانید با پریایی هویت‌سنجی دو عاملی در تنظیمات حساب، حسابتان را ایمن کنید؟ این قابلیت با هر نرم‌افزار TOTP دلخواه کار کرده و نیازی به شماره تلفن ندارد!",
"onboarding.tips.accounts_from_other_servers": "<strong>آیا می‌دانستید؟</strong> از آن‌جا که ماستودون نامتمرکز است، برخی نمایه‌ها که به آن‌ها برمی‌خورید روی کارسازهایی متفاوت از شما میزبانی می‌شوند و باز هم می‌توانید بدون مشکل با آن‌ها تعامل داشته باشید! کارسازشان در نیمه دوم نام کاربریشان است!",
"onboarding.tips.migration": "<strong>آیا می‌دانستید؟</strong> اگر احساس می‌کنید {domain} انتخاب کارساز خوبی برای آینده‌تان نیست، می‌توانید بدون از دست دادن پیگیرهایتان به کارساز ماستودون دیگری مهاجرت کنید. حتا می‌توانید کارساز خودتان را میزبانی کنید!",
"onboarding.tips.verification": "<strong>آیا می‌دانستید؟</strong> می‌توانید حسابتان را با گذاشتن پیوندی به نمایهٔ ماستودونتان روی پایگاه وب خود و افزودن پایگاه وبتان به نمایه‌تان تأیید کنید. بدون نیاز به هیچ کارمزد یا سندی!",
"password_confirmation.exceeds_maxlength": "تأییدیه گذرواژه از حداکثر طول گذرواژه بیشتر است",
"password_confirmation.mismatching": "تایید گذرواژه با گذرواژه مطابقت ندارد",
"picture_in_picture.restore": "برگرداندن",
@ -523,8 +536,9 @@
"relative_time.seconds": "{number} ثانیه",
"relative_time.today": "امروز",
"reply_indicator.cancel": "لغو",
"report.block": "مسدود کردن",
"report.block": "انسداد",
"report.block_explanation": "شما فرسته‌هایشان را نخواهید دید. آن‌ها نمی‌توانند فرسته‌هایتان را ببینند یا شما را پی‌بگیرند. آنها می‌توانند بگویند که مسدود شده‌اند.",
"report.categories.legal": "حقوقی",
"report.categories.other": "غیره",
"report.categories.spam": "هرزنامه",
"report.categories.violation": "محتوا یک یا چند قانون کارساز را نقض می‌کند",
@ -576,12 +590,18 @@
"search.quick_action.open_url": "باز کردن پیوند در ماستودون",
"search.quick_action.status_search": "فرسته‌های جور با {x}",
"search.search_or_paste": "جست‌وجو یا جایگذاری نشانی",
"search_popout.full_text_search_disabled_message": "روی {domain} موجود نیست.",
"search_popout.language_code": "کد زبان ایزو",
"search_popout.options": "گزینه‌های جست‌وجو",
"search_popout.quick_actions": "کنش‌های سریع",
"search_popout.recent": "جست‌وجوهای اخیر",
"search_popout.specific_date": "تاریخ مشخص",
"search_popout.user": "کاربر",
"search_results.accounts": "نمایه‌ها",
"search_results.all": "همه",
"search_results.hashtags": "برچسب‌ها",
"search_results.nothing_found": "چیزی برای این عبارت جست‌وجو یافت نشد",
"search_results.see_all": "دیدن همه",
"search_results.statuses": "فرسته‌ها",
"search_results.title": "جست‌وجو برای {q}",
"server_banner.about_active_users": "افرادی که در ۳۰ روز گذشته از این کارساز استفاده کرده‌اند (کاربران فعّال ماهانه)",
@ -597,15 +617,15 @@
"status.admin_account": "گشودن واسط مدیریت برای @{name}",
"status.admin_domain": "گشودن واسط مدیریت برای {domain}",
"status.admin_status": "گشودن این فرسته در واسط مدیریت",
"status.block": "مسدود کردن @{name}",
"status.block": "انسداد @{name}",
"status.bookmark": "نشانک",
"status.cancel_reblog_private": "ناتقویت",
"status.cannot_reblog": "این فرسته قابل تقویت نیست",
"status.copy": "رونوشت از پیوند فرسته",
"status.delete": "حذف",
"status.detailed_status": "نمایش کامل گفتگو",
"status.direct": "خصوصی به @{name} اشاره کنید",
"status.direct_indicator": "اشاره خصوصی",
"status.direct": "اشارهٔ خصوصی به @{name}",
"status.direct_indicator": "اشارهٔ خصوصی",
"status.edit": "ویرایش",
"status.edited": "ویرایش شده در {date}",
"status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد",
@ -620,7 +640,7 @@
"status.media.open": "کلیک برای گشودن",
"status.media.show": "کلیک برای نمایش",
"status.media_hidden": "رسانهٔ نهفته",
"status.mention": "نام‌بردن از @{name}",
"status.mention": "اشاره به @{name}",
"status.more": "بیشتر",
"status.mute": "خموشاندن @{name}",
"status.mute_conversation": "خموشاندن گفت‌وگو",

View File

@ -20,7 +20,7 @@
"account.block_short": "Bloquer",
"account.blocked": "Bloqué·e",
"account.browse_more_on_origin_server": "Parcourir davantage sur le profil original",
"account.cancel_follow_request": "Retirer la demande dabonnement",
"account.cancel_follow_request": "Annuler le suivi",
"account.direct": "Mention privée @{name}",
"account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose",
"account.domain_blocked": "Domaine bloqué",
@ -50,7 +50,7 @@
"account.moved_to": "{name} a indiqué que son nouveau compte est maintenant :",
"account.mute": "Masquer @{name}",
"account.mute_notifications_short": "Désactiver les alertes",
"account.mute_short": "Masquer",
"account.mute_short": "Mettre en sourdine",
"account.muted": "Masqué·e",
"account.no_bio": "Aucune description fournie.",
"account.open_original_page": "Ouvrir la page d'origine",
@ -108,7 +108,7 @@
"closed_registrations_modal.title": "Inscription sur Mastodon",
"column.about": "À propos",
"column.blocks": "Comptes bloqués",
"column.bookmarks": "Signets",
"column.bookmarks": "Marque-pages",
"column.community": "Fil public local",
"column.direct": "Mentions privées",
"column.directory": "Parcourir les profils",
@ -149,9 +149,9 @@
"compose_form.poll.option_placeholder": "Choix {number}",
"compose_form.poll.remove_option": "Supprimer ce choix",
"compose_form.poll.switch_to_multiple": "Changer le sondage pour autoriser plusieurs choix",
"compose_form.poll.switch_to_single": "Changer le sondage pour autoriser qu'un seul choix",
"compose_form.poll.switch_to_single": "Modifier le sondage pour autoriser qu'un seul choix",
"compose_form.publish": "Publier",
"compose_form.publish_form": "Publier",
"compose_form.publish_form": "Nouvelle publication",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Enregistrer les modifications",
"compose_form.sensitive.hide": "{count, plural, one {Marquer le média comme sensible} other {Marquer les médias comme sensibles}}",

View File

@ -683,9 +683,9 @@
"time_remaining.moments": "Cha doir e ach greiseag",
"time_remaining.seconds": "{number, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air fhàgail",
"timeline_hint.remote_resource_not_displayed": "Cha dèid {resource} o fhrithealaichean eile a shealltainn.",
"timeline_hint.resources.followers": "Luchd-leantainn",
"timeline_hint.resources.follows": "A leantainn",
"timeline_hint.resources.statuses": "Postaichean nas sine",
"timeline_hint.resources.followers": "luchd-leantainn",
"timeline_hint.resources.follows": "an fheadhainn gan leantainn",
"timeline_hint.resources.statuses": "postaichean nas sine",
"trends.counter_by_accounts": "{count, plural, one {{counter} neach} two {{counter} neach} few {{counter} daoine} other {{counter} duine}} {days, plural, one {san {days} latha} two {san {days} latha} few {sna {days} làithean} other {sna {days} latha}} seo chaidh",
"trends.trending_now": "A treandadh an-dràsta",
"ui.beforeunload": "Caillidh tu an dreachd agad ma dhfhàgas tu Mastodon an-dràsta.",

View File

@ -135,7 +135,7 @@
"community.column_settings.remote_only": "Só remoto",
"compose.language.change": "Elixe o idioma",
"compose.language.search": "Buscar idiomas...",
"compose.published.body": "Publicación publicada.",
"compose.published.body": "Mensaxe publicada.",
"compose.published.open": "Abrir",
"compose.saved.body": "Publicación gardada.",
"compose_form.direct_message_warning_learn_more": "Saber máis",

View File

@ -137,7 +137,7 @@
"compose.language.search": "언어 검색...",
"compose.published.body": "게시하였습니다.",
"compose.published.open": "열기",
"compose.saved.body": "게시물을 저장했어요.",
"compose.saved.body": "게시물이 저장되었습니다.",
"compose_form.direct_message_warning_learn_more": "더 알아보기",
"compose_form.encryption_warning": "마스토돈의 게시물들은 종단간 암호화가 되지 않습니다. 민감한 정보를 마스토돈을 통해 전달하지 마세요.",
"compose_form.hashtag_warning": "이 게시물은 전체공개가 아니기 때문에 어떤 해시태그로도 검색 되지 않습니다. 전체공개로 게시 된 게시물만이 해시태그로 검색될 수 있습니다.",
@ -307,12 +307,12 @@
"home.column_settings.basic": "기본",
"home.column_settings.show_reblogs": "부스트 표시",
"home.column_settings.show_replies": "답글 표시",
"home.explore_prompt.body": "홈 피드에는 내가 팔로우한 해시태그 그리고 팔로우한 사람과 부스트가 함께 나타나요. 너무 고요하게 느껴진다면, 다음 것들을 살펴볼 수 있어요:",
"home.explore_prompt.body": "홈 피드에는 내가 팔로우한 해시태그 그리고 팔로우한 사람과 부스트가 함께 나타납니다. 너무 고요하게 느껴진다면, 다음 것들을 살펴볼 수 있습니다.",
"home.explore_prompt.title": "이곳은 마스토돈의 내 본거지입니다.",
"home.hide_announcements": "공지사항 숨기기",
"home.pending_critical_update.body": "서둘러 마스토돈 서버를 업데이트 하세요!",
"home.pending_critical_update.link": "업데이트 보기",
"home.pending_critical_update.title": "긴급 보안 업데이트가 있어요!",
"home.pending_critical_update.title": "긴급 보안 업데이트가 있습니다!",
"home.show_announcements": "공지사항 보기",
"interaction_modal.description.favourite": "마스토돈 계정을 통해, 게시물을 좋아하는 것으로 작성자에게 호의를 표하고 나중에 보기 위해 저장할 수 있습니다.",
"interaction_modal.description.follow": "마스토돈 계정을 통해, {name} 님을 팔로우 하고 그의 게시물을 홈 피드에서 받아 볼 수 있습니다.",
@ -487,7 +487,7 @@
"onboarding.start.title": "해내셨군요!",
"onboarding.steps.follow_people.body": "흥미로운 사람들을 팔로우하는 것은 마스토돈의 전부입니다.",
"onboarding.steps.follow_people.title": "내게 맞는 홈 피드 꾸미기",
"onboarding.steps.publish_status.body": "글, 사진, 영상, 투표 또는 {emoji}와 함께 세상에 인사해보세요.",
"onboarding.steps.publish_status.body": "글, 사진, 영상, 설문 또는 {emoji}와 함께 세상에 인사해보세요.",
"onboarding.steps.publish_status.title": "첫번째 게시물 쓰기",
"onboarding.steps.setup_profile.body": "의미있는 프로필을 작성해 상호작용을 늘려보세요.",
"onboarding.steps.setup_profile.title": "프로필 꾸미기",
@ -554,7 +554,7 @@
"report.mute_explanation": "당신은 해당 계정의 게시물을 보지 않게 됩니다. 해당 계정은 여전히 당신을 팔로우 하거나 당신의 게시물을 볼 수 있으며 해당 계정은 자신이 뮤트 되었는지 알지 못합니다.",
"report.next": "다음",
"report.placeholder": "코멘트",
"report.reasons.dislike": "마음에 안듭니다",
"report.reasons.dislike": "마음에 안 듭니다",
"report.reasons.dislike_description": "내가 보기 싫은 종류에 속합니다",
"report.reasons.legal": "불법입니다",
"report.reasons.legal_description": "내 서버가 속한 국가의 법률을 위반한다고 생각합니다",

View File

@ -379,7 +379,7 @@
"lists.delete": "Lijst verwijderen",
"lists.edit": "Lijst bewerken",
"lists.edit.submit": "Titel veranderen",
"lists.exclusive": "Verberg deze berichten op je startpagina",
"lists.exclusive": "Verberg deze berichten op je starttijdlijn",
"lists.new.create": "Lijst toevoegen",
"lists.new.title_placeholder": "Naam nieuwe lijst",
"lists.replies_policy.followed": "Elke gevolgde gebruiker",

View File

@ -310,6 +310,9 @@
"home.explore_prompt.body": "Tidslinjen din inneholder en blanding av innlegg fra emneknagger du har valgt å følge, personene du har valgt å følge, og innleggene de fremhever. Hvis det føles for stille, kan det være lurt å:",
"home.explore_prompt.title": "Dette er hjemmet ditt i Mastodon.",
"home.hide_announcements": "Skjul kunngjøring",
"home.pending_critical_update.body": "Vennligst oppdater Mastodon-serveren din så snart som mulig!",
"home.pending_critical_update.link": "Se oppdateringer",
"home.pending_critical_update.title": "Kritisk sikkerhetsoppdatering er tilgjengelig!",
"home.show_announcements": "Vis kunngjøring",
"interaction_modal.description.favourite": "Med en konto på Mastodon, kan du favorittmarkere dette innlegget for å la forfatteren vite at du satte pris på det, og lagre innlegget til senere.",
"interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i tidslinjen din.",
@ -411,6 +414,7 @@
"navigation_bar.lists": "Lister",
"navigation_bar.logout": "Logg ut",
"navigation_bar.mutes": "Dempede brukere",
"navigation_bar.opened_in_classic_interface": "Innlegg, kontoer og andre spesifikke sider åpnes som standard i det klassiske webgrensesnittet.",
"navigation_bar.personal": "Personlig",
"navigation_bar.pins": "Festede innlegg",
"navigation_bar.preferences": "Innstillinger",
@ -586,6 +590,7 @@
"search.quick_action.open_url": "Åpne URL i Mastodon",
"search.quick_action.status_search": "Innlegg som samsvarer med {x}",
"search.search_or_paste": "Søk eller lim inn URL",
"search_popout.full_text_search_disabled_message": "Ikke tilgjengelig på {domain}.",
"search_popout.language_code": "ISO språkkode",
"search_popout.options": "Alternativer for søk",
"search_popout.quick_actions": "Hurtighandlinger",
@ -596,6 +601,7 @@
"search_results.all": "Alle",
"search_results.hashtags": "Emneknagger",
"search_results.nothing_found": "Fant ikke noe for disse søkeordene",
"search_results.see_all": "Se alle",
"search_results.statuses": "Innlegg",
"search_results.title": "Søk etter {q}",
"server_banner.about_active_users": "Personer som har brukt denne serveren i løpet av de siste 30 dagene (aktive brukere månedlig)",

View File

@ -47,7 +47,7 @@
"account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.",
"account.media": "Médiá",
"account.mention": "Spomeň @{name}",
"account.moved_to": "{name} uvádza, že jeho/jej nový účet je:",
"account.moved_to": "{name} uvádza, že jeho/jej nový účet je teraz:",
"account.mute": "Nevšímaj si @{name}",
"account.mute_notifications_short": "Stíš oboznámenia",
"account.mute_short": "Nevšímaj si",
@ -303,6 +303,7 @@
"home.column_settings.basic": "Základné",
"home.column_settings.show_reblogs": "Ukáž vyzdvihnuté",
"home.column_settings.show_replies": "Ukáž odpovede",
"home.explore_prompt.title": "Toto je tvoja domovina v rámci Mastodonu.",
"home.hide_announcements": "Skry oboznámenia",
"home.pending_critical_update.body": "Prosím aktualizuj si svoj Mastodon server, ako náhle to bude možné!",
"home.pending_critical_update.link": "Pozri aktualizácie",

View File

@ -302,8 +302,8 @@
"hashtag.follow": "Zaprati heš oznaku",
"hashtag.unfollow": "Otprati heš oznaku",
"hashtags.and_other": "…i {count, plural, one {još #} few {još #}other {još #}}",
"home.actions.go_to_explore": "Pogledaj šta je u trendu",
"home.actions.go_to_suggestions": "Pronađite ljude za praćenje",
"home.actions.go_to_explore": "Pogledate šta je u trendu",
"home.actions.go_to_suggestions": "Pronađete ljude koje biste pratili",
"home.column_settings.basic": "Osnovna",
"home.column_settings.show_reblogs": "Prikaži podržavanja",
"home.column_settings.show_replies": "Prikaži odgovore",
@ -590,6 +590,7 @@
"search.quick_action.open_url": "Otvori URL adresu u Mastodon-u",
"search.quick_action.status_search": "Podudaranje objava {x}",
"search.search_or_paste": "Pretražite ili unesite adresu",
"search_popout.full_text_search_disabled_message": "Nije dostupno na {domain}.",
"search_popout.language_code": "ISO kod jezika",
"search_popout.options": "Opcije pretrage",
"search_popout.quick_actions": "Brze radnje",

View File

@ -302,8 +302,8 @@
"hashtag.follow": "Запрати хеш ознаку",
"hashtag.unfollow": "Отпрати хеш ознаку",
"hashtags.and_other": "…и {count, plural, one {још #} few {још #}other {још #}}",
"home.actions.go_to_explore": "Погледај шта је у тренду",
"home.actions.go_to_suggestions": "Пронађите људе за праћење",
"home.actions.go_to_explore": "Погледате шта је у тренду",
"home.actions.go_to_suggestions": "Пронађе људе које бисте пратили",
"home.column_settings.basic": "Основна",
"home.column_settings.show_reblogs": "Прикажи подржавања",
"home.column_settings.show_replies": "Прикажи одговоре",
@ -590,6 +590,7 @@
"search.quick_action.open_url": "Отвори URL адресу у Mastodon-у",
"search.quick_action.status_search": "Подударање објава {x}",
"search.search_or_paste": "Претражите или унесите адресу",
"search_popout.full_text_search_disabled_message": "Није доступно на {domain}.",
"search_popout.language_code": "ISO код језика",
"search_popout.options": "Опције претраге",
"search_popout.quick_actions": "Брзе радње",

View File

@ -341,8 +341,8 @@
"keyboard_shortcuts.direct": "mở mục nhắn riêng",
"keyboard_shortcuts.down": "di chuyển xuống dưới danh sách",
"keyboard_shortcuts.enter": "viết tút mới",
"keyboard_shortcuts.favourite": "Thích tút",
"keyboard_shortcuts.favourites": "Mở lượt thích",
"keyboard_shortcuts.favourite": "thích tút",
"keyboard_shortcuts.favourites": "mở lượt thích",
"keyboard_shortcuts.federated": "mở mạng liên hợp",
"keyboard_shortcuts.heading": "Danh sách phím tắt",
"keyboard_shortcuts.home": "mở trang chính",
@ -557,7 +557,7 @@
"report.reasons.dislike": "Tôi không thích nó",
"report.reasons.dislike_description": "Đó không phải là thứ gì mà bạn muốn thấy",
"report.reasons.legal": "Vi phạm pháp luật",
"report.reasons.legal_description": "Bạn tin rằng nó vi phạm pháp luật ở nơi đặt máy chủ hoặc nước bạn",
"report.reasons.legal_description": "Vi phạm pháp luật ở nơi đặt máy chủ hoặc nước bạn",
"report.reasons.other": "Một lý do khác",
"report.reasons.other_description": "Vấn đề không nằm trong những mục trên",
"report.reasons.spam": "Đây là spam",
@ -592,7 +592,7 @@
"search.search_or_paste": "Tìm kiếm hoặc nhập URL",
"search_popout.full_text_search_disabled_message": "Không khả dụng trên {domain}.",
"search_popout.language_code": "Mã ngôn ngữ ISO",
"search_popout.options": "Tuỳ chọn tìm kiếm",
"search_popout.options": "Tùy chọn tìm kiếm",
"search_popout.quick_actions": "Thao tác nhanh",
"search_popout.recent": "Tìm kiếm gần đây",
"search_popout.specific_date": "ngày cụ thể",

View File

@ -137,7 +137,7 @@
"compose.language.search": "搜索语言...",
"compose.published.body": "嘟文已发布。",
"compose.published.open": "打开",
"compose.saved.body": "帖子已保存。",
"compose.saved.body": "嘟文已保存。",
"compose_form.direct_message_warning_learn_more": "详细了解",
"compose_form.encryption_warning": "Mastodon 上的嘟文未经端到端加密。请勿在 Mastodon 上分享敏感信息。",
"compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。",
@ -199,7 +199,7 @@
"directory.recently_active": "最近活跃",
"disabled_account_banner.account_settings": "账号设置",
"disabled_account_banner.text": "您的账号 {disabledAccount} 目前已被禁用。",
"dismissable_banner.community_timeline": "这些是来自 {domain} 用户的最新公嘟文。",
"dismissable_banner.community_timeline": "这些是来自 {domain} 用户的最新公嘟文。",
"dismissable_banner.dismiss": "忽略",
"dismissable_banner.explore_links": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。",
"dismissable_banner.explore_statuses": "这些是目前在社交网络上引起关注的嘟文。嘟文的喜欢和转嘟次数越多,排名越高。",
@ -414,7 +414,7 @@
"navigation_bar.lists": "列表",
"navigation_bar.logout": "退出登录",
"navigation_bar.mutes": "已隐藏的用户",
"navigation_bar.opened_in_classic_interface": "帖子、账户和其他特定页面默认在经典网页界面中打开。",
"navigation_bar.opened_in_classic_interface": "嘟文、账户和其他特定页面默认在经典网页界面中打开。",
"navigation_bar.personal": "个人",
"navigation_bar.pins": "置顶嘟文",
"navigation_bar.preferences": "首选项",
@ -473,7 +473,7 @@
"onboarding.action.back": "带我返回",
"onboarding.actions.back": "带我返回",
"onboarding.actions.go_to_explore": "看看有什么新鲜事",
"onboarding.actions.go_to_home": "转到主页订阅流",
"onboarding.actions.go_to_home": "转到主页动态",
"onboarding.compose.template": "你好 #Mastodon",
"onboarding.follows.empty": "很抱歉,现在无法显示任何结果。您可以尝试使用搜索或浏览探索页面来查找要关注的人,或稍后再试。",
"onboarding.follows.lead": "你管理你自己的家庭饲料。你关注的人越多,它将越活跃和有趣。 这些配置文件可能是一个很好的起点——你可以随时取消关注它们!",
@ -575,7 +575,7 @@
"report.thanks.title": "不想看到这个内容?",
"report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。",
"report.unfollow": "取消关注 @{name}",
"report.unfollow_explanation": "你正在关注此账户。如果要想在你的主页上不再看到他们的帖子,取消对他们的关注即可。",
"report.unfollow_explanation": "你正在关注此账户。如果不想继续在主页看到他们的嘟文,取消对他们的关注即可。",
"report_notification.attached_statuses": "附上 {count} 条嘟文",
"report_notification.categories.legal": "法律义务",
"report_notification.categories.other": "其他",
@ -588,7 +588,7 @@
"search.quick_action.go_to_account": "前往 {x} 个人资料",
"search.quick_action.go_to_hashtag": "前往标签 {x}",
"search.quick_action.open_url": "在 Mastodon 中打开网址",
"search.quick_action.status_search": "匹配 {x} 的帖子",
"search.quick_action.status_search": "匹配 {x} 的嘟文",
"search.search_or_paste": "搜索或输入网址",
"search_popout.full_text_search_disabled_message": "在 {domain} 不可用",
"search_popout.language_code": "ISO语言代码",

View File

@ -600,6 +600,7 @@
"search_results.all": "全部",
"search_results.hashtags": "標籤",
"search_results.nothing_found": "找不到與搜尋字詞相關的內容",
"search_results.see_all": "顯示全部",
"search_results.statuses": "文章",
"search_results.title": "搜尋 {q}",
"server_banner.about_active_users": "在最近 30 天內內使用此伺服器的人 (月活躍用戶)",

View File

@ -1,19 +0,0 @@
import Immutable from 'immutable';
import {
DROPDOWN_MENU_OPEN,
DROPDOWN_MENU_CLOSE,
} from '../actions/dropdown_menu';
const initialState = Immutable.Map({ openId: null, keyboard: false, scroll_key: null });
export default function dropdownMenu(state = initialState, action) {
switch (action.type) {
case DROPDOWN_MENU_OPEN:
return state.merge({ openId: action.id, keyboard: action.keyboard, scroll_key: action.scroll_key });
case DROPDOWN_MENU_CLOSE:
return state.get('openId') === action.id ? state.set('openId', null).set('scroll_key', null) : state;
default:
return state;
}
}

View File

@ -0,0 +1,33 @@
import { createReducer } from '@reduxjs/toolkit';
import { closeDropdownMenu, openDropdownMenu } from '../actions/dropdown_menu';
interface DropdownMenuState {
openId: string | null;
keyboard: boolean;
scrollKey: string | null;
}
const initialState: DropdownMenuState = {
openId: null,
keyboard: false,
scrollKey: null,
};
export const dropdownMenuReducer = createReducer(initialState, (builder) => {
builder
.addCase(
openDropdownMenu,
(state, { payload: { id, keyboard, scrollKey } }) => {
state.openId = id;
state.keyboard = keyboard;
state.scrollKey = scrollKey;
},
)
.addCase(closeDropdownMenu, (state, { payload: { id } }) => {
if (state.openId === id) {
state.openId = null;
state.scrollKey = null;
}
});
});

View File

@ -15,7 +15,7 @@ import contexts from './contexts';
import conversations from './conversations';
import custom_emojis from './custom_emojis';
import domain_lists from './domain_lists';
import dropdown_menu from './dropdown_menu';
import { dropdownMenuReducer } from './dropdown_menu';
import filters from './filters';
import followed_tags from './followed_tags';
import height_cache from './height_cache';
@ -46,7 +46,7 @@ import user_lists from './user_lists';
const reducers = {
announcements,
dropdown_menu,
dropdownMenu: dropdownMenuReducer,
timelines,
meta,
alerts,

View File

@ -1,13 +1,13 @@
import { Record as ImmutableRecord, Stack } from 'immutable';
import type { PayloadAction } from '@reduxjs/toolkit';
import type { Reducer } from '@reduxjs/toolkit';
import { COMPOSE_UPLOAD_CHANGE_SUCCESS } from '../actions/compose';
import type { ModalType } from '../actions/modal';
import { openModal, closeModal } from '../actions/modal';
import { TIMELINE_DELETE } from '../actions/timelines';
type ModalProps = Record<string, unknown>;
export type ModalProps = Record<string, unknown>;
interface Modal {
modalType: ModalType;
modalProps: ModalProps;
@ -62,33 +62,22 @@ const pushModal = (
});
};
export function modalReducer(
state: State = initialState,
action: PayloadAction<{
modalType: ModalType;
ignoreFocus: boolean;
modalProps: Record<string, unknown>;
}>,
) {
switch (action.type) {
case openModal.type:
return pushModal(
state,
action.payload.modalType,
action.payload.modalProps,
);
case closeModal.type:
return popModal(state, action.payload);
case COMPOSE_UPLOAD_CHANGE_SUCCESS:
return popModal(state, { modalType: 'FOCAL_POINT', ignoreFocus: false });
case TIMELINE_DELETE:
return state.update('stack', (stack) =>
stack.filterNot(
// @ts-expect-error TIMELINE_DELETE action is not typed yet.
(modal) => modal.get('modalProps').statusId === action.id,
),
);
default:
return state;
}
}
export const modalReducer: Reducer<State> = (state = initialState, action) => {
if (openModal.match(action))
return pushModal(
state,
action.payload.modalType,
action.payload.modalProps,
);
else if (closeModal.match(action)) return popModal(state, action.payload);
// TODO: type those actions
else if (action.type === COMPOSE_UPLOAD_CHANGE_SUCCESS)
return popModal(state, { modalType: 'FOCAL_POINT', ignoreFocus: false });
else if (action.type === TIMELINE_DELETE)
return state.update('stack', (stack) =>
stack.filterNot(
(modal) => modal.get('modalProps').statusId === action.id,
),
);
else return state;
};

View File

@ -284,6 +284,7 @@
font-size: 11px;
padding: 0 3px;
line-height: 27px;
white-space: nowrap;
&:hover,
&:active,

View File

@ -41,13 +41,13 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck
elsif cluster_health['status'] == 'red'
Admin::SystemCheck::Message.new(:elasticsearch_health_red)
elsif cluster_health['number_of_nodes'] < 2 && es_preset != 'single_node_cluster'
Admin::SystemCheck::Message.new(:elasticsearch_preset_single_node, nil, 'https://docs.joinmastodon.org/admin/optional/elasticsearch/#scaling')
Admin::SystemCheck::Message.new(:elasticsearch_preset_single_node, nil, 'https://docs.joinmastodon.org/admin/elasticsearch/#scaling')
elsif Chewy.client.indices.get_settings[Chewy::Stash::Specification.index_name]&.dig('settings', 'index', 'number_of_replicas')&.to_i&.positive? && es_preset == 'single_node_cluster'
Admin::SystemCheck::Message.new(:elasticsearch_reset_chewy)
elsif cluster_health['status'] == 'yellow'
Admin::SystemCheck::Message.new(:elasticsearch_health_yellow)
else
Admin::SystemCheck::Message.new(:elasticsearch_preset, nil, 'https://docs.joinmastodon.org/admin/optional/elasticsearch/#scaling')
Admin::SystemCheck::Message.new(:elasticsearch_preset, nil, 'https://docs.joinmastodon.org/admin/elasticsearch/#scaling')
end
rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error
Admin::SystemCheck::Message.new(:elasticsearch_running_check)

View File

@ -14,6 +14,8 @@ class PermalinkRedirector
find_account_url_by_name(first_segment)
elsif accounts_request? && record_integer_id_request?
find_account_url_by_id(second_segment)
elsif @path.start_with?('/deck')
@path.delete_prefix('/deck')
end
end
@ -52,7 +54,7 @@ class PermalinkRedirector
end
def path_segments
@path_segments ||= @path.delete_prefix('/').split('/')
@path_segments ||= @path.delete_prefix('/deck').delete_prefix('/').split('/')
end
def find_status_url_by_id(id)

View File

@ -5,7 +5,7 @@ class ApplicationRecord < ActiveRecord::Base
include Remotable
connects_to database: { writing: :primary, reading: ENV['REPLICA_DB_NAME'] || ENV['REPLICA_DATABASE_URL'] ? :replica : :primary }
connects_to database: { writing: :primary, reading: :replica } if DatabaseHelper.replica_enabled?
class << self
def update_index(_type_name, *_args, &_block)

View File

@ -18,7 +18,7 @@ module AccountAvatar
included do
# Avatar upload
has_attached_file :avatar, styles: ->(f) { avatar_styles(f) }, convert_options: { all: '+profile "!icc,*" +set modify-date +set create-date' }, processors: [:lazy_thumbnail]
has_attached_file :avatar, styles: ->(f) { avatar_styles(f) }, convert_options: { all: '+profile "!icc,*" +set date:modify +set date:create +set date:timestamp' }, processors: [:lazy_thumbnail]
validates_attachment_content_type :avatar, content_type: IMAGE_MIME_TYPES
validates_attachment_size :avatar, less_than: LIMIT
remotable_attachment :avatar, LIMIT, suppress_errors: false

View File

@ -19,7 +19,7 @@ module AccountHeader
included do
# Header upload
has_attached_file :header, styles: ->(f) { header_styles(f) }, convert_options: { all: '+profile "!icc,*" +set modify-date +set create-date' }, processors: [:lazy_thumbnail]
has_attached_file :header, styles: ->(f) { header_styles(f) }, convert_options: { all: '+profile "!icc,*" +set date:modify +set date:create +set date:timestamp' }, processors: [:lazy_thumbnail]
validates_attachment_content_type :header, content_type: IMAGE_MIME_TYPES
validates_attachment_size :header, less_than: LIMIT
remotable_attachment :header, LIMIT, suppress_errors: false

View File

@ -40,7 +40,7 @@ class CustomEmoji < ApplicationRecord
has_one :local_counterpart, -> { where(domain: nil) }, class_name: 'CustomEmoji', primary_key: :shortcode, foreign_key: :shortcode, inverse_of: false
has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set modify-date +set create-date' } }, validate_media_type: false
has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' } }, validate_media_type: false
before_validation :downcase_domain

View File

@ -171,7 +171,7 @@ class MediaAttachment < ApplicationRecord
DEFAULT_STYLES = [:original].freeze
GLOBAL_CONVERT_OPTIONS = {
all: '-quality 90 +profile "!icc,*" +set modify-date -define jpeg:dct-method=float +set create-date',
all: '-quality 90 +profile "!icc,*" +set date:modify +set date:create +set date:timestamp -define jpeg:dct-method=float',
}.freeze
belongs_to :account, inverse_of: :media_attachments, optional: true

View File

@ -53,7 +53,7 @@ class PreviewCard < ApplicationRecord
has_and_belongs_to_many :statuses
has_one :trend, class_name: 'PreviewCardTrend', inverse_of: :preview_card, dependent: :destroy
has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 90 +profile "!icc,*" +set modify-date +set create-date' }, validate_media_type: false
has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 90 +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' }, validate_media_type: false
validates :url, presence: true, uniqueness: true
validates_attachment_content_type :image, content_type: IMAGE_MIME_TYPES

View File

@ -27,7 +27,7 @@ class PreviewCardProvider < ApplicationRecord
validates :domain, presence: true, uniqueness: true, domain: true
has_attached_file :icon, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set modify-date +set create-date' } }, validate_media_type: false
has_attached_file :icon, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' } }, validate_media_type: false
validates_attachment :icon, content_type: { content_type: ICON_MIME_TYPES }, size: { less_than: LIMIT }
remotable_attachment :icon, LIMIT

View File

@ -62,13 +62,13 @@ class RelationshipFilter
def relationship_scope(value)
case value
when 'following'
account.following.eager_load(:account_stat).reorder(nil)
account.following.includes(:account_stat).reorder(nil)
when 'followed_by'
account.followers.eager_load(:account_stat).reorder(nil)
account.followers.includes(:account_stat).reorder(nil)
when 'mutual'
account.followers.eager_load(:account_stat).reorder(nil).merge(Account.where(id: account.following))
account.followers.includes(:account_stat).reorder(nil).merge(Account.where(id: account.following))
when 'invited'
Account.joins(user: :invite).merge(Invite.where(user: account.user)).eager_load(:account_stat).reorder(nil)
Account.joins(user: :invite).merge(Invite.where(user: account.user)).includes(:account_stat).reorder(nil)
else
raise Mastodon::InvalidParameterError, "Unknown relationship: #{value}"
end

View File

@ -41,7 +41,7 @@ class SiteUpload < ApplicationRecord
mascot: {}.freeze,
}.freeze
has_attached_file :file, styles: ->(file) { STYLES[file.instance.var.to_sym] }, convert_options: { all: '-coalesce +profile "!icc,*" +set modify-date +set create-date' }, processors: [:lazy_thumbnail, :blurhash_transcoder, :type_corrector]
has_attached_file :file, styles: ->(file) { STYLES[file.instance.var.to_sym] }, convert_options: { all: '-coalesce +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' }, processors: [:lazy_thumbnail, :blurhash_transcoder, :type_corrector]
validates_attachment_content_type :file, content_type: %r{\Aimage/.*\z}
validates :file, presence: true

View File

@ -4,6 +4,8 @@ class REST::AccountSerializer < ActiveModel::Serializer
include RoutingHelper
include FormattingHelper
# Please update `app/javascript/mastodon/api_types/accounts.ts` when making changes to the attributes
attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :group, :created_at,
:note, :url, :uri, :avatar, :avatar_static, :header, :header_static,
:followers_count, :following_count, :statuses_count, :last_status_at

View File

@ -3,6 +3,8 @@
class REST::CustomEmojiSerializer < ActiveModel::Serializer
include RoutingHelper
# Please update `app/javascript/mastodon/api_types/custom_emoji.ts` when making changes to the attributes
attributes :shortcode, :url, :static_url, :visible_in_picker
attribute :category, if: :category_loaded?

View File

@ -1,6 +1,8 @@
# frozen_string_literal: true
class REST::RelationshipSerializer < ActiveModel::Serializer
# Please update `app/javascript/mastodon/api_types/relationships.ts` when making changes to the attributes
attributes :id, :following, :showing_reblogs, :notifying, :languages, :followed_by,
:blocking, :blocked_by, :muting, :muting_notifications,
:requested, :requested_by, :domain_blocking, :endorsed, :note

View File

@ -26,7 +26,7 @@ unless Rails.env.development?
assets_host = Rails.configuration.action_controller.asset_host || "https://#{ENV['WEB_DOMAIN'] || ENV['LOCAL_DOMAIN']}"
data_hosts = [assets_host]
if ENV['S3_ENABLED'] == 'true'
if ENV['S3_ENABLED'] == 'true' || ENV['AZURE_ENABLED'] == 'true'
attachments_host = "https://#{ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST'] || ENV['AZURE_ALIAS_HOST'] || ENV['S3_HOSTNAME'] || "s3-#{ENV['S3_REGION'] || 'us-east-1'}.amazonaws.com"}"
attachments_host = "https://#{Addressable::URI.parse(attachments_host).host}"
elsif ENV['SWIFT_ENABLED'] == 'true'

View File

@ -14,7 +14,7 @@ ca:
following: Seguint
instance_actor_flash: Aquest compte és un actor virtual usat per a representar el mateix servidor i no cap usuari individual. Es fa servir per a federar i no s'hauria d'esborrar.
last_active: última activitat
link_verified_on: La propietat d'aquest enllaç s'ha verificat el %{date}
link_verified_on: La propietat d'aquest enllaç va quedar verificada el %{date}
nothing_here: No hi ha res aquí!
pin_errors:
following: Has d'estar seguint la persona que vulguis avalar
@ -1464,7 +1464,7 @@ ca:
action: Respon
body: "%{name} t'ha mencionat en:"
subject: "%{name} t'ha mencionat"
title: Menció nova
title: Nova menció
poll:
subject: Ha finalitzat l'enquesta de %{name}
reblog:

View File

@ -315,6 +315,7 @@ cs:
unpublish: Skrýt
unpublished_msg: Zveřejněné oznámení bylo úspěšně skryto!
updated_msg: Oznámení bylo úspěšně aktualizováno!
critical_update_pending: Čeká se na kritickou aktualizaci
custom_emojis:
assign_category: Přiřadit kategorii
by_domain: Doména
@ -396,6 +397,15 @@ cs:
undo: Zakázat federaci s doménou
domain_blocks:
add_new: Přidat novou blokaci domény
confirm_suspension:
cancel: Zrušit
confirm: Pozastavit
permanent_action: Zrušení pozastavení neobnoví žádná data ani vztah.
preamble_html: Chystáte se pozastavit <strong>%{domain}</strong> a jeho poddomény.
remove_all_data: Tímto odstraníte z vašeho serveru všechen obsah, média a profilové údaje účtů této domény.
stop_communication: Váš server přestane komunikovat s těmito servery.
title: Potvrďte blokování domény %{domain}
undo_relationships: Toto vrátí jakýkoliv vztah sledování mezi účty na těchto serverech a vaším.
created_msg: Blokace domény se právě vyřizuje
destroyed_msg: Blokace domény byla odvolána
domain: Doména
@ -759,6 +769,9 @@ cs:
branding:
preamble: Značka vašeho serveru jej odlišuje od ostatních serverů v síti. Tyto informace se mohou zobrazovat v různých prostředích, například ve webovém rozhraní Mastodonu, v nativních aplikacích, v náhledech odkazů na jiných webových stránkách a v aplikacích pro zasílání zpráv atd. Z tohoto důvodu je nejlepší, aby tyto informace byly jasné, krátké a stručné.
title: Značka
captcha_enabled:
desc_html: Toto spoléhá na externí skripty z hCaptcha, což může být budit obavy o bezpečnost a soukromí. Navíc <strong>to může způsobit, že proces registrace bude pro některé osoby (zejména se zdravotním postižením) hůře přístupný</strong>. Z těchto důvodů zvažte alternativní přístup, jako je schvalování registrace nebo pozvánky.
title: Vyžadovat po nových uživatelích, aby vyřešili CAPTCHU pro potvrzení jejich účtu
content_retention:
preamble: Určuje, jak je obsah generovaný uživatelem uložen v Mastodonu.
title: Uchovávání obsahu
@ -786,9 +799,24 @@ cs:
approved: Pro registraci je vyžadováno schválení
none: Nikdo se nemůže registrovat
open: Kdokoliv se může registrovat
security:
authorized_fetch: Vyžadovat autentizaci od federovaných serverů
authorized_fetch_overridden_hint: Momentálně nemůžete změnit toto nastavení, protože je přepsáno proměnnou prostředí.
title: Nastavení serveru
site_uploads:
delete: Odstranit nahraný soubor
destroyed_msg: Upload stránky byl úspěšně smazán!
software_updates:
critical_update: Kritické — aktualizujte, prosím, co nejdříve
documentation_link: Zjistit více
release_notes: Poznámky k vydání
title: Dostupné aktualizace
type: Typ
types:
major: Hlavní vydání
minor: Menší vydání
patch: Záplatové vydání — opravy chyb a rychle aplikovatelné změny
version: Verze
statuses:
account: Autor
application: Aplikace
@ -829,6 +857,20 @@ cs:
system_checks:
database_schema_check:
message_html: Na spuštění čekají databázové migrace. Nechte je prosím proběhnout pro zajištění očekávaného chování aplikace
elasticsearch_health_red:
message_html: Elasticsearch cluster je nezdravý (červený stav), vyhledávací funkce jsou nedostupné
elasticsearch_health_yellow:
message_html: Elasticsearch cluster je nezdravý (žlutý stav), možná budete chtít prozkoumat důvod
elasticsearch_index_mismatch:
message_html: Mapování indexu Elasticsearch jsou zastaralá. Prosím spusťte <code>tootctl search deploy --only=%{value}</code>
elasticsearch_preset:
action: Prohlédnout dokumentaci
message_html: Váš Elasticsearch cluster má více než jeden node, ale Mastodon není nakonfigurován pro jejich používání.
elasticsearch_preset_single_node:
action: Zobrazit dokumentaci
message_html: Váš Elasticsearch cluster má pouze jeden uzel, <code>ES_PRESET</code> by měl být nastaven na <code>single_node_cluster</code>.
elasticsearch_reset_chewy:
message_html: Váš system index v Elasticsearch je kvůli změně nastavení zastaralý. Pro aktualizaci prosím spusťte <code>tootctl search deploy --reset-chewy</code>.
elasticsearch_running_check:
message_html: Nelze se připojit k Elasticsearch. Prosím zkontrolujte, že běží, nebo vypněte fulltextové vyhledávání
elasticsearch_version_check:
@ -839,6 +881,12 @@ cs:
message_html: Nedefinovali jste žádná pravidla serveru.
sidekiq_process_check:
message_html: Pro %{value} frontu/fronty neběží žádný Sidekiq proces. Zkontrolujte prosím svou Sidekiq konfiguraci
software_version_critical_check:
action: Zobrazit dostupné aktualizace
message_html: K dispozici je kritická aktualizace Mastodonu, prosím aktualizujte co nejrychleji.
software_version_patch_check:
action: Zobrazit dostupné aktualizace
message_html: Je dostupná opravná aktualizace Mastodonu.
upload_check_privacy_error:
action: Pro více informací se podívejte zde
message_html: "<strong>Váš webový server je špatně nakonfigurován. Soukromí vašich uživatelů je ohroženo.</strong>"
@ -960,6 +1008,9 @@ cs:
body: 'Uživatel %{target} se odvolává proti rozhodnutí moderátora %{action_taken_by} z %{date}, kterým bylo %{type}. Napsal:'
next_steps: Můžete schválit odvolání pro vrácení rozhodnutí moderátora, nebo to ignorovat.
subject: Uživatel %{username} se odvolává proti rozhodnutí moderátora na %{instance}
new_critical_software_updates:
body: Byly vydány nové kritické verze Mastodonu, možná budete chtít aktualizovat co nejdříve!
subject: Pro %{instance} jsou dostupné kritické aktualizace Mastodonu!
new_pending_account:
body: Detaily nového účtu jsou uvedeny níže. Tuto žádost můžete schválit nebo zamítnout.
subject: Nový účet na serveru %{instance} čekající na posouzení (%{username})
@ -967,6 +1018,9 @@ cs:
body: Uživatel %{reporter} nahlásil uživatele %{target}
body_remote: Někdo z domény %{domain} nahlásil uživatele %{target}
subject: Nové hlášení pro %{instance} (#%{id})
new_software_updates:
body: Byly vydány nové verze Mastodonu, možná budete chtít aktualizovat!
subject: Pro %{instance} jsou dostupné nové verze Mastodonu!
new_trends:
body: 'Následující položky vyžadují posouzení, než mohou být zobrazeny veřejně:'
new_trending_links:
@ -1000,6 +1054,7 @@ cs:
notification_preferences: Změnit předvolby e-mailů
salutation: "%{name},"
settings: 'Změnit předvolby e-mailů: %{link}'
unsubscribe: Přestat odebírat
view: 'Zobrazit:'
view_profile: Zobrazit profil
view_status: Zobrazit příspěvek
@ -1013,6 +1068,10 @@ cs:
your_token: Váš přístupový token
auth:
apply_for_account: Požádat o účet
captcha_confirmation:
help_html: Pokud máte problémy s řešením CAPTCHA, můžete se s námi spojit prostřednictvím %{email} a můžeme vám pomoci.
hint_html: Ještě jedna věc! Musíme potvrdit, že jste člověk (to proto, abychom drželi stranou spam!). Vyřešte CAPTCHA níže a klikněte na "Pokračovat".
title: Bezpečnostní kontrola
confirmations:
wrong_email_hint: Pokud není e-mail správný, můžete si ho změnit v nastavení účtu.
delete_account: Odstranit účet
@ -1049,8 +1108,11 @@ cs:
rules:
accept: Přijmout
back: Zpět
invited_by: 'Můžete se připojit k %{domain} díky pozvánce, kterou jste obdrželi od:'
preamble: Tohle nastavují a prosazují moderátoři %{domain}.
preamble_invited: Než budete pokračovat, vezměte prosím v úvahu základní pravidla stanovená moderátory %{domain}.
title: Některá základní pravidla.
title_invited: Byl/a jsi pozván/a.
security: Zabezpečení
set_new_password: Nastavit nové heslo
setup:
@ -1151,6 +1213,10 @@ cs:
your_appeal_rejected: Vaše odvolání bylo zamítnuto
domain_validator:
invalid_domain: není platné doménové jméno
edit_profile:
basic_information: Základní informace
hint_html: "<strong>Nastavte si, co lidé uvidí na vašem veřejném profilu a vedle vašich příspěvků.</strong> Ostatní lidé vás budou spíše sledovat a komunikovat s vámi, když budete mít vyplněný profil a profilový obrázek."
other: Další
errors:
'400': Žádost, kterou jste odeslali, byla neplatná nebo poškozená.
'403': Nejste oprávněni tuto stránku zobrazit.
@ -1306,6 +1372,7 @@ cs:
bookmarks: Záložky
domain_blocking: Seznam blokovaných domén
following: Seznam sledovaných
lists: Seznamy
muting: Seznam ignorovaných
upload: Nahrát
invites:
@ -1461,12 +1528,22 @@ cs:
expired: Anketa již skončila
invalid_choice: Zvolená možnost hlasování neexistuje
over_character_limit: nesmí být žádná delší než %{max} znaků
self_vote: Nemůžete hlasovat ve svých vlastních anketách
too_few_options: musí mít více než jednu položku
too_many_options: nesmí obsahovat více než %{max} položek
preferences:
other: Ostatní
posting_defaults: Výchozí možnosti psaní
public_timelines: Veřejné časové osy
privacy:
hint_html: "<strong>Nastavte si, jak chcete, aby šlo váš profil a vaše příspěvky nalézt.</strong> Řada funkcí v Mastodonu vám může po zapnutí pomoci získat širší publikum. Věnujte chvíli kontrole těchto nastavení, aby vyhovovala vašim potřebám."
privacy: Soukromí
privacy_hint_html: Nastavte si, kolik toho chcete zveřejnit ve prospěch ostatních. Lidé objevují zajímavé profily a skvělé aplikace procházením sledovaných ostatních lidí i tím, že vidí, z jakých aplikací ostatní posílají příspěvky, vy se však můžete rozhodnout tyto údaje skrýt.
reach: Dosah
reach_hint_html: Nastavte si, zda chcete být objeveni a sledováni novými lidmi. Chcete, aby se vaše příspěvky objevovaly na obrazovce Objevit? Chcete, aby vás další lidé viděli ve svých doporučeních ke sledování? Chcete přijímat všechny nové sledující automaticky nebo mít podrobnou kontrolu nad každým z nich?
search: Vyhledávání
search_hint_html: Mějte pod kontrolou, jak chcete být nalezeni. Chcete, aby vás lidé našli podle toho, o čem jste veřejně psali? Chcete, aby lidé mimo Mastodon mohli nalézt váš profil při prohledávání webu? Mějte na vědomí, že úplné vyřazení ze všech vyhledávačů nelze u veřejných informací garantovat.
title: Soukromí a dosah
privacy_policy:
title: Zásady ochrany osobních údajů
reactions:
@ -1773,7 +1850,10 @@ cs:
seamless_external_login: Jste přihlášeni přes externí službu, nastavení hesla a e-mailu proto nejsou dostupná.
signed_in_as: 'Přihlášeni jako:'
verification:
here_is_how: Jak na to
instructions_html: Zkopírujte a vložte níže uvedený kód do HTML vašeho webu. Poté přidejte adresu vašeho webu do jednoho z extra políček na vašem profilu na záložce "Upravit profil" a uložte změny.
verification: Ověření
verified_links: Vaše ověřené odkazy
webauthn_credentials:
add: Přidat nový bezpečnostní klíč
create:

View File

@ -1866,6 +1866,7 @@ cy:
default: "%b %d, %Y, %H:%M"
month: "%b %Y"
time: "%H:%M"
with_time_zone: "%b %d, %Y, %H:%M %Z"
translation:
errors:
quota_exceeded: Aethpwyd y tu hwnt i gwota defnydd y gweinydd cyfan ar gyfer y gwasanaeth cyfieithu.

View File

@ -1829,7 +1829,7 @@ de:
signed_in_as: 'Angemeldet als:'
verification:
extra_instructions_html: <strong>Hinweis:</strong> Der Link auf deiner Website kann unsichtbar sein. Der wichtige Teil ist <code>rel="me"</code>, wodurch das Nachahmen von Personen auf Websites mit nutzergenerierten Inhalten verhindert wird. Du kannst auch ein <code>link</code>-Tag statt <code>a</code> im Header auf der Seite verwenden, jedoch muss der HTML-Code ohne das Ausführen von JavaScript zugänglich sein.
here_is_how: So funktioniert's
here_is_how: So funktionierts
hint_html: "<strong>Alle können ihre Identität auf Mastodon verifizieren.</strong> Basierend auf offenen Standards jetzt und für immer kostenlos. Alles, was du brauchst, ist eine eigene Website. Wenn du von deinem Profil auf diese Website verlinkst, überprüfen wir, ob die Website zu deinem Profil zurückverlinkt, und zeigen einen visuellen Hinweis an."
instructions_html: Kopiere den unten stehenden Code und füge ihn in das HTML deiner Website ein. Trage anschließend die Adresse deiner Website in ein Zusatzfeld auf deinem Profil ein und speichere die Änderungen. Die Zusatzfelder befinden sich im Reiter „Profil bearbeiten“.
verification: Verifizierung

View File

@ -18,13 +18,13 @@ sr-Latn:
unconfirmed: Pre nastavka morate potvrditi svoj nalog.
mailer:
confirmation_instructions:
action: Potvrdite adresu e-pošte
action: Verifikujte adresu e-pošte
action_with_app: Potvrdi i vrati se na %{app}
explanation: Napravili ste nalog na %{host} sa adresom ove e-pošte. Na jedan klik ste udaljeni od aktiviranja. Ako ovo niste vi, molimo ignorišite ovu e-poštu.
explanation_when_pending: Prijavili ste se za poziv %{host} sa ovim imejlom. Kada potvrdite svoj imejl, pregledaćemo vašu prijavu. Možete se prijaviti da biste promenili detalje ili izbrisali nalog, ali ne možete pristupiti većini funkcija dok vam nalog ne bude odobren. Ako vaša prijava bude odbijena, vaši podaci će biti uklonjeni, tako da od vas neće biti potrebne dalje radnje. Ako ovo niste bili vi, zanemarite ovaj imejl.
extra_html: Molimo da takođe proverite <a href="%{terms_path}"> pravila ove instance i <a href="%{policy_path}"> naše uslove korišćenja.
subject: 'Mastodont: Uputstvo za potvrdu korisničkog naloga na instanci %{instance}'
title: Potvrdite adresu e-pošte
title: Verifikujte adresu e-pošte
email_changed:
explanation: 'Adresa ove e-pošte za vaš nalog će biti promenjena u:'
extra: Ako niste promenili vašu e-poštu, sasvim je moguće da je neko drugi dobio pristup vašem nalogu. Molimo promenite lozinku odmah ili kontaktirajte administratora instance ako ste zaključani izvan vašeg naloga.
@ -39,7 +39,7 @@ sr-Latn:
explanation: Potvrdite novu adresu da biste promenili e-poštu.
extra: Ako ova promena nije inicirana sa vaše strane, molimo ignorišite ovu e-poštu. Adresa e-pošta za ovaj Mastodon nalog neće biti promenjena dok ne pristupite poveznici/linku iznad.
subject: 'Mastodon: Potvrdite e-poštu za %{instance}'
title: Potvrdite adresu e-pošte
title: Verifikujte adresu e-pošte
reset_password_instructions:
action: Lozinka promenjena
explanation: Zatražili ste novu lozinku za vaš nalog.
@ -93,7 +93,7 @@ sr-Latn:
signed_up_but_locked: Uspešno ste se registrovali. Nažalost ne možete se prijaviti zato što je Vaš nalog zaključan.
signed_up_but_pending: Na vaš imejl poslata je poruka sa vezom za potvrdu. Nakon što kliknete na vezu, pregledaćemo vašu prijavu. Bićete obavešteni ako bude odobreno.
signed_up_but_unconfirmed: Poruka za potvrdu Vašeg naloga je poslata na Vašu imejl adresu. Kliknite na vezu u imejlu da potvrdite svoj nalog. Molimo proverite i spam fasciklu ako niste primili poruku.
update_needs_confirmation: Uspešno ste ažurirali svoj nalog, ali treba da potvrdimo novu adresu Vaše e-pošte. Molimo Vas da proverite e-poštu i pratite link za potvrdu nove adrese Vaše e-pošte.
update_needs_confirmation: Uspešno ste ažurirali svoj nalog, ali moramo da verifikujemo vašu novu adresu e-pošte. Proverite svoju e-poštu i pratite vezu za potvrdu da biste potvrdili novu adresu e-pošte. Proverite svoju fasciklu neželjene pošte ako niste primili ovu e-poštu.
updated: Vaš nalog je uspešno ažuriran.
sessions:
already_signed_out: Uspešno ste se odjavili.

View File

@ -18,13 +18,13 @@ sr:
unconfirmed: Пре наставка морате потврдити свој налог.
mailer:
confirmation_instructions:
action: Потврдите адресу е-поште
action: Верификујте адресу е-поште
action_with_app: Потврди и врати се на %{app}
explanation: Направили сте налог на %{host} са адресом ове е-поште. На један клик сте удаљени од активирања. Ако ово нисте ви, молимо игноришите ову е-пошту.
explanation_when_pending: Пријавили сте се за позив %{host} са овим имејлом. Када потврдите свој имејл, прегледаћемо вашу пријаву. Можете се пријавити да бисте променили детаље или избрисали налог, али не можете приступити већини функција док вам налог не буде одобрен. Ако ваша пријава буде одбијена, ваши подаци ће бити уклоњени, тако да од вас неће бити потребне даље радње. Ако ово нисте били ви, занемарите овај имејл.
extra_html: Молимо да такође проверите <a href="%{terms_path}"> правила ове инстанце и <a href="%{policy_path}"> наше услове коришћења.
subject: 'Mastodon: Упутство за потврду корисничког налога на инстанци %{instance}'
title: Потврдите адресу е-поште
title: Верификујте адресу е-поште
email_changed:
explanation: 'Адреса ове е-поште за ваш налог ће бити промењена у:'
extra: Ако нисте променили вашу е-пошту, сасвим је могуће да је неко други добио приступ вашем налогу. Молимо промените лозинку одмах или контактирајте администратора инстанце ако сте закључани изван вашег налога.
@ -39,7 +39,7 @@ sr:
explanation: Потврдите нову адресу да бисте променили е-пошту.
extra: Ако ова промена није иницирана са ваше стране, молимо игноришите ову е-пошту. Адреса е-поште за овај Mastodon налог неће бити промењена док не приступите вези изнад.
subject: 'Mastodon: Потврдите е-пошту за %{instance}'
title: Потврдите адресу е-поште
title: Верификујте адресу е-поште
reset_password_instructions:
action: Лозинка промењена
explanation: Затражили сте нову лозинку за ваш налог.
@ -93,7 +93,7 @@ sr:
signed_up_but_locked: Успешно сте се регистровали. Нажалост не можете се пријавити зато што је Ваш налог закључан.
signed_up_but_pending: На ваш имејл послата је порука са везом за потврду. Након што кликнете на везу, прегледаћемо вашу пријаву. Бићете обавештени ако буде одобрено.
signed_up_but_unconfirmed: Порука за потврду Вашег налога је послата на Вашу имејл адресу. Кликните на везу у имејлу да потврдите свој налог. Молимо проверите и спам фасциклу ако нисте примили поруку.
update_needs_confirmation: Uспешно сте ажурирали свој налог, али треба да потврдимо нову адресу Ваше е-поште. Молимо Вас да проверите е-пошту и пратите линк за потврду нове адресе Ваше е-поште.
update_needs_confirmation: Успешно сте ажурирали свој налог, али морамо да верификујемо вашу нову адресу е-поште. Проверите своју е-пошту и пратите везу за потврду да бисте потврдили нову адресу е-поште. Проверите своју фасциклу нежељене поште ако нисте примили ову е-пошту.
updated: Ваш налог је успешно ажуриран.
sessions:
already_signed_out: Успешно сте се одјавили.

View File

@ -64,7 +64,7 @@ fa:
review_permissions: بازبینی اجازه‌ها
title: نیاز به اجازه دادن
show:
title: این کد مجوز را کپی کرده و در برنامه وارد کنید.
title: این کد تأیید را رونوشت کرده و در برنامه بگذارید.
authorized_applications:
buttons:
revoke: فسخ
@ -127,6 +127,7 @@ fa:
bookmarks: نشانک‌ها
conversations: گفت‌وگوها
crypto: رمزگذاری سرتاسری
favourites: برگزیده‌ها
filters: پالایه‌ها
follow: پی‌گیری، خموشی و مسدودی‌ها
follows: پی‌گرفتگان
@ -155,6 +156,9 @@ fa:
admin:read:reports: خواندن اطّلاعات حساس از همهٔ گزارش‌ها و حساب‌های گزارش‌شده
admin:write: تغییر تمام داده‌ها روی کارساز
admin:write:accounts: انجام کنش مدیریتی روی حساب‌ها
admin:write:domain_allows: انجام کنش مدیریتی روی اجازه‌های دامنه
admin:write:domain_blocks: انجام کنش مدیریتی روی انسدادهای دامنه
admin:write:email_domain_blocks: انجام کنش مدیریتی روی انسدادهای دامنهٔ رایانامه
admin:write:ip_blocks: انجام کنش مدیریتی روی مسدودسازی های IP
admin:write:reports: انجام کنش مدیریتی روی گزارش‌ها
crypto: از رمزگذاری سرتاسر استفاده کنید
@ -164,6 +168,7 @@ fa:
read:accounts: دیدن اطّلاعات حساب
read:blocks: دیدن مسدودهایتان
read:bookmarks: دیدن نشانک‌هایتان
read:favourites: دیدن برگزیده‌هایتان
read:filters: دیدن پالایه‌هایتان
read:follows: دیدن پی‌گیری‌هایتان
read:lists: دیدن سیاهه‌هایتان
@ -177,6 +182,7 @@ fa:
write:blocks: انسداد حساب‌ها و دامنه‌ها
write:bookmarks: نشانک‌گذاری وضعیت‌ها
write:conversations: مکالمات را بی‌صدا و حذف کنید
write:favourites: فرسته‌های برگزیده
write:filters: ایحاد پالایش‌ها
write:follows: پی‌گیری افراد
write:lists: ایجاد سیاهه‌ها

View File

@ -31,7 +31,7 @@ fa:
created_msg: یادداشت مدیر با موفقیت ساخته شد!
destroyed_msg: یادداشت نظارتی با موفقیت نابود شد!
accounts:
add_email_domain_block: مسدود کردن دامنهٔ رایانامه
add_email_domain_block: انسداد دامنهٔ رایانامه
approve: پذیرفتن
approved_msg: کارهٔ ثبت‌نام %{username} با موفقیت تأیید شد
are_you_sure: مطمئنید؟
@ -309,6 +309,7 @@ fa:
unpublish: عدم انتشار
unpublished_msg: انتشار اعلامیه با موفقیت لغو شد!
updated_msg: اعلامیه با موفقیت به‌روز شد!
critical_update_pending: به‌روز رسانی‌های بحرانی منتظرند
custom_emojis:
assign_category: تعیین دسته
by_domain: دامنه
@ -387,7 +388,7 @@ fa:
confirm: تعلیق
title: تأیید انسداد دامنه برای %{domain}
created_msg: مسدودسازی دامنه در حال پردازش است
destroyed_msg: مسدودکردن دامنه واگردانده شد
destroyed_msg: انسداد دامنه واگردانده شد
domain: دامنه
edit: ویرایش مسدودسازی دامنه
existing_domain_block_html: شما پیش‌تر محدودیت‌های سخت‌تری روی %{name} اعمال کرده‌اید، و باید نخست <a href="%{unblock_url}">مسدودسازی را لغو کنید</a>.
@ -432,8 +433,16 @@ fa:
not_permitted: مجاز نیست
title: دامنه‌های رایانامهٔ مسدود شده
export_domain_allows:
new:
title: درون‌ریزی اجازه‌های دامنه
no_file: هیچ پرونده‌ای گزیده نشده
export_domain_blocks:
import:
existing_relationships_warning: رابطه‌های پی‌گیری موجود
private_comment_template: درون‌ریخته از %{source} در %{date}
title: درون‌ریزی انسدادهای دامنه
new:
title: درون‌ریزی انسدادهای دامنه
no_file: هیچ پرونده‌ای گزیده نشده
follow_recommendations:
description_html: "<strong>پیشنهادات پیگیری به کاربران جدید کک می‌کند تا سریع‌تر محتوای جالب را پیدا کنند</strong>. زمانی که کاربری هنوز به اندازه کافی با دیگران تعامل نداشته است تا پیشنهادات پیگیری شخصی‌سازی‌شده دریافت کند، این حساب‌ها را به جای آن فهرست مشاهده خواهد کرد. این حساب‌ها به صورت روزانه و در ترکیب با بیشتری تعاملات و بالاترین دنبال‌کنندگان محلی برای یک زبان مشخص بازمحاسبه می‌شوند."
@ -445,6 +454,7 @@ fa:
unsuppress: بازگردانی پیشنهادهای پی‌گیری
instances:
availability:
failure_threshold_reached: در %{date} به آستانهٔ شکست رسید.
no_failures_recorded: هیچ شکستی در سابقه نیست.
title: موجود بودن
back_to_all: همه
@ -473,6 +483,7 @@ fa:
delivery:
all: همه
clear: پاک کردن خطاهای تحول محتوا
failing: شکست خوردن
restart: بازراه‌اندازی تحویل محتوا
stop: متوقف‌کردن تحویل محتوا
unavailable: ناموجود
@ -618,8 +629,10 @@ fa:
delete_user_data: حذف داده‌های کاربر
invite_users: دعوت کاربران
manage_announcements: مدیریت اعلامیه‌ها
manage_appeals: مدیریت درخواست‌های بازنگری
manage_blocks: مدیریت مسدودی‌ها
manage_custom_emojis: مدیریت ایموجی‌های سفارشی
manage_federation: مدیریت خودگردانی
manage_invites: مدیریت دعوت‌ها
manage_reports: مدیریت گزارش‌ها
manage_roles: مدیریت نقش‌ها
@ -648,6 +661,8 @@ fa:
appearance:
preamble: سفارشی‌سازی رابطس وب ماستودون.
title: ظاهر
default_noindex:
title: درخواست خروج از اندیس‌گذاری پیش‌گزیدهٔ موتور جست‌وجو
discovery:
follow_recommendations: پیروی از پیشنهادها
profile_directory: شاخهٔ نمایه
@ -667,9 +682,20 @@ fa:
approved: ثبت نام نیازمند تأیید مدیران است
none: کسی نمی‌تواند ثبت نام کند
open: همه می‌توانند ثبت نام کنند
title: تنظیمات کارساز
site_uploads:
delete: پرونده بارگذاری شده را پاک کنید
destroyed_msg: بارگذاری پایگاه با موفقیت حذف شد!
software_updates:
critical_update: بحرانی — لطفاً به سرعت به‌روز کنید
documentation_link: بیش‌تر بیاموزید
release_notes: یادداشت‌های انتشار
title: به‌روز رسانی‌های موجود
type: گونه
types:
major: ارائه بزرگ
minor: ارائه کوچک
version: نگارش
statuses:
account: نگارنده
application: برنامه
@ -710,11 +736,24 @@ fa:
system_checks:
database_schema_check:
message_html: تعداد مهاجرت پایگاه داده در انتظار انجام هستند. لطفا آن‌ها را اجرا کنید تا اطمینان یابید که برنامه مطابق انتظار رفتار خواهد کرد
elasticsearch_preset:
action: دیدن مستندات
elasticsearch_preset_single_node:
action: دیدن مستندات
elasticsearch_version_check:
message_html: 'نگارش الستیک‌سرچ ناسازگار: %{value}'
version_comparison: الستیک‌سرچ %{running_version} در حال اجراست، حال که %{required_version} لازم است
rules_check:
action: مدیریت قانون‌های کارساز
message_html: هیچ قانون کارسازی تعریف نکرده‌اید.
sidekiq_process_check:
message_html: صف(های) %{value} فاقد هیچونه فرایند Sidekiq هستند. لطفا تنظیمات Sidekiq خود را بازبینی کنید
upload_check_privacy_error:
action: برای اطّلاعات بیش‌تر این‌جا را بررسی کنید
message_html: "<strong>کارساز وبتان بد پیکربندی شده. محرمانگی کاربرانتان در خطر است.</strong>"
upload_check_privacy_error_object_storage:
action: برای اطّلاعات بیش‌تر این‌جا را بررسی کنید
message_html: "<strong>ذخیره‌سازتان بد پیکربندی شده. محرمانگی کاربرانتان در خطر است.</strong>"
tags:
review: وضعیت بازبینی
updated_msg: تنظیمات برچسب‌ها با موفقیت به‌روز شد
@ -858,6 +897,7 @@ fa:
migrate_account: نقل مکان به یک حساب دیگر
migrate_account_html: اگر می‌خواهید این حساب را به حساب دیگری منتقل کنید، <a href="%{path}">این‌جا را کلیک کنید</a>.
or_log_in_with: یا ورود به وسیلهٔ
privacy_policy_agreement_html: <a href="%{privacy_policy_path}" target="_blank">سیاست محرمانگی</a> را خوانده و پذیرفته‌ام
progress:
confirm: تأیید رایانامه
details: جزئیات شما
@ -967,6 +1007,7 @@ fa:
invalid_domain: نام دامین معتبر نیست
edit_profile:
basic_information: اطلاعات پایه
hint_html: "<strong>شخصی‌سازی آن چه مردم روی نمایهٔ عمومیتان و کنار فرسته‌هایتان می‌بینند.</strong> هنگامی که نمایه‌ای کامل و یک تصویر نمایه داشته باشید،‌ احتمال پی‌گیری متقابل و تعامل با شما بیش‌تر است."
other: سایر
errors:
'400': درخواستی که فرستادید نامعتبر یا اشتباه بود.
@ -1019,6 +1060,7 @@ fa:
statuses: فرسته‌های جدا
title: ویرایش پالایه
errors:
deprecated_api_multiple_keywords: این پارامترها نمی‌توانند از این برنامه تغییر یابند؛ چرا که به بیش از یک کلیدواژهٔ پالایه اعمال می‌شود. از برنامه‌ای جدیدتر یا میانای وب استفاده کنید.
invalid_context: زمینه‌ای موجود نیست یا نامعتبر است
index:
delete: پاک‌کردن
@ -1045,6 +1087,9 @@ fa:
title: فرسته‌های پالوده
generic:
all: همه
all_matching_items_selected_html:
one: "<strong>%{count}</strong> مورد مطابق با جست‌وجویتان گزیده شده."
other: "<strong>%{count}</strong> مورد مطابق با جست‌وجویتان گزیده شدند."
cancel: لغو
changes_saved_msg: تغییرات با موفقیت ذخیره شدند!
confirm: تأیید
@ -1107,6 +1152,9 @@ fa:
expires_at: تاریخ انقضا
uses: استفاده‌ها
title: دعوت دیگران
lists:
errors:
limit: به بیشینهٔ تعداد سیاهه‌ها رسیدید
login_activities:
authentication_methods:
otp: کارهٔ تأیید هویت دوعاملی
@ -1121,6 +1169,9 @@ fa:
mail_subscriptions:
unsubscribe:
complete: لغو اشتراک شد
emails:
notification_emails:
mention: رایانامه‌های آگاهی اشاره
title: لغو اشتراک
media_attachments:
validations:
@ -1187,9 +1238,9 @@ fa:
title: درخواست پیگیری تازه
mention:
action: پاسخ
body: "%{name} در این‌جا از شما نام برد:"
subject: "%{name} از شما نام برد"
title: نام‌برده‌شدن تازه
body: "%{name} در این‌جا به شما اشاره کرد:"
subject: "%{name} به شما اشاره کرد"
title: اشارهٔ جدید
poll:
subject: نظرسنجی‌ای از %{name} پایان یافت
reblog:
@ -1244,6 +1295,14 @@ fa:
other: سایر تنظیمات
posting_defaults: تنظیمات پیش‌فرض انتشار
public_timelines: خط زمانی‌های عمومی
privacy:
hint_html: "<strong>شخصی‌سازی چگونگی پیدا شدن فرسته‌ها و نمایه‌تان.</strong> ویژگی‌های متعدّدی در ماستودون می‌توانند هنگام به کار افتادن در رسیدن به مخاطبینی گسترده‌تر یاریتان کنند. کمی وقت برای بازبینی این تنظیمات گذاشته تا مطمئن شوید برایتان مناسبند."
privacy: محرمانگی
reach: دسترسی
reach_hint_html: واپایش این که می‌خواهید به دست افراد جدید قابل کشف و پی‌گیری باشید یا نه. می‌خواهید فرسته‌هایتان روی صفحهٔ کشف ظاهر شوند؟ می‌خواهید دیگر افراد در پیشنهادهای پی‌گیریشان ببینندتان؟ می‌خواهید پی‌گیران جدید را به طور خودکار بپذیرید یا روی هرکدامشان واپایش داشته باشید؟
search: جست‌وجو
search_hint_html: واپایش این که چگونه می‌خواهید پیدا شوید. می‌خواهید افراد با آن‌چه به صورت عمومی درباره‌اش فرستاده‌اید پیدایتان کنند؟ می‌خواهید افراد خارج از ماستودون هنگام جست‌وجوی وب نمایه‌تان را بیابند؟ لطفاً‌به خاطر داشته باشید که خروج کامل از تمامی موتورهای جست‌وجو برای اطّلاعات عمومی قابل تضمین نیست.
title: محرمانگی و دسترسی
privacy_policy:
title: سیاست محرمانگی
reactions:
@ -1519,7 +1578,10 @@ fa:
seamless_external_login: شما با یک سرویس خارج از مجموعه وارد شده‌اید، به همین دلیل تنظیمات ایمیل و گذرواژه برای شما در دسترس نیست.
signed_in_as: 'واردشده به نام:'
verification:
extra_instructions_html: <strong>نکته:</strong> پیوند روی پایگاه وبتان می‌تواند نامرئی باشد. بخش مهم <code>rel="me"</code> است که از جعل هویت روی پایگاه‌هایی با محتوای تولید شده به دست کاربر جلوگیری می‌کند. حتا می‌توانید به جای برچسب <code>a</code> از برچسب <code>link</code> در سرایند صفحه استفاده کنید؛ ولی HTML باید بدون اجرای جاوااسکریپت در دسترس باشد.
here_is_how: به اینصورت
hint_html: "<strong>تأیید هویتتان روی ماستودون برای همه است.</strong> برپایهٔ استانداردهای وب و رایگان برای همیشه. تمام آن چه نیاز دارید پایگاه وب شخصیست که افراد شما را با آن بشناسند. هنگام پیوند دادن به این پایگاه از نمایه‌تان، بررسی می‌کنیم که پیوندهای پایگاه وب نیز به نمایه‌تان پیوند داده باشد و نشانگری تصویری رویش نشان می‌دهیم."
instructions_html: کد زیر را رونوشت کرده و در HTML پایگاه وبتان جایگذاری کنید. سپس نشانی پایگاه وبتان را از زبانهٔ «ویرایش نمایه» در یکی از زمینه‌های اضافی روی نمایه‌تان افزوده و تغییرات را ذخیره کنید.
verification: تأیید
verified_links: "‏پیوندهای تأییدشده‌ شما"
webauthn_credentials:

View File

@ -458,7 +458,7 @@ gd:
not_permitted: Chan eil seo ceadaichte
resolved_dns_records_hint_html: Thèid ainm na h-àrainne fhuasgladh nan àrainnean MX a leanas agus an urra riutha-san gun gabh iad ri post-d. Ma bhacas tu àrainn MX, bacaidh seo an clàradh o sheòladh puist-d sam bith a chleachdas an aon àrainn MX fiù s ma bhios ainm àrainne eadar-dhealaichte ga sealltainn. <strong>Thoir an aire nach bac thu solaraichean puist-d mòra.</strong>
resolved_through_html: Chaidh fuasgladh slighe %{domain}
title: Àrainnean puist-d gam bacadh
title: Bacadh àrainnean puist-d
export_domain_allows:
new:
title: Ion-phortaich àrainnean ceadaichte

View File

@ -71,7 +71,7 @@ gl:
enabled: Activado
enabled_msg: Desbloqueada a conta de %{username}
followers: Seguidoras
follows: Segue
follows: Seguimentos
header: Cabeceira
inbox_url: URL da caixa de entrada
invite_request_text: Razóns para unirte

View File

@ -378,12 +378,12 @@ ja:
add_new: ドメインブロックを追加
confirm_suspension:
cancel: キャンセル
confirm: ブロック
permanent_action: 失われたデータやフォロー関係は、ブロックを解除しても元に戻せません。
preamble_html: "<strong>%{domain}</strong> と、そのサブドメインをブロックします。"
confirm: 停止
permanent_action: 失われたデータやフォロー関係は、停止を解除しても元に戻せません。
preamble_html: "<strong>%{domain}</strong> と、そのサブドメインに「停止」の処置を行います。"
remove_all_data: この操作により、対象のドメインにあるアカウントからのコンテンツやメディア、プロフィール情報はすべて削除されます。
stop_communication: ブロックしたサーバーとは通信を行わなくなります。
title: "%{domain} をブロック"
stop_communication: 対象のサーバーとは通信を行わなくなります。
title: "「%{domain}」ドメインブロックの確認"
undo_relationships: この操作により、このサーバーと対象サーバーのアカウント間のフォロー関係はすべて解除されます。
created_msg: ドメインブロック処理を完了しました
destroyed_msg: ドメインブロックを外しました

View File

@ -833,7 +833,7 @@ ko:
action: 문서 참조
message_html: Elasticsearch 클러스터가 한 대의 노드만 사용하고 있습니다. <code>ES_PRESET</code>이 <code>single_node_cluster</code>로 설정되어야 합니다.
elasticsearch_reset_chewy:
message_html: 설정 변경으로 인해Elasticsearch 시스템 인덱스가 최신상태가 아닙니다. <code>tootctl search deploy --reset-chewy</code> 명령으로 업데이트 하세요.
message_html: 설정 변경으로 인해 Elasticsearch 시스템 인덱스가 최신상태가 아닙니다. <code>tootctl search deploy --reset-chewy</code> 명령으로 업데이트 하세요.
elasticsearch_running_check:
message_html: Elasticsearch에 연결할 수 없습니다. 실행중인지 확인하거나, 전문검색을 비활성화하세요
elasticsearch_version_check:
@ -1303,7 +1303,7 @@ ko:
unconfirmed: 미확인
status: 상태
success: 파일이 정상적으로 업로드되었으며, 현재 처리 중입니다
time_started: 시작 시
time_started: 시작 시
titles:
blocking: 차단한 계정 가져오는 중
bookmarks: 북마크 가져오는 중

View File

@ -309,6 +309,7 @@
unpublish: Avpubliser
unpublished_msg: Kunngjøring upublisert!
updated_msg: Kunngjøringen er oppdatert!
critical_update_pending: Kritisk oppdatering avventer
custom_emojis:
assign_category: Tilegn kategori
by_domain: Domene
@ -774,6 +775,18 @@
site_uploads:
delete: Slett den opplastede filen
destroyed_msg: Vellykket sletting av sideopplasting!
software_updates:
critical_update: Kritisk — vennligst oppdater raskt
description: "Det anbefales å holde Mastodon-installasjonen oppdatert for å dra nytte av nye rettelser og funksjoner. Dessuten er det av og til viktig å oppdatere Mastodon raskt for å unngå sikkerhetsproblemer. Derfor sjekker Mastodon om det finnes oppdateringer \nhvert 30. minutt, og varsler deg i henhold til dine valg for e-postvarsling."
documentation_link: Finn ut mer
release_notes: Informasjon om utgivelsen
title: Tilgjengelige oppdateringer
type: Type
types:
major: Stor oppdatering
minor: Mindre oppdatering
patch: Liten oppdatering feilrettinger og endringer som er lette å legge til
version: Versjon
statuses:
account: Forfatter
application: Applikasjon
@ -838,6 +851,12 @@
message_html: Du har ikke definert noen serverregler.
sidekiq_process_check:
message_html: Ingen Sidekiq-prosess kjører for %{value} køen(e). Vennligst se gjennom Sidekiq-konfigurasjonen din
software_version_critical_check:
action: Se tilgjengelige oppdateringer
message_html: En kritisk oppdatering av Mastodon er tilgjengelig. Vennligst oppdater så raskt som mulig.
software_version_patch_check:
action: Se tilgjengelige oppdateringer
message_html: En oppdatering av Mastodon som inneholder feilrettinger er tilgjengelig.
upload_check_privacy_error:
action: Sjekk her for mer informasjon
message_html: "<strong>Webserveren din er feilkonfigurert. Personvernet til brukerne dine er i fare.</strong>"
@ -951,6 +970,9 @@
body: "%{target} klager på en moderasjonsbeslutning av %{action_taken_by} fra %{date}, noe som var %{type}. De skrev:"
next_steps: Du kan godkjenne klagen for å angre på moderasjonsvedtaket eller ignorere det.
subject: "%{username} klager på en moderasjonsbeslutning for %{instance}"
new_critical_software_updates:
body: Nye kritiske versjoner av Mastodon har blitt utgitt, det kan være fordelaktig å oppdatere så snart som mulig!
subject: Kritiske Mastodon-oppdateringer er tilgjengelige for %{instance}!
new_pending_account:
body: Detaljer om den nye kontoen er nedenfor. Du kan godkjenne eller avvise denne søknaden.
subject: Ny konto opp til vurdering på %{instance} (%{username})
@ -958,6 +980,9 @@
body: "%{reporter} har rapportert %{target}"
body_remote: Noen fra %{domain} har rapportert %{target}
subject: Ny rapport for %{instance} (#%{id})
new_software_updates:
body: Nye versjoner av Mastodoner har blitt utgitt, du ønsker kanskje å oppdatere!
subject: Nye versjoner av Mastodon er tilgjengelige for %{instance}!
new_trends:
body: 'Følgende elementer trenger en gjennomgang før de kan vises offentlig:'
new_trending_links:
@ -1708,6 +1733,7 @@
default: "%-d. %b %Y, %H:%M"
month: "%b %Y"
time: "%H:%M"
with_time_zone: "%-d. %b %Y, %H:%M %Z"
two_factor_authentication:
add: Legg til
disable: Skru av

View File

@ -15,7 +15,7 @@ ca:
account_migration:
acct: Especifica l'usuari@domini del compte al qual et vols traslladar
account_warning_preset:
text: Pots usar totes les sintaxis, com ara URL, etiquetes i mencions
text: Pots usar tota mena de sintaxi, com ara URL, etiquetes i mencions
title: Opcional. No és visible per al destinatari
admin_account_action:
include_statuses: L'usuari veurà quins tuts han causat l'acció de moderació o avís

View File

@ -291,6 +291,8 @@ cy:
pending_account: Mae cyfrif newydd angen adolygiad
reblog: Mae rhywun wedi hybu eich postiad
report: Cyflwynwyd adroddiad newydd
software_updates:
label: Mae fersiwn Mastodon newydd ar gael
trending_tag: Mae pwnc llosg newydd angen adolygiad
rule:
text: Rheol

View File

@ -2,6 +2,14 @@
fa:
simple_form:
hints:
account:
discoverable: ممکن است نمایه و فرسته‌های عمومیتان در جاهای مختلف ماستودون نمایانده و توصیه شود و نمایه‌تان به دیگر کاربران پیشنهاد شود.
display_name: نام کامل یا باحالتان.
fields: صفحهٔ خانگی، تلفّظ، سن و هرچیزی که دوست دارید.
indexable: ممکن است فرسته‌های عمومیتان در نتیجه‌های جست‌وجوی ماستودون ظاهر شود. افرادی که با فرسته‌هایتان تعامل داشتند در هر صورت می‌توانند جست‌وجویشان کنند.
note: 'می‌توانید افراد دیگر را @نام برده یا #برچسب بزنید.'
show_collections: افراد خواهند توانست پی‌گیران و پی‌گرفته شده‌هایتان را مرور کنند. افرادی که پی‌می‌گیریدشان در هر صورت خواهند دید که پی‌می‌گیریدشان.
unlocked: افراد خواهند توانست بدون درخواست تأیید پی‌بگیرندتان. اگر می‌خواهید درخواست‌های پی‌گیری را بازبینی کرده و بگزینید که پی‌گیران جدید را بپذیرید یا رد کنید، علامت را بردارید.
account_alias:
acct: مشخّص کردن username@domain حسابی که می‌خواهید از آن منتقل شوید
account_migration:
@ -72,7 +80,17 @@ fa:
backups_retention_period: نگه داشتن بایگانی‌های کاربری برای روزهای مشخّص شده.
bootstrap_timeline_accounts: سنجاق کردنThese accounts will be pinned to the top of new users' follow recommendations.
closed_registrations_message: نمایش داده هنگام بسته بودن ثبت‌نام‌ها
content_cache_retention_period: همهٔ فرسته‌ها و تقویت‌ها از دیگر کارسازها پس از روزهای نشخّص حذف خواهند شد. ممکن است برخی فرسته‌ها قابل بازیابی نباشند. همهٔ نشانک‌ها، پسندها و تقویت‌ها نیز از دست خواهند رفت و قابل بازگشت نخواهند بود.
custom_css: می‌توانیدروی نگارش وب ماستودون سبک‌های سفارشی اعمال کنید.
mascot: نقش میانای وب پیش‌رفته را پایمال می‌کند.
media_cache_retention_period: اگر به مقدار مثبتی تنظیم شود، پرونده‌های رسانهٔ بارگرفته پس از روزهای مشخّص شده حذف خواهند شد و هنگام درخواست دوباره بارگرفته می‌شوند.
profile_directory: شاخهٔ نمایه، همهٔ کاربرانی که کشف‌پذیری را برگزیده‌اند سیاهه می‌کند.
require_invite_text: زمانی که نام‌نویسی ها نیازمند تایید دستی است، متن «چرا می‌خواهید بپیوندید؟» بخش درخواست دعوت را به جای اختیاری، اجباری کنید
site_contact_email: چگونگی دسترسی افراد به شما برای مقاصد قانونی یا پشتیبانی.
site_contact_username: چکونگی رسیدن افراد به شما روی ماستودون.
site_extended_description: هر اطّلاعات بیش‌تری که ممکن است برای بازدیدکنندگان و کاربرانتان مفید باشد. می‌تواند به شکل مارک‌دون باشد.
site_short_description: شرحی کوتاه برای کمک به شناسایی یکتای کارسازتان. چه‌کسی می‌گرداندش و برای چه کسیست؟
site_terms: از سیاست محرمانگی خوتان استفاده کرده یا برای استفاده از سیاست پیش‌گزیده خالی بگذارید. می‌تواند در قالب مارک‌دون باشد.
form_challenge:
current_password: شما در حال ورود به یک منطقهٔ‌ حفاظت‌شده هستید
imports:
@ -93,6 +111,9 @@ fa:
sessions:
otp: 'کد تأیید دومرحله‌ای که کاره روی تلفن شما ساخته را وارد کنید یا یکی از کدهای بازیابی را به کار ببرید:'
webauthn: اگر کلید USB باشد ، از اتصاڵ آن مطمئن شوید و، اگر لازم باشد، به آن ضربه‌ایی بزنید.
settings:
indexable: صفحهٔ نمایه‌تان ممکن است در نتیجه‌های جست‌وجو روی گوگل، بینگ و جاهای دیگر ظاهر شود.
show_application: خودتان همواره خواهید توانست ببینید که کدام کاره فرسته‌تان را منتشر کرده.
tag:
name: شما تنها می‌توانید بزرگی و کوچکی حروف را تغییر دهید تا مثلاً آن را خواناتر کنید
user:
@ -102,9 +123,13 @@ fa:
url: جایی که رویدادها فرستاده می‌شوند
labels:
account:
discoverable: معرّفی نمایه و فرسته‌ها در الگوریتم‌های کشف
fields:
name: برچسب
value: محتوا
indexable: بودن فرسته‌های عمومی در نتیجه‌های جست‌وجو
show_collections: نمایش پی‌گیران و پی‌گرفته شده‌ها روی نمایه
unlocked: پذیرش خودکار پی‌گیران جدید
account_alias:
acct: نشانی حساب قدیمی
account_migration:
@ -249,9 +274,18 @@ fa:
pending_account: وقتی حساب تازه‌ای نیاز به بازبینی داشت ایمیل بفرست
reblog: وقتی کسی فرستهٔ شما را تقویت کرد ایمیل بفرست
report: گزارش جدیدی فرستاده شد
software_updates:
all: آگاهی برای همهٔ به‌روز رسانی‌ها
critical: آگاهی فقط برای به‌روز رسانی‌های بحرانی
label: نگارشی جدید از ماستادون موجود است
none: هرگز برای به‌روز رسانی‌ها آگاهی داده نشود (توصیه نمی‌شود)
patch: آگاهی برای به‌روز رسانی‌های رفع اشکال
trending_tag: روند جدیدی نیازمند بازبینی است
rule:
text: قانون
settings:
indexable: بودن صفحهٔ نمایه در نتیجه‌های جست‌وجو
show_application: نمایش این که فرسته را از کدام کاره فرستاده‌اید
tag:
listable: اجازه به این برچسب برای ظاهر شدن در جست‌وجوها و پیشنهادها
name: برچسب
@ -271,6 +305,7 @@ fa:
url: نشانی نقطهٔ پایانی
'no': خیر
not_recommended: پیشنهاد نشده
overridden: پایمال
recommended: توصیه می‌شود
required:
mark: "*"

View File

@ -301,7 +301,7 @@ lv:
rule:
text: Noteikumi
settings:
indexable: Ietvert profila lapu muklēšanas dzinējos
indexable: Ietvert profila lapu meklēšanas dzinējos
show_application: Parādi, no kuras lietotnes nosūtīji ziņu
tag:
listable: Atļaut šim tēmturim parādīties meklējumos un ieteikumos

View File

@ -200,7 +200,7 @@
password: Passord
phrase: Nøkkelord eller frase
setting_advanced_layout: Skru på det avanserte nettgrensesnittet
setting_aggregate_reblogs: Gruppefremhevinger i tidslinjer
setting_aggregate_reblogs: Samle fremhevinger i tidslinjer
setting_always_send_emails: Alltid send e-postvarslinger
setting_auto_play_gif: Autoavspill animert GIF-filer
setting_boost_modal: Vis bekreftelse før fremheving
@ -291,6 +291,12 @@
pending_account: Ny bruker avventer gjennomgang
reblog: Send e-post når noen fremhever din status
report: Ny rapport er sendt
software_updates:
all: Varsle om alle oppdateringer
critical: Varsle kun om kritiske oppdateringer
label: En ny versjon av Mastodon er tilgjengelig
none: Aldri varsle om oppdateringer (anbefales ikke)
patch: Varsle om oppdateringer med feilrettinger
trending_tag: Ny trend krever gjennomgang
rule:
text: Regler

View File

@ -3,10 +3,10 @@ zh-CN:
simple_form:
hints:
account:
discoverable: 您的公开帖子和个人资料可能会在Mastodon的各个领域中被推荐,您的个人资料可能会被推荐给其他用户。
discoverable: 您的公开嘟文和个人资料可能会在 Mastodon 的多个位置展示,您的个人资料可能会被推荐给其他用户。
display_name: 您的全名或昵称。
fields: 你的主页、人称代词、年龄,以及任何你想要添加的内容。
indexable: 您的公开嘟文可能会出现在Mastodon的搜索结果中。与您的嘟文互动过的人可能能够进行搜索并找到它们。
indexable: 您的公开嘟文会出现在 Mastodon 的搜索结果中。无论是否勾选,与您的嘟文有过交互的人都可能通过搜索找到它们。
note: '您可以提及 @其他人 或 #标签 。'
show_collections: 人们将能够浏览您的关注和追随者。您关注的人会看到您关注他们。
unlocked: 人们将能够在不请求批准的情况下关注您。如果您希望审核关注请求并选择接受或拒绝新的粉丝,请取消勾选此项。
@ -71,12 +71,12 @@ zh-CN:
featured_tag:
name: 以下是你最近使用过的标签:
filters:
action: 选择在帖子匹配过滤器时要执行的操作
action: 选择在嘟文命中过滤器时要执行的操作
actions:
hide: 彻底屏蔽过滤内容,犹如它不曾存在过一般
warn: 在警告中提及过滤器标题后,隐藏过滤内容
form_admin_settings:
activity_api_enabled: 地发布的帖子、 活跃用户和每周的注册
activity_api_enabled: 站每周的嘟文数、活跃用户数和新注册用户
backups_retention_period: 将在指定天数内保留生成的用户存档。
bootstrap_timeline_accounts: 这些账号将在新用户关注推荐中置顶。
closed_registrations_message: 在关闭注册时显示
@ -144,7 +144,7 @@ zh-CN:
fields:
name: 标签
value: 内容
indexable: 在搜索结果中包含公共嘟文
indexable: 将公开嘟文纳入搜索范围
show_collections: 在个人资料中显示关注和关注者
unlocked: 自动接受新关注者
account_alias:

View File

@ -273,6 +273,7 @@ sk:
title: Oboznámenia
unpublish: Zruš zverejnenie
updated_msg: Oboznámenie úspešne aktualizované!
critical_update_pending: Čaká kritická aktualizácia
custom_emojis:
assign_category: Priraď kategóriu
by_domain: Doména
@ -418,6 +419,8 @@ sk:
instance_accounts_dimension: Najsledovanejšie účty
instance_accounts_measure: uložené účty
instance_follows_measure: ich sledovatelia tu
instance_languages_dimension: Najpopulárnejšie jazyky
instance_media_attachments_measure: uložené mediálne prílohy
instance_reports_measure: hlásenia o nich
instance_statuses_measure: uložené príspevky
delivery:
@ -425,6 +428,7 @@ sk:
failing: Zlyhávajúce
unavailable: Nedostupné
delivery_available: Je v dosahu doručovania
empty: Nenájdené žiadne domény.
moderation:
all: Všetky
limited: Obmedzené
@ -482,6 +486,12 @@ sk:
created_msg: Poznámka o nahlásení úspešne vytvorená!
destroyed_msg: Poznámka o nahlásení úspešne vymazaná!
reports:
account:
notes:
few: "%{count} poznámok"
many: "%{count} poznámok"
one: "%{count} poznámka"
other: "%{count} poznámky"
action_taken_by: Zákrok vykonal/a
actions:
suspend_description_html: Tento účet a všetok jeho obsah bude nedostupný a nakoniec zmazaný, interaktovať s ním bude nemožné. Zvrátiteľné v rámci 30 dní. Uzatvára všetky hlásenia voči tomuto účtu.
@ -1015,6 +1025,8 @@ sk:
other: Ostatné
posting_defaults: Východiskové nastavenia príspevkov
public_timelines: Verejné časové osi
privacy:
title: Súkromie a dosah
reactions:
errors:
limit_reached: Maximálny počet rôznorodých reakcií bol dosiahnutý

View File

@ -869,6 +869,7 @@ sl:
action: Glejte razpoložljive posodobitve
software_version_patch_check:
action: Glejte razpoložljive posodobitve
message_html: Na voljo je posodobitev Mastodona s popravki hroščev.
upload_check_privacy_error:
action: Preverite tukaj za več informacij
message_html: "<strong>Vaš spletni strežnik je napačno nastavljen. Zasebnost vaših uporabnikov je izpostavljena tveganjem.</strong>"

View File

@ -1151,7 +1151,7 @@ sr-Latn:
x_seconds: "%{count} sek."
deletes:
challenge_not_passed: Lozinka koju ste uneli nije bila ispravna
confirm_password: Unesite trenutnu lozinku da bismo proverili Vaš identitet
confirm_password: Unesite trenutnu lozinku za verifikaciju vašeg identiteta
confirm_username: Unesite svoje korisničko ime da biste potvrdili proceduru
proceed: Obriši nalog
success_msg: Vaš nalog je uspešno obrisan
@ -1209,8 +1209,8 @@ sr-Latn:
'406': Ova stranica nije dostupna u izabranom formatu.
'410': Strana koju ste tražili više ne postoji.
'422':
content: Bezbedonosna provera nije uspela. Da ne blokirate kolačiće?
title: Bezbedonosna provera nije uspela
content: Bezbedonosna verifikacija nije uspela. Da li blokirate kolačiće?
title: Bezbedonosna verifikacija nije uspela
'429': Uspored
'500':
content: Izvinjavamo se, nešto je pošlo po zlu sa ove strane.
@ -1296,7 +1296,7 @@ sr-Latn:
one: "<strong>%{count}</strong> stavka koja se poklapa sa Vašom pretragom je izabrana."
other: Svih <strong>%{count}</strong> stavki koje se poklapaju sa Vašom pretragom su izabrane.
cancel: Otkaži
changes_saved_msg: Izmene uspešno sačuvane!
changes_saved_msg: Promene su uspešno sačuvane!
confirm: Potvrdi
copy: Kopiraj
delete: Izbriši
@ -1770,6 +1770,7 @@ sr-Latn:
default: "%d %b %Y, %H:%M"
month: "%b %Y"
time: "%H:%M"
with_time_zone: "%d. %b %Y, %H:%M %Z"
translation:
errors:
quota_exceeded: Prekoračena je kvota korišćenja usluge prevođenja na celom serveru.
@ -1863,7 +1864,7 @@ sr-Latn:
here_is_how: Evo kako
hint_html: "<strong>Verifikacija vašeg identiteta na Mastodon-u je za svakoga.</strong> Zasnovano na otvorenim veb standardima, sada i zauvek besplatno. Sve što vam treba je lični veb sajt po kome vas ljudi prepoznaju. Kada se povežete sa ovim veb sajtom sa svog profila, proverićemo da li je veb sajt povezan sa vašim profilom i na njemu ćemo prikazati vizuelni indikator."
instructions_html: Kopirajte i nalepite kod ispod u HTML svog veb sajta. Zatim dodajte adresu svog veb sajta u jedno od dodatnih polja na svom profilu sa kartice „Uredi profil” i sačuvajte promene.
verification: Provera
verification: Verifikacija
verified_links: Vaše verifikovane veze
webauthn_credentials:
add: Dodajte novi sigurnosni ključ

View File

@ -1151,7 +1151,7 @@ sr:
x_seconds: "%{count} сек."
deletes:
challenge_not_passed: Лозинка коју сте унели није била исправна
confirm_password: Унесите тренутну лозинку да бисмо проверили Ваш идентитет
confirm_password: Унесите тренутну лозинку за верификацију вашег идентитета
confirm_username: Унесите своје корисничко име да бисте потврдили процедуру
proceed: Обриши налог
success_msg: Ваш налог је успешно обрисан
@ -1209,8 +1209,8 @@ sr:
'406': Ова страница није доступна у изабраном формату.
'410': Страна коју сте тражили више не постоји.
'422':
content: Безбедоносна провера није успела. Да не блокирате колачиће?
title: Безбедоносна провера није успела
content: Безбедоносна верификација није успела. Да ли блокирате колачиће?
title: Безбедоносна верификација није успела
'429': Успоред
'500':
content: Извињавамо се, нешто је пошло по злу са ове стране.
@ -1296,7 +1296,7 @@ sr:
one: "<strong>%{count}</strong> ставка која се поклапа са Вашом претрагом је изабрана."
other: Свих <strong>%{count}</strong> ставки које се поклапају са Вашом претрагом су изабране.
cancel: Откажи
changes_saved_msg: Измене успешно сачуване!
changes_saved_msg: Промене су успешно сачуване!
confirm: Потврди
copy: Копирај
delete: Избриши
@ -1770,6 +1770,7 @@ sr:
default: "%d %b %Y, %H:%M"
month: "%b %Y"
time: "%H:%M"
with_time_zone: "%d. %b %Y, %H:%M %Z"
translation:
errors:
quota_exceeded: Прекорачена је квота коришћења услуге превођења на целом серверу.
@ -1863,7 +1864,7 @@ sr:
here_is_how: Ево како
hint_html: "<strong>Верификација вашег идентитета на Mastodon-у је за свакога.</strong> Засновано на отвореним веб стандардима, сада и заувек бесплатно. Све што вам треба је лични веб сајт по коме вас људи препознају. Када се повежете са овим веб сајтом са свог профила, проверићемо да ли је веб сајт повезан са вашим профилом и на њему ћемо приказати визуелни индикатор."
instructions_html: Копирајте и налепите код испод у HTML свог веб сајта. Затим додајте адресу свог веб сајта у једно од додатних поља на свом профилу са картице „Уреди профил” и сачувајте промене.
verification: Провера
verification: Верификација
verified_links: Ваше верификоване везе
webauthn_credentials:
add: Додајте нови сигурносни кључ

View File

@ -1513,7 +1513,7 @@ vi:
activity: Tương tác
confirm_follow_selected_followers: Bạn có chắc muốn theo dõi những người đã chọn?
confirm_remove_selected_followers: Bạn có chắc muốn bỏ theo dõi những người đã chọn?
confirm_remove_selected_follows: Bạn có chắc muốn x những người theo dõi bạn đã chọn không?
confirm_remove_selected_follows: Bạn có chắc muốn xóa những người theo dõi bạn đã chọn không?
dormant: Chưa
follow_failure: Không thể theo dõi một số tài khoản đã chọn.
follow_selected_followers: Theo dõi những người đã chọn

View File

@ -626,13 +626,13 @@ zh-CN:
statuses_description_html: 在与该账号的通信中将引用违规内容
summary:
action_preambles:
delete_html: 您即将<strong>删除</strong> <strong>@%{acct}</strong> 的一些帖子。 这将:
delete_html: 您即将<strong>删除</strong> <strong>@%{acct}</strong> 的一些嘟文。 这将:
mark_as_sensitive_html: 您即将 <strong>标记</strong> <strong>@%{acct}</strong> 的帖一些子为 <strong>敏感</strong>。这将:
silence_html: 您即将<strong>限制</strong> <strong>@%{acct}</strong> 的帐户。 这将:
suspend_html: 您即将<strong>暂停</strong> <strong>@%{acct}</strong> 的帐户。 这将:
actions:
delete_html: 删除违规帖子
mark_as_sensitive_html: 将违规帖子的媒体标记为敏感
delete_html: 删除违规嘟文
mark_as_sensitive_html: 将违规嘟文的媒体标记为敏感
silence_html: 严格限制 <strong>@%{acct}</strong> 的影响力,方法是让他们的个人资料和内容仅对已经关注他们的人可见,或手动查找其个人资料时
suspend_html: 暂停 <strong>@%{acct}</strong>,使他们的个人资料和内容无法访问,也无法与之互动
close_report: '将报告 #%{id} 标记为已解决'
@ -759,7 +759,7 @@ zh-CN:
open: 开放注册
security:
authorized_fetch: 需要跨站认证
authorized_fetch_hint: 要求跨站验证可以更严格地执行用户级和服务器级的封锁。然而,这会产生性能上的代价,减少你的回复触达范围,并可能导致与一些联邦服务的兼容问题。此外,这并不能阻止专门的参与者获取你的公共帖子和账户。
authorized_fetch_hint: 要求外站请求通过验证能够使用户级别与服务器级别的封锁更为严格。然而,这将带来额外的性能负担、减少回复触达范围、并可能导致与一些联邦宇宙服务的兼容性问题。此外,这并不能阻止他人针对性地获取公开嘟文与账户。
authorized_fetch_overridden_hint: 由于此设置被环境变量覆盖,目前无法更改。
federation_authentication: 强制跨站认证
title: 服务器设置
@ -1164,7 +1164,7 @@ zh-CN:
invalid_domain: 不是一个有效的域名
edit_profile:
basic_information: 基本信息
hint_html: "<strong>自定义公开资料和帖子旁边显示的内容。</strong>当您填写完整的个人资料并设置了头像时,其他人更有可能关注您并与您互动。"
hint_html: "<strong>自定义公开资料和嘟文旁边显示的内容。</strong>当您填写完整的个人资料并设置了头像时,其他人更有可能关注您并与您互动。"
other: 其他
errors:
'400': 你提交的请求无效或格式不正确。
@ -1499,7 +1499,7 @@ zh-CN:
privacy: 隐私
privacy_hint_html: 控制你愿意向他人透露多少信息。通过浏览他人的关注列表和查看他们发嘟所用的应用,人们可以发现有趣的用户和酷炫的应用,但你可能更喜欢将其隐藏起来。
reach: 范围
reach_hint_html: 控制您是否希望被新人发现和关注。您是否希望您的帖子出现在“探索”屏幕上?您是否希望其他人在关注推荐中看到您?您是想自动接受所有新粉丝,还是对每个粉丝都进行仔细的筛选?
reach_hint_html: 控制您是否希望被新人发现和关注。您是否希望您的嘟文出现在“探索”页面上?您是否希望其他人在关注推荐中看到您?您是想自动接受所有新粉丝,还是对每个粉丝都进行仔细的筛选?
search: 搜索
search_hint_html: 控制你希望被找到的方式。你想让人们通过你公开发布的内容来找到你吗当在网络上搜索时你是否希望Mastodon之外的人能够找到你的个人资料请注意我们无法保证完全排除所有搜索引擎对公开信息的索引。
title: 隐私与可达性

View File

@ -5,7 +5,7 @@ require_relative 'base'
module Mastodon::CLI
class Maintenance < Base
MIN_SUPPORTED_VERSION = 2019_10_01_213028
MAX_SUPPORTED_VERSION = 2022_11_04_133904
MAX_SUPPORTED_VERSION = 2023_09_07_150100
# Stubs to enjoy ActiveRecord queries while not depending on a particular
# version of the code/database
@ -37,6 +37,8 @@ module Mastodon::CLI
class CanonicalEmailBlock < ApplicationRecord; end
class Appeal < ApplicationRecord; end
class Webhook < ApplicationRecord; end
class BulkImport < ApplicationRecord; end
class SoftwareUpdate < ApplicationRecord; end
class PreviewCard < ApplicationRecord
self.inheritance_column = false
@ -86,6 +88,7 @@ module Mastodon::CLI
owned_classes << FollowRecommendationSuppression if ActiveRecord::Base.connection.table_exists?(:follow_recommendation_suppressions)
owned_classes << AccountIdentityProof if ActiveRecord::Base.connection.table_exists?(:account_identity_proofs)
owned_classes << Appeal if ActiveRecord::Base.connection.table_exists?(:appeals)
owned_classes << BulkImport if ActiveRecord::Base.connection.table_exists?(:bulk_imports)
owned_classes.each do |klass|
klass.where(account_id: other_account.id).find_each do |record|
@ -169,6 +172,7 @@ module Mastodon::CLI
deduplicate_tags!
deduplicate_webauthn_credentials!
deduplicate_webhooks!
deduplicate_software_updates!
Scenic.database.refresh_materialized_view('instances', concurrently: true, cascade: false) if ActiveRecord::Migrator.current_version >= 2020_12_06_004238
Rails.cache.clear
@ -204,6 +208,7 @@ module Mastodon::CLI
ActiveRecord::Base.connection.execute('REINDEX INDEX search_index;')
ActiveRecord::Base.connection.execute('REINDEX INDEX index_accounts_on_uri;')
ActiveRecord::Base.connection.execute('REINDEX INDEX index_accounts_on_url;')
ActiveRecord::Base.connection.execute('REINDEX INDEX index_accounts_on_domain_and_id;') if ActiveRecord::Migrator.current_version >= 2023_05_24_190515
end
def deduplicate_users!
@ -241,6 +246,8 @@ module Mastodon::CLI
else
ActiveRecord::Base.connection.add_index :users, ['reset_password_token'], name: 'index_users_on_reset_password_token', unique: true, where: 'reset_password_token IS NOT NULL', opclass: :text_pattern_ops
end
ActiveRecord::Base.connection.execute('REINDEX INDEX index_users_on_unconfirmed_email;') if ActiveRecord::Migrator.current_version >= 2023_07_02_151753
end
def deduplicate_users_process_confirmation_token
@ -541,6 +548,11 @@ module Mastodon::CLI
ActiveRecord::Base.connection.add_index :webhooks, ['url'], name: 'index_webhooks_on_url', unique: true
end
def deduplicate_software_updates!
# Not bothering with this, it's data that will be recovered with the scheduler
SoftwareUpdate.delete_all
end
def deduplicate_local_accounts!(accounts)
accounts = accounts.sort_by(&:id).reverse

View File

@ -43,7 +43,8 @@ module Paperclip
unless eligible_to_passthrough?(metadata)
size_limit_in_bits = MediaAttachment::VIDEO_LIMIT * 8
desired_bitrate = (metadata.width * metadata.height * 30 * BITS_PER_PIXEL).floor
maximum_bitrate = (size_limit_in_bits / metadata.duration).floor - 192_000 # Leave some space for the audio stream
duration = [metadata.duration, 1].max
maximum_bitrate = (size_limit_in_bits / duration).floor - 192_000 # Leave some space for the audio stream
bitrate = [desired_bitrate, maximum_bitrate].min
@output_options['b:v'] = bitrate

165
yarn.lock
View File

@ -1298,16 +1298,11 @@
dependencies:
eslint-visitor-keys "^3.3.0"
"@eslint-community/regexpp@^4.5.1":
"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
version "4.8.1"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz#8c4bb756cc2aa7eaf13cfa5e69c83afb3260c20c"
integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==
"@eslint-community/regexpp@^4.6.1":
version "4.8.0"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005"
integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==
"@eslint/eslintrc@^2.1.2":
version "2.1.2"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396"
@ -1323,10 +1318,10 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@8.49.0":
version "8.49.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.49.0.tgz#86f79756004a97fa4df866835093f1df3d03c333"
integrity sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==
"@eslint/js@8.50.0":
version "8.50.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.50.0.tgz#9e93b850f0f3fa35f5fa59adfd03adae8488e484"
integrity sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==
"@floating-ui/core@^1.3.1":
version "1.3.1"
@ -1818,9 +1813,9 @@
integrity sha512-tOQQBVH8LsUpGXqDnk+kaOGVsgZ8maHAhEiw3Git3p88q+c0Slgu47HuDnL6sVxeCfz24zbq7dOjsVYDiTpDIA==
"@reduxjs/toolkit@^1.9.5":
version "1.9.5"
resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.5.tgz#d3987849c24189ca483baa7aa59386c8e52077c4"
integrity sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==
version "1.9.6"
resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.6.tgz#fc968b45fe5b17ff90932c4556960d9c1078365a"
integrity sha512-Gc4ikl90ORF4viIdAkY06JNUnODjKfGxZRwATM30EdHq8hLSVoSrwXne5dd739yenP5bJxAX7tLuOWK5RPGtrw==
dependencies:
immer "^9.0.21"
redux "^4.2.1"
@ -2114,24 +2109,24 @@
"@babel/types" "^7.20.7"
"@types/body-parser@*":
version "1.19.2"
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
version "1.19.3"
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd"
integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==
dependencies:
"@types/connect" "*"
"@types/node" "*"
"@types/connect@*":
version "3.4.35"
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
version "3.4.36"
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab"
integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==
dependencies:
"@types/node" "*"
"@types/emoji-mart@^3.0.9":
version "3.0.9"
resolved "https://registry.yarnpkg.com/@types/emoji-mart/-/emoji-mart-3.0.9.tgz#2f7ef5d9ec194f28029c46c81a5fc1e5b0efa73c"
integrity sha512-qdBo/2Y8MXaJ/2spKjDZocuq79GpnOhkwMHnK2GnVFa8WYFgfA+ei6sil3aeWQPCreOKIx9ogPpR5+7MaOqYAA==
version "3.0.10"
resolved "https://registry.yarnpkg.com/@types/emoji-mart/-/emoji-mart-3.0.10.tgz#d2248c08758094377bd8f438cf13b1364b8b6649"
integrity sha512-WP5Vw1CLsTQpPT/Hj+shIMC5TB4pyoJourYQe01ceYtJVEopTwuXbCTE6f7aHOKj26E/Y+oZaPtKBtnG1S4d2Q==
dependencies:
"@types/react" "*"
@ -2159,9 +2154,9 @@
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/express-serve-static-core@^4.17.33":
version "4.17.35"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f"
integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==
version "4.17.37"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320"
integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@ -2169,9 +2164,9 @@
"@types/send" "*"
"@types/express@^4.17.17":
version "4.17.17"
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4"
integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==
version "4.17.18"
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.18.tgz#efabf5c4495c1880df1bdffee604b143b29c4a95"
integrity sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==
dependencies:
"@types/body-parser" "*"
"@types/express-serve-static-core" "^4.17.33"
@ -2206,6 +2201,11 @@
"@types/react" "*"
hoist-non-react-statics "^3.3.0"
"@types/http-errors@*":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2"
integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==
"@types/http-link-header@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@types/http-link-header/-/http-link-header-1.0.3.tgz#899adf1d8d2036074514f3dbd148fb901ceff920"
@ -2280,9 +2280,9 @@
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
"@types/lodash@^4.14.195":
version "4.14.198"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.198.tgz#4d27465257011aedc741a809f1269941fa2c5d4c"
integrity sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==
version "4.14.199"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf"
integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==
"@types/mime@*":
version "3.0.1"
@ -2305,9 +2305,9 @@
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/node@*":
version "20.6.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.2.tgz#a065925409f59657022e9063275cd0b9bd7e1b12"
integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==
version "20.6.5"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258"
integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w==
"@types/node@14 || 16 || 17":
version "17.0.45"
@ -2315,9 +2315,9 @@
integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
version "2.4.2"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz#9b0e3e8533fe5024ad32d6637eb9589988b6fdca"
integrity sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==
"@types/npmlog@^4.1.4":
version "4.1.4"
@ -2335,9 +2335,9 @@
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
"@types/pg@^8.6.6":
version "8.10.2"
resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.2.tgz#7814d1ca02c8071f4d0864c1b17c589b061dba43"
integrity sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw==
version "8.10.3"
resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.3.tgz#39b3acba4f313a65c8fbb4b241fcb21cc1ba4126"
integrity sha512-BACzsw64lCZesclRpZGu55tnqgFAYcrCBP92xLh1KLypZLCOsvJTSTgaoFVTy3lCys/aZTQzfeDxtjwrvdzL2g==
dependencies:
"@types/node" "*"
pg-protocol "*"
@ -2349,9 +2349,9 @@
integrity sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==
"@types/prop-types@*", "@types/prop-types@^15.7.5":
version "15.7.6"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.6.tgz#bbf819813d6be21011b8f5801058498bec555572"
integrity sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==
version "15.7.7"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.7.tgz#f9361f7b87fd5d8188b2c998db0a1f47e9fb391a"
integrity sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==
"@types/punycode@^2.1.0":
version "2.1.0"
@ -2523,10 +2523,11 @@
"@types/node" "*"
"@types/serve-static@*":
version "1.15.1"
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d"
integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==
version "1.15.2"
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a"
integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==
dependencies:
"@types/http-errors" "*"
"@types/mime" "*"
"@types/node" "*"
@ -2599,14 +2600,14 @@
source-map "^0.6.0"
"@types/yargs-parser@*":
version "21.0.0"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
version "21.0.1"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b"
integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==
"@types/yargs@^17.0.24", "@types/yargs@^17.0.8":
version "17.0.24"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902"
integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==
version "17.0.25"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.25.tgz#3edd102803c97356fb4c805b2bbaf7dfc9ab6abc"
integrity sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg==
dependencies:
"@types/yargs-parser" "*"
@ -5362,9 +5363,9 @@ eslint-import-resolver-node@^0.3.7:
resolve "^1.22.4"
eslint-import-resolver-typescript@^3.5.5:
version "3.6.0"
resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz#36f93e1eb65a635e688e16cae4bead54552e3bbd"
integrity sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==
version "3.6.1"
resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa"
integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==
dependencies:
debug "^4.3.4"
enhanced-resolve "^5.12.0"
@ -5422,9 +5423,9 @@ eslint-plugin-import@~2.28.0:
tsconfig-paths "^3.14.2"
eslint-plugin-jsdoc@^46.1.0:
version "46.8.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.1.tgz#cfc649c15d460903fe8e86eda582023bb97f283a"
integrity sha512-uTce7IBluPKXIQMWJkIwFsI1gv7sZRmLjctca2K5DIxPi8fSBj9f4iru42XmGwuiMyH2f3nfc60sFmnSGv4Z/A==
version "46.8.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz#3e6b1c93e91e38fe01874d45da121b56393c54a5"
integrity sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==
dependencies:
"@es-joy/jsdoccomment" "~0.40.1"
are-docs-informative "^0.0.2"
@ -5520,14 +5521,14 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint@^8.41.0:
version "8.49.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.49.0.tgz#09d80a89bdb4edee2efcf6964623af1054bf6d42"
integrity sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==
version "8.50.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.50.0.tgz#2ae6015fee0240fcd3f83e1e25df0287f487d6b2"
integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
"@eslint/eslintrc" "^2.1.2"
"@eslint/js" "8.49.0"
"@eslint/js" "8.50.0"
"@humanwhocodes/config-array" "^0.11.11"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
@ -6012,9 +6013,9 @@ flat-cache@^3.0.4:
rimraf "^3.0.2"
flatted@^3.2.7:
version "3.2.7"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
version "3.2.9"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf"
integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
follow-redirects@^1.0.0, follow-redirects@^1.15.0:
version "1.15.2"
@ -6207,9 +6208,9 @@ get-symbol-description@^1.0.0:
get-intrinsic "^1.1.1"
get-tsconfig@^4.5.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.0.tgz#06ce112a1463e93196aa90320c35df5039147e34"
integrity sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==
version "4.7.2"
resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce"
integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==
dependencies:
resolve-pkg-maps "^1.0.0"
@ -6241,12 +6242,12 @@ glob-parent@^6.0.2:
is-glob "^4.0.3"
glob@^10.2.5, glob@^10.2.6:
version "10.3.5"
resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.5.tgz#4c0e46b5bccd78ac42b06a7eaaeb9ee34062968e"
integrity sha512-bYUpUD7XDEHI4Q2O5a7PXGvyw4deKR70kHiDxzQbe925wbZknhOzUt2xBgTkYL6RBcVeXYuD9iNYeqoWbBZQnA==
version "10.3.9"
resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.9.tgz#181ae87640ecce9b2fc5b96e4e2d70b7c3629ab8"
integrity sha512-2tU/LKevAQvDVuVJ9pg9Yv9xcbSh+TqHuTaXTNbQwf+0kDl9Fm6bMovi4Nm5c8TVvfxo2LLcqCGtmO9KoJaGWg==
dependencies:
foreground-child "^3.1.0"
jackspeak "^2.0.3"
jackspeak "^2.3.5"
minimatch "^9.0.1"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
path-scurry "^1.10.1"
@ -6305,9 +6306,9 @@ globals@^11.1.0:
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^13.19.0:
version "13.21.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571"
integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==
version "13.22.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-13.22.0.tgz#0c9fcb9c48a2494fbb5edbfee644285543eba9d8"
integrity sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==
dependencies:
type-fest "^0.20.2"
@ -7360,10 +7361,10 @@ iterator.prototype@^1.1.0:
has-tostringtag "^1.0.0"
reflect.getprototypeof "^1.0.3"
jackspeak@^2.0.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.3.tgz#95e4cbcc03b3eb357bf6bcce14a903fb3d1151e1"
integrity sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==
jackspeak@^2.3.5:
version "2.3.5"
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.5.tgz#443f237f9eeeb0d7c6ec34835ef5289bb4acb068"
integrity sha512-Ratx+B8WeXLAtRJn26hrhY8S1+Jz6pxPMrkrdkgb/NstTNiqMhX0/oFVu5wX+g5n6JlEu2LPsDJmY8nRP4+alw==
dependencies:
"@isaacs/cliui" "^8.0.2"
optionalDependencies:
@ -11221,9 +11222,9 @@ spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
version "3.0.13"
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5"
integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==
version "3.0.15"
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz#142460aabaca062bc7cd4cc87b7d50725ed6a4ba"
integrity sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==
spdy-transport@^3.0.0:
version "3.0.0"