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

Merge upstream changes up to 57f592fed5
This commit is contained in:
Claire 2023-09-26 19:03:36 +02:00 committed by GitHub
commit fde89a8fc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
99 changed files with 819 additions and 396 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

@ -29,10 +29,10 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v2 - uses: docker/setup-qemu-action@v3
if: contains(inputs.platforms, 'linux/arm64') && !inputs.use_native_arm64_builder if: contains(inputs.platforms, 'linux/arm64') && !inputs.use_native_arm64_builder
- uses: docker/setup-buildx-action@v2 - uses: docker/setup-buildx-action@v3
id: buildx id: buildx
if: ${{ !(inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')) }} if: ${{ !(inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')) }}
@ -41,7 +41,7 @@ jobs:
run: | run: |
docker run --rm -d --name buildkitd -p 1234:1234 --privileged moby/buildkit:latest --addr tcp://0.0.0.0:1234 docker run --rm -d --name buildkitd -p 1234:1234 --privileged moby/buildkit:latest --addr tcp://0.0.0.0:1234
- uses: docker/setup-buildx-action@v2 - uses: docker/setup-buildx-action@v3
id: buildx-native id: buildx-native
if: inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64') if: inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')
with: with:
@ -61,20 +61,20 @@ jobs:
- name: Log in to Docker Hub - name: Log in to Docker Hub
if: contains(inputs.push_to_images, 'tootsuite') if: contains(inputs.push_to_images, 'tootsuite')
uses: docker/login-action@v2 uses: docker/login-action@v3
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Log in to the Github Container registry - name: Log in to the Github Container registry
if: contains(inputs.push_to_images, 'ghcr.io') if: contains(inputs.push_to_images, 'ghcr.io')
uses: docker/login-action@v2 uses: docker/login-action@v3
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v4 - uses: docker/metadata-action@v5
id: meta id: meta
if: ${{ inputs.push_to_images != '' }} if: ${{ inputs.push_to_images != '' }}
with: with:
@ -83,7 +83,7 @@ jobs:
tags: ${{ inputs.tags }} tags: ${{ inputs.tags }}
labels: ${{ inputs.labels }} labels: ${{ inputs.labels }}
- uses: docker/build-push-action@v4 - uses: docker/build-push-action@v5
with: with:
context: . context: .
build-args: | build-args: |

View File

@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.4 # syntax=docker/dockerfile:1.4
# This needs to be bookworm-slim because the Ruby image is built on bookworm-slim # 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 ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
FROM node:${NODE_VERSION} as build FROM node:${NODE_VERSION} as build

View File

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

View File

@ -1,11 +1,24 @@
# frozen_string_literal: true # frozen_string_literal: true
module DatabaseHelper 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) def with_read_replica(&block)
if replica_enabled?
ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block) ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block)
else
yield
end
end end
def with_primary(&block) def with_primary(&block)
if replica_enabled?
ApplicationRecord.connected_to(role: :writing, &block) ApplicationRecord.connected_to(role: :writing, &block)
else
yield
end
end 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 { createAction } from '@reduxjs/toolkit';
import type { ModalProps } from 'flavours/glitch/reducers/modal';
import type { MODAL_COMPONENTS } from '../features/ui/components/modal_root'; import type { MODAL_COMPONENTS } from '../features/ui/components/modal_root';
export type ModalType = keyof typeof MODAL_COMPONENTS; export type ModalType = keyof typeof MODAL_COMPONENTS;
interface OpenModalPayload { interface OpenModalPayload {
modalType: ModalType; modalType: ModalType;
modalProps: unknown; modalProps: ModalProps;
} }
export const openModal = createAction<OpenModalPayload>('MODAL_OPEN'); 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 { fetchHistory } from 'flavours/glitch/actions/history';
import DropdownMenu from 'flavours/glitch/components/dropdown_menu'; import DropdownMenu from 'flavours/glitch/components/dropdown_menu';
/**
*
* @param {import('flavours/glitch/store').RootState} state
* @param {*} props
*/
const mapStateToProps = (state, { statusId }) => ({ const mapStateToProps = (state, { statusId }) => ({
openDropdownId: state.getIn(['dropdown_menu', 'openId']), openDropdownId: state.dropdownMenu.openId,
openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']), openedViaKeyboard: state.dropdownMenu.keyboard,
items: state.getIn(['history', statusId, 'items']), items: state.getIn(['history', statusId, 'items']),
loading: state.getIn(['history', statusId, 'loading']), loading: state.getIn(['history', statusId, 'loading']),
}); });
@ -15,11 +20,11 @@ const mapDispatchToProps = (dispatch, { statusId }) => ({
onOpen (id, onItemClick, keyboard) { onOpen (id, onItemClick, keyboard) {
dispatch(fetchHistory(statusId)); dispatch(fetchHistory(statusId));
dispatch(openDropdownMenu(id, keyboard)); dispatch(openDropdownMenu({ id, keyboard }));
}, },
onClose (id) { 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; const listenerOptions = supportsPassiveEvents ? { passive: true } : false;
/**
*
* @param {import('flavours/glitch/store').RootState} state
* @param {*} props
*/
const mapStateToProps = (state, { scrollKey }) => { const mapStateToProps = (state, { scrollKey }) => {
return { 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'; import { isUserTouching } from '../is_mobile';
/**
* @param {import('flavours/glitch/store').RootState} state
*/
const mapStateToProps = state => ({ const mapStateToProps = state => ({
openDropdownId: state.getIn(['dropdown_menu', 'openId']), openDropdownId: state.dropdownMenu.openId,
openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']), openedViaKeyboard: state.dropdownMenu.keyboard,
}); });
const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
@ -20,7 +23,7 @@ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
actions: items, actions: items,
onClick: onItemClick, onClick: onItemClick,
}, },
}) : openDropdownMenu(id, keyboard, scrollKey)); }) : openDropdownMenu({ id, keyboard, scrollKey }));
}, },
onClose(id) { onClose(id) {
@ -28,7 +31,7 @@ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
modalType: 'ACTIONS', modalType: 'ACTIONS',
ignoreFocus: false, ignoreFocus: false,
})); }));
dispatch(closeDropdownMenu(id)); dispatch(closeDropdownMenu({ id }));
}, },
}); });

View File

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

View File

@ -55,8 +55,10 @@ const homeTooSlow = createSelector([
getHomeFeedSpeed, getHomeFeedSpeed,
], (isLoading, isPartial, speed) => ], (isLoading, isPartial, speed) =>
!isLoading && !isPartial // Only if the home feed has finished loading !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 && (
(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 || (Date.now() - speed.newest) > (1000 * 3600)) // If the most recent post is from over an hour ago
)
); );
const mapStateToProps = state => ({ const mapStateToProps = state => ({

View File

@ -80,7 +80,7 @@ const mapStateToProps = state => ({
hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 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, 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']), isWide: state.getIn(['local_settings', 'stretch']),
dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null, dropdownMenuIsOpen: state.dropdownMenu.openId !== null,
unreadNotifications: state.getIn(['notifications', 'unread']), unreadNotifications: state.getIn(['notifications', 'unread']),
showFaviconBadge: state.getIn(['local_settings', 'notifications', 'favicon_badge']), showFaviconBadge: state.getIn(['local_settings', 'notifications', 'favicon_badge']),
hicolorPrivacyIcons: state.getIn(['local_settings', 'hicolor_privacy_icons']), 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 conversations from './conversations';
import custom_emojis from './custom_emojis'; import custom_emojis from './custom_emojis';
import domain_lists from './domain_lists'; import domain_lists from './domain_lists';
import dropdown_menu from './dropdown_menu'; import { dropdownMenuReducer } from './dropdown_menu';
import filters from './filters'; import filters from './filters';
import followed_tags from './followed_tags'; import followed_tags from './followed_tags';
import height_cache from './height_cache'; import height_cache from './height_cache';
@ -49,7 +49,7 @@ import user_lists from './user_lists';
const reducers = { const reducers = {
announcements, announcements,
dropdown_menu, dropdownMenu: dropdownMenuReducer,
timelines, timelines,
meta, meta,
alerts, alerts,

View File

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

View File

@ -281,6 +281,7 @@
background: transparent; background: transparent;
cursor: pointer; cursor: pointer;
padding: 0 3px; padding: 0 3px;
white-space: nowrap;
outline: 0; outline: 0;
transition: all 100ms ease-in; transition: all 100ms ease-in;
transition-property: background-color, color; 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 { createAction } from '@reduxjs/toolkit';
import type { ModalProps } from 'mastodon/reducers/modal';
import type { MODAL_COMPONENTS } from '../features/ui/components/modal_root'; import type { MODAL_COMPONENTS } from '../features/ui/components/modal_root';
export type ModalType = keyof typeof MODAL_COMPONENTS; export type ModalType = keyof typeof MODAL_COMPONENTS;
interface OpenModalPayload { interface OpenModalPayload {
modalType: ModalType; modalType: ModalType;
modalProps: unknown; modalProps: ModalProps;
} }
export const openModal = createAction<OpenModalPayload>('MODAL_OPEN'); 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 { fetchHistory } from 'mastodon/actions/history';
import DropdownMenu from 'mastodon/components/dropdown_menu'; import DropdownMenu from 'mastodon/components/dropdown_menu';
/**
*
* @param {import('mastodon/store').RootState} state
* @param {*} props
*/
const mapStateToProps = (state, { statusId }) => ({ const mapStateToProps = (state, { statusId }) => ({
openDropdownId: state.getIn(['dropdown_menu', 'openId']), openDropdownId: state.dropdownMenu.openId,
openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']), openedViaKeyboard: state.dropdownMenu.keyboard,
items: state.getIn(['history', statusId, 'items']), items: state.getIn(['history', statusId, 'items']),
loading: state.getIn(['history', statusId, 'loading']), loading: state.getIn(['history', statusId, 'loading']),
}); });
@ -15,11 +20,11 @@ const mapDispatchToProps = (dispatch, { statusId }) => ({
onOpen (id, onItemClick, keyboard) { onOpen (id, onItemClick, keyboard) {
dispatch(fetchHistory(statusId)); dispatch(fetchHistory(statusId));
dispatch(openDropdownMenu(id, keyboard)); dispatch(openDropdownMenu({ id, keyboard }));
}, },
onClose (id) { 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; const listenerOptions = supportsPassiveEvents ? { passive: true } : false;
/**
*
* @param {import('mastodon/store').RootState} state
* @param {*} props
*/
const mapStateToProps = (state, { scrollKey }) => { const mapStateToProps = (state, { scrollKey }) => {
return { 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 DropdownMenu from '../components/dropdown_menu';
import { isUserTouching } from '../is_mobile'; import { isUserTouching } from '../is_mobile';
/**
* @param {import('mastodon/store').RootState} state
*/
const mapStateToProps = state => ({ const mapStateToProps = state => ({
openDropdownId: state.getIn(['dropdown_menu', 'openId']), openDropdownId: state.dropdownMenu.openId,
openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']), openedViaKeyboard: state.dropdownMenu.keyboard,
}); });
const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
@ -25,7 +28,7 @@ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
actions: items, actions: items,
onClick: onItemClick, onClick: onItemClick,
}, },
}) : openDropdownMenu(id, keyboard, scrollKey)); }) : openDropdownMenu({ id, keyboard, scrollKey }));
}, },
onClose(id) { onClose(id) {
@ -33,7 +36,7 @@ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({
modalType: 'ACTIONS', modalType: 'ACTIONS',
ignoreFocus: false, ignoreFocus: false,
})); }));
dispatch(closeDropdownMenu(id)); dispatch(closeDropdownMenu({ id }));
}, },
}); });

View File

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

View File

@ -55,8 +55,10 @@ const homeTooSlow = createSelector([
getHomeFeedSpeed, getHomeFeedSpeed,
], (isLoading, isPartial, speed) => ], (isLoading, isPartial, speed) =>
!isLoading && !isPartial // Only if the home feed has finished loading !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 && (
(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 || (Date.now() - speed.newest) > (1000 * 3600)) // If the most recent post is from over an hour ago
)
); );
const mapStateToProps = state => ({ const mapStateToProps = state => ({

View File

@ -79,7 +79,7 @@ const mapStateToProps = state => ({
hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0, hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,
hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 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, 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, firstLaunch: state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION,
username: state.getIn(['accounts', me, 'username']), username: state.getIn(['accounts', me, 'username']),
}); });

View File

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

View File

@ -321,7 +321,7 @@
"interaction_modal.login.action": "Torna a l'inici", "interaction_modal.login.action": "Torna a l'inici",
"interaction_modal.login.prompt": "Domini del teu servidor domèstic, p.ex. mastodon.social", "interaction_modal.login.prompt": "Domini del teu servidor domèstic, p.ex. mastodon.social",
"interaction_modal.no_account_yet": "No a Mastodon?", "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.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": "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)", "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}}", "load_pending": "{count, plural, one {# element nou} other {# elements nous}}",
"loading_indicator.label": "Es carrega...", "loading_indicator.label": "Es carrega...",
"media_gallery.toggle_visible": "{number, plural, one {Amaga la imatge} other {Amaga les imatges}}", "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.duration": "Durada",
"mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?", "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?",
"mute_modal.indefinite": "Indefinit", "mute_modal.indefinite": "Indefinit",
@ -426,8 +426,8 @@
"notification.admin.sign_up": "{name} s'ha registrat", "notification.admin.sign_up": "{name} s'ha registrat",
"notification.favourite": "{name} ha afavorit el teu tut", "notification.favourite": "{name} ha afavorit el teu tut",
"notification.follow": "{name} et segueix", "notification.follow": "{name} et segueix",
"notification.follow_request": "{name} ha sol·licitat seguir-te", "notification.follow_request": "{name} ha sol·licitat de seguir-te",
"notification.mention": "{name} t'ha mencionat", "notification.mention": "{name} t'ha esmentat",
"notification.own_poll": "La teva enquesta ha finalitzat", "notification.own_poll": "La teva enquesta ha finalitzat",
"notification.poll": "Ha finalitzat una enquesta en què has votat", "notification.poll": "Ha finalitzat una enquesta en què has votat",
"notification.reblog": "{name} t'ha impulsat", "notification.reblog": "{name} t'ha impulsat",
@ -451,7 +451,7 @@
"notifications.column_settings.show": "Mostra a la columna", "notifications.column_settings.show": "Mostra a la columna",
"notifications.column_settings.sound": "Reprodueix so", "notifications.column_settings.sound": "Reprodueix so",
"notifications.column_settings.status": "Nous tuts:", "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.unread_notifications.highlight": "Destaca les notificacions no llegides",
"notifications.column_settings.update": "Edicions:", "notifications.column_settings.update": "Edicions:",
"notifications.filter.all": "Totes", "notifications.filter.all": "Totes",
@ -473,25 +473,25 @@
"onboarding.action.back": "Porta'm enrere", "onboarding.action.back": "Porta'm enrere",
"onboarding.actions.back": "Porta'm enrere", "onboarding.actions.back": "Porta'm enrere",
"onboarding.actions.go_to_explore": "Mira què és tendència", "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.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.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.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": "Popular a Mastodon", "onboarding.follows.title": "Personalitza la pantalla d'inci",
"onboarding.share.lead": "Permet que la gent sàpiga com trobar-te a Mastodon!", "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.message": "Sóc {username} a #Mastodon! Vine i segueix-me a {url}",
"onboarding.share.next_steps": "Possibles passes següents:", "onboarding.share.next_steps": "Possibles passes següents:",
"onboarding.share.title": "Comparteix el teu perfil", "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.skip": "Vols saltar-te tota la resta?",
"onboarding.start.title": "Llestos!", "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.body": "Mastodon va de seguir a gent interessant.",
"onboarding.steps.follow_people.title": "{count, plural, zero {No segueixes cap persona} one {Segeueixes ona persona} other {Segueixes # persones}}", "onboarding.steps.follow_people.title": "Personalitza la pantalla d'inci",
"onboarding.steps.publish_status.body": "Saluda el món.", "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.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.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.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.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!", "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.directory": "Prozkoumat profily",
"column.domain_blocks": "Blokované domény", "column.domain_blocks": "Blokované domény",
"column.favourites": "Oblíbené", "column.favourites": "Oblíbené",
"column.firehose": "Živé kanály l", "column.firehose": "Živé kanály",
"column.follow_requests": "Žádosti o sledování", "column.follow_requests": "Žádosti o sledování",
"column.home": "Domů", "column.home": "Domů",
"column.lists": "Seznamy", "column.lists": "Seznamy",
@ -585,6 +585,7 @@
"search.quick_action.open_url": "Otevřít URL v Mastodonu", "search.quick_action.open_url": "Otevřít URL v Mastodonu",
"search.quick_action.status_search": "Příspěvky odpovídající {x}", "search.quick_action.status_search": "Příspěvky odpovídající {x}",
"search.search_or_paste": "Hledat nebo vložit URL", "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.language_code": "Kód jazyka podle ISO",
"search_popout.options": "Možnosti hledání", "search_popout.options": "Možnosti hledání",
"search_popout.quick_actions": "Rychlé akce", "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.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": "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.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.add_option": "Auswahl",
"compose_form.poll.duration": "Umfragedauer", "compose_form.poll.duration": "Umfragedauer",
"compose_form.poll.option_placeholder": "{number}. Auswahl", "compose_form.poll.option_placeholder": "{number}. Auswahl",
@ -286,7 +286,7 @@
"footer.source_code": "Quellcode anzeigen", "footer.source_code": "Quellcode anzeigen",
"footer.status": "Status", "footer.status": "Status",
"generic.saved": "Gespeichert", "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.all": "und {additional}",
"hashtag.column_header.tag_mode.any": "oder {additional}", "hashtag.column_header.tag_mode.any": "oder {additional}",
"hashtag.column_header.tag_mode.none": "ohne {additional}", "hashtag.column_header.tag_mode.none": "ohne {additional}",
@ -360,7 +360,7 @@
"keyboard_shortcuts.requests": "Liste der Follower-Anfragen aufrufen", "keyboard_shortcuts.requests": "Liste der Follower-Anfragen aufrufen",
"keyboard_shortcuts.search": "Suchleiste fokussieren", "keyboard_shortcuts.search": "Suchleiste fokussieren",
"keyboard_shortcuts.spoilers": "Feld für Inhaltswarnung anzeigen/ausblenden", "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_hidden": "Beitragstext hinter der Inhaltswarnung anzeigen/ausblenden",
"keyboard_shortcuts.toggle_sensitivity": "Medien anzeigen/ausblenden", "keyboard_shortcuts.toggle_sensitivity": "Medien anzeigen/ausblenden",
"keyboard_shortcuts.toot": "Neuen Beitrag erstellen", "keyboard_shortcuts.toot": "Neuen Beitrag erstellen",

View File

@ -590,6 +590,7 @@
"search.quick_action.open_url": "Open URL in Mastodon", "search.quick_action.open_url": "Open URL in Mastodon",
"search.quick_action.status_search": "Posts matching {x}", "search.quick_action.status_search": "Posts matching {x}",
"search.search_or_paste": "Search or paste URL", "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.language_code": "ISO language code",
"search_popout.options": "Search options", "search_popout.options": "Search options",
"search_popout.quick_actions": "Quick actions", "search_popout.quick_actions": "Quick actions",

View File

@ -113,6 +113,7 @@
"column.direct": "Privataj mencioj", "column.direct": "Privataj mencioj",
"column.directory": "Foliumi la profilojn", "column.directory": "Foliumi la profilojn",
"column.domain_blocks": "Blokitaj domajnoj", "column.domain_blocks": "Blokitaj domajnoj",
"column.favourites": "Stelumoj",
"column.firehose": "Vivantaj fluoj", "column.firehose": "Vivantaj fluoj",
"column.follow_requests": "Petoj de sekvado", "column.follow_requests": "Petoj de sekvado",
"column.home": "Hejmo", "column.home": "Hejmo",
@ -136,6 +137,7 @@
"compose.language.search": "Serĉi lingvojn...", "compose.language.search": "Serĉi lingvojn...",
"compose.published.body": "Afiŝo publikigita.", "compose.published.body": "Afiŝo publikigita.",
"compose.published.open": "Malfermi", "compose.published.open": "Malfermi",
"compose.saved.body": "Afiŝo konservita.",
"compose_form.direct_message_warning_learn_more": "Lerni pli", "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.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.", "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.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.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?",
"confirmations.redraft.confirm": "Forigi kaj reskribi", "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.confirm": "Respondi",
"confirmations.reply.message": "Respondi nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?", "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", "confirmations.unfollow.confirm": "Ne plu sekvi",
@ -548,6 +551,7 @@
"search.search_or_paste": "Serĉu aŭ algluu URL-on", "search.search_or_paste": "Serĉu aŭ algluu URL-on",
"search_popout.quick_actions": "Rapidaj agoj", "search_popout.quick_actions": "Rapidaj agoj",
"search_popout.recent": "Lastaj serĉoj", "search_popout.recent": "Lastaj serĉoj",
"search_popout.user": "uzanto",
"search_results.accounts": "Profiloj", "search_results.accounts": "Profiloj",
"search_results.all": "Ĉiuj", "search_results.all": "Ĉiuj",
"search_results.hashtags": "Kradvortoj", "search_results.hashtags": "Kradvortoj",

View File

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

View File

@ -379,7 +379,7 @@
"lists.delete": "Borrar lista", "lists.delete": "Borrar lista",
"lists.edit": "Editar lista", "lists.edit": "Editar lista",
"lists.edit.submit": "Cambiar título", "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.create": "Añadir lista",
"lists.new.title_placeholder": "Título de la nueva lista", "lists.new.title_placeholder": "Título de la nueva lista",
"lists.replies_policy.followed": "Cualquier usuario seguido", "lists.replies_policy.followed": "Cualquier usuario seguido",

View File

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

View File

@ -20,7 +20,7 @@
"account.block_short": "Bloquer", "account.block_short": "Bloquer",
"account.blocked": "Bloqué·e", "account.blocked": "Bloqué·e",
"account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", "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.direct": "Mention privée @{name}",
"account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose",
"account.domain_blocked": "Domaine bloqué", "account.domain_blocked": "Domaine bloqué",
@ -50,7 +50,7 @@
"account.moved_to": "{name} a indiqué que son nouveau compte est maintenant :", "account.moved_to": "{name} a indiqué que son nouveau compte est maintenant :",
"account.mute": "Masquer @{name}", "account.mute": "Masquer @{name}",
"account.mute_notifications_short": "Désactiver les alertes", "account.mute_notifications_short": "Désactiver les alertes",
"account.mute_short": "Masquer", "account.mute_short": "Mettre en sourdine",
"account.muted": "Masqué·e", "account.muted": "Masqué·e",
"account.no_bio": "Aucune description fournie.", "account.no_bio": "Aucune description fournie.",
"account.open_original_page": "Ouvrir la page d'origine", "account.open_original_page": "Ouvrir la page d'origine",
@ -108,7 +108,7 @@
"closed_registrations_modal.title": "Inscription sur Mastodon", "closed_registrations_modal.title": "Inscription sur Mastodon",
"column.about": "À propos", "column.about": "À propos",
"column.blocks": "Comptes bloqués", "column.blocks": "Comptes bloqués",
"column.bookmarks": "Signets", "column.bookmarks": "Marque-pages",
"column.community": "Fil public local", "column.community": "Fil public local",
"column.direct": "Mentions privées", "column.direct": "Mentions privées",
"column.directory": "Parcourir les profils", "column.directory": "Parcourir les profils",
@ -149,9 +149,9 @@
"compose_form.poll.option_placeholder": "Choix {number}", "compose_form.poll.option_placeholder": "Choix {number}",
"compose_form.poll.remove_option": "Supprimer ce choix", "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_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": "Publier",
"compose_form.publish_form": "Publier", "compose_form.publish_form": "Nouvelle publication",
"compose_form.publish_loud": "{publish}!", "compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Enregistrer les modifications", "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}}", "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.moments": "Cha doir e ach greiseag",
"time_remaining.seconds": "{number, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air fhàgail", "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.remote_resource_not_displayed": "Cha dèid {resource} o fhrithealaichean eile a shealltainn.",
"timeline_hint.resources.followers": "Luchd-leantainn", "timeline_hint.resources.followers": "luchd-leantainn",
"timeline_hint.resources.follows": "A leantainn", "timeline_hint.resources.follows": "an fheadhainn gan leantainn",
"timeline_hint.resources.statuses": "Postaichean nas sine", "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.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", "trends.trending_now": "A treandadh an-dràsta",
"ui.beforeunload": "Caillidh tu an dreachd agad ma dhfhàgas tu Mastodon 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", "community.column_settings.remote_only": "Só remoto",
"compose.language.change": "Elixe o idioma", "compose.language.change": "Elixe o idioma",
"compose.language.search": "Buscar idiomas...", "compose.language.search": "Buscar idiomas...",
"compose.published.body": "Publicación publicada.", "compose.published.body": "Mensaxe publicada.",
"compose.published.open": "Abrir", "compose.published.open": "Abrir",
"compose.saved.body": "Publicación gardada.", "compose.saved.body": "Publicación gardada.",
"compose_form.direct_message_warning_learn_more": "Saber máis", "compose_form.direct_message_warning_learn_more": "Saber máis",

View File

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

View File

@ -379,7 +379,7 @@
"lists.delete": "Lijst verwijderen", "lists.delete": "Lijst verwijderen",
"lists.edit": "Lijst bewerken", "lists.edit": "Lijst bewerken",
"lists.edit.submit": "Titel veranderen", "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.create": "Lijst toevoegen",
"lists.new.title_placeholder": "Naam nieuwe lijst", "lists.new.title_placeholder": "Naam nieuwe lijst",
"lists.replies_policy.followed": "Elke gevolgde gebruiker", "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.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.explore_prompt.title": "Dette er hjemmet ditt i Mastodon.",
"home.hide_announcements": "Skjul kunngjøring", "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", "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.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.", "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.lists": "Lister",
"navigation_bar.logout": "Logg ut", "navigation_bar.logout": "Logg ut",
"navigation_bar.mutes": "Dempede brukere", "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.personal": "Personlig",
"navigation_bar.pins": "Festede innlegg", "navigation_bar.pins": "Festede innlegg",
"navigation_bar.preferences": "Innstillinger", "navigation_bar.preferences": "Innstillinger",
@ -586,6 +590,7 @@
"search.quick_action.open_url": "Åpne URL i Mastodon", "search.quick_action.open_url": "Åpne URL i Mastodon",
"search.quick_action.status_search": "Innlegg som samsvarer med {x}", "search.quick_action.status_search": "Innlegg som samsvarer med {x}",
"search.search_or_paste": "Søk eller lim inn URL", "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.language_code": "ISO språkkode",
"search_popout.options": "Alternativer for søk", "search_popout.options": "Alternativer for søk",
"search_popout.quick_actions": "Hurtighandlinger", "search_popout.quick_actions": "Hurtighandlinger",
@ -596,6 +601,7 @@
"search_results.all": "Alle", "search_results.all": "Alle",
"search_results.hashtags": "Emneknagger", "search_results.hashtags": "Emneknagger",
"search_results.nothing_found": "Fant ikke noe for disse søkeordene", "search_results.nothing_found": "Fant ikke noe for disse søkeordene",
"search_results.see_all": "Se alle",
"search_results.statuses": "Innlegg", "search_results.statuses": "Innlegg",
"search_results.title": "Søk etter {q}", "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)", "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.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.media": "Médiá",
"account.mention": "Spomeň @{name}", "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": "Nevšímaj si @{name}",
"account.mute_notifications_short": "Stíš oboznámenia", "account.mute_notifications_short": "Stíš oboznámenia",
"account.mute_short": "Nevšímaj si", "account.mute_short": "Nevšímaj si",
@ -303,6 +303,7 @@
"home.column_settings.basic": "Základné", "home.column_settings.basic": "Základné",
"home.column_settings.show_reblogs": "Ukáž vyzdvihnuté", "home.column_settings.show_reblogs": "Ukáž vyzdvihnuté",
"home.column_settings.show_replies": "Ukáž odpovede", "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.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.body": "Prosím aktualizuj si svoj Mastodon server, ako náhle to bude možné!",
"home.pending_critical_update.link": "Pozri aktualizácie", "home.pending_critical_update.link": "Pozri aktualizácie",

View File

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

View File

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

View File

@ -341,8 +341,8 @@
"keyboard_shortcuts.direct": "mở mục nhắn riêng", "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.down": "di chuyển xuống dưới danh sách",
"keyboard_shortcuts.enter": "viết tút mới", "keyboard_shortcuts.enter": "viết tút mới",
"keyboard_shortcuts.favourite": "Thích tút", "keyboard_shortcuts.favourite": "thích tút",
"keyboard_shortcuts.favourites": "Mở lượt thích", "keyboard_shortcuts.favourites": "mở lượt thích",
"keyboard_shortcuts.federated": "mở mạng liên hợp", "keyboard_shortcuts.federated": "mở mạng liên hợp",
"keyboard_shortcuts.heading": "Danh sách phím tắt", "keyboard_shortcuts.heading": "Danh sách phím tắt",
"keyboard_shortcuts.home": "mở trang chính", "keyboard_shortcuts.home": "mở trang chính",
@ -557,7 +557,7 @@
"report.reasons.dislike": "Tôi không thích nó", "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.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": "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": "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.other_description": "Vấn đề không nằm trong những mục trên",
"report.reasons.spam": "Đây là spam", "report.reasons.spam": "Đây là spam",
@ -592,7 +592,7 @@
"search.search_or_paste": "Tìm kiếm hoặc nhập URL", "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.full_text_search_disabled_message": "Không khả dụng trên {domain}.",
"search_popout.language_code": "Mã ngôn ngữ ISO", "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.quick_actions": "Thao tác nhanh",
"search_popout.recent": "Tìm kiếm gần đây", "search_popout.recent": "Tìm kiếm gần đây",
"search_popout.specific_date": "ngày cụ thể", "search_popout.specific_date": "ngày cụ thể",

View File

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

View File

@ -600,6 +600,7 @@
"search_results.all": "全部", "search_results.all": "全部",
"search_results.hashtags": "標籤", "search_results.hashtags": "標籤",
"search_results.nothing_found": "找不到與搜尋字詞相關的內容", "search_results.nothing_found": "找不到與搜尋字詞相關的內容",
"search_results.see_all": "顯示全部",
"search_results.statuses": "文章", "search_results.statuses": "文章",
"search_results.title": "搜尋 {q}", "search_results.title": "搜尋 {q}",
"server_banner.about_active_users": "在最近 30 天內內使用此伺服器的人 (月活躍用戶)", "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 conversations from './conversations';
import custom_emojis from './custom_emojis'; import custom_emojis from './custom_emojis';
import domain_lists from './domain_lists'; import domain_lists from './domain_lists';
import dropdown_menu from './dropdown_menu'; import { dropdownMenuReducer } from './dropdown_menu';
import filters from './filters'; import filters from './filters';
import followed_tags from './followed_tags'; import followed_tags from './followed_tags';
import height_cache from './height_cache'; import height_cache from './height_cache';
@ -46,7 +46,7 @@ import user_lists from './user_lists';
const reducers = { const reducers = {
announcements, announcements,
dropdown_menu, dropdownMenu: dropdownMenuReducer,
timelines, timelines,
meta, meta,
alerts, alerts,

View File

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

View File

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

View File

@ -41,13 +41,13 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck
elsif cluster_health['status'] == 'red' elsif cluster_health['status'] == 'red'
Admin::SystemCheck::Message.new(:elasticsearch_health_red) Admin::SystemCheck::Message.new(:elasticsearch_health_red)
elsif cluster_health['number_of_nodes'] < 2 && es_preset != 'single_node_cluster' 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' 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) Admin::SystemCheck::Message.new(:elasticsearch_reset_chewy)
elsif cluster_health['status'] == 'yellow' elsif cluster_health['status'] == 'yellow'
Admin::SystemCheck::Message.new(:elasticsearch_health_yellow) Admin::SystemCheck::Message.new(:elasticsearch_health_yellow)
else 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 end
rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error
Admin::SystemCheck::Message.new(:elasticsearch_running_check) Admin::SystemCheck::Message.new(:elasticsearch_running_check)

View File

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

View File

@ -5,7 +5,7 @@ class ApplicationRecord < ActiveRecord::Base
include Remotable 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 class << self
def update_index(_type_name, *_args, &_block) def update_index(_type_name, *_args, &_block)

View File

@ -18,7 +18,7 @@ module AccountAvatar
included do included do
# Avatar upload # 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_content_type :avatar, content_type: IMAGE_MIME_TYPES
validates_attachment_size :avatar, less_than: LIMIT validates_attachment_size :avatar, less_than: LIMIT
remotable_attachment :avatar, LIMIT, suppress_errors: false remotable_attachment :avatar, LIMIT, suppress_errors: false

View File

@ -19,7 +19,7 @@ module AccountHeader
included do included do
# Header upload # 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_content_type :header, content_type: IMAGE_MIME_TYPES
validates_attachment_size :header, less_than: LIMIT validates_attachment_size :header, less_than: LIMIT
remotable_attachment :header, LIMIT, suppress_errors: false 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_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 before_validation :downcase_domain

View File

@ -171,7 +171,7 @@ class MediaAttachment < ApplicationRecord
DEFAULT_STYLES = [:original].freeze DEFAULT_STYLES = [:original].freeze
GLOBAL_CONVERT_OPTIONS = { 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 }.freeze
belongs_to :account, inverse_of: :media_attachments, optional: true 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_and_belongs_to_many :statuses
has_one :trend, class_name: 'PreviewCardTrend', inverse_of: :preview_card, dependent: :destroy 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 :url, presence: true, uniqueness: true
validates_attachment_content_type :image, content_type: IMAGE_MIME_TYPES 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 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 } validates_attachment :icon, content_type: { content_type: ICON_MIME_TYPES }, size: { less_than: LIMIT }
remotable_attachment :icon, LIMIT remotable_attachment :icon, LIMIT

View File

@ -62,13 +62,13 @@ class RelationshipFilter
def relationship_scope(value) def relationship_scope(value)
case value case value
when 'following' when 'following'
account.following.eager_load(:account_stat).reorder(nil) account.following.includes(:account_stat).reorder(nil)
when 'followed_by' when 'followed_by'
account.followers.eager_load(:account_stat).reorder(nil) account.followers.includes(:account_stat).reorder(nil)
when 'mutual' 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' 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 else
raise Mastodon::InvalidParameterError, "Unknown relationship: #{value}" raise Mastodon::InvalidParameterError, "Unknown relationship: #{value}"
end end

View File

@ -41,7 +41,7 @@ class SiteUpload < ApplicationRecord
mascot: {}.freeze, mascot: {}.freeze,
}.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_attachment_content_type :file, content_type: %r{\Aimage/.*\z}
validates :file, presence: true validates :file, presence: true

View File

@ -4,6 +4,8 @@ class REST::AccountSerializer < ActiveModel::Serializer
include RoutingHelper include RoutingHelper
include FormattingHelper 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, attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :group, :created_at,
:note, :url, :uri, :avatar, :avatar_static, :header, :header_static, :note, :url, :uri, :avatar, :avatar_static, :header, :header_static,
:followers_count, :following_count, :statuses_count, :last_status_at :followers_count, :following_count, :statuses_count, :last_status_at

View File

@ -3,6 +3,8 @@
class REST::CustomEmojiSerializer < ActiveModel::Serializer class REST::CustomEmojiSerializer < ActiveModel::Serializer
include RoutingHelper 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 attributes :shortcode, :url, :static_url, :visible_in_picker
attribute :category, if: :category_loaded? attribute :category, if: :category_loaded?

View File

@ -1,6 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
class REST::RelationshipSerializer < ActiveModel::Serializer 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, attributes :id, :following, :showing_reblogs, :notifying, :languages, :followed_by,
:blocking, :blocked_by, :muting, :muting_notifications, :blocking, :blocked_by, :muting, :muting_notifications,
:requested, :requested_by, :domain_blocking, :endorsed, :note :requested, :requested_by, :domain_blocking, :endorsed, :note

View File

@ -14,7 +14,7 @@ ca:
following: Seguint 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. 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 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í! nothing_here: No hi ha res aquí!
pin_errors: pin_errors:
following: Has d'estar seguint la persona que vulguis avalar following: Has d'estar seguint la persona que vulguis avalar
@ -1464,7 +1464,7 @@ ca:
action: Respon action: Respon
body: "%{name} t'ha mencionat en:" body: "%{name} t'ha mencionat en:"
subject: "%{name} t'ha mencionat" subject: "%{name} t'ha mencionat"
title: Menció nova title: Nova menció
poll: poll:
subject: Ha finalitzat l'enquesta de %{name} subject: Ha finalitzat l'enquesta de %{name}
reblog: reblog:

View File

@ -315,6 +315,7 @@ cs:
unpublish: Skrýt unpublish: Skrýt
unpublished_msg: Zveřejněné oznámení bylo úspěšně skryto! unpublished_msg: Zveřejněné oznámení bylo úspěšně skryto!
updated_msg: Oznámení bylo úspěšně aktualizováno! updated_msg: Oznámení bylo úspěšně aktualizováno!
critical_update_pending: Čeká se na kritickou aktualizaci
custom_emojis: custom_emojis:
assign_category: Přiřadit kategorii assign_category: Přiřadit kategorii
by_domain: Doména by_domain: Doména
@ -396,6 +397,15 @@ cs:
undo: Zakázat federaci s doménou undo: Zakázat federaci s doménou
domain_blocks: domain_blocks:
add_new: Přidat novou blokaci domény 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 created_msg: Blokace domény se právě vyřizuje
destroyed_msg: Blokace domény byla odvolána destroyed_msg: Blokace domény byla odvolána
domain: Doména domain: Doména
@ -759,6 +769,9 @@ cs:
branding: 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é. 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 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: content_retention:
preamble: Určuje, jak je obsah generovaný uživatelem uložen v Mastodonu. preamble: Určuje, jak je obsah generovaný uživatelem uložen v Mastodonu.
title: Uchovávání obsahu title: Uchovávání obsahu
@ -786,9 +799,24 @@ cs:
approved: Pro registraci je vyžadováno schválení approved: Pro registraci je vyžadováno schválení
none: Nikdo se nemůže registrovat none: Nikdo se nemůže registrovat
open: Kdokoliv se můž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: site_uploads:
delete: Odstranit nahraný soubor delete: Odstranit nahraný soubor
destroyed_msg: Upload stránky byl úspěšně smazán! 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: statuses:
account: Autor account: Autor
application: Aplikace application: Aplikace
@ -829,6 +857,20 @@ cs:
system_checks: system_checks:
database_schema_check: 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 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: elasticsearch_running_check:
message_html: Nelze se připojit k Elasticsearch. Prosím zkontrolujte, že běží, nebo vypněte fulltextové vyhledávání message_html: Nelze se připojit k Elasticsearch. Prosím zkontrolujte, že běží, nebo vypněte fulltextové vyhledávání
elasticsearch_version_check: elasticsearch_version_check:
@ -839,6 +881,12 @@ cs:
message_html: Nedefinovali jste žádná pravidla serveru. message_html: Nedefinovali jste žádná pravidla serveru.
sidekiq_process_check: sidekiq_process_check:
message_html: Pro %{value} frontu/fronty neběží žádný Sidekiq proces. Zkontrolujte prosím svou Sidekiq konfiguraci 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: upload_check_privacy_error:
action: Pro více informací se podívejte zde 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>" 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:' 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. 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} 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: new_pending_account:
body: Detaily nového účtu jsou uvedeny níže. Tuto žádost můžete schválit nebo zamítnout. 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}) 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: Uživatel %{reporter} nahlásil uživatele %{target}
body_remote: Někdo z domény %{domain} 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}) 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: new_trends:
body: 'Následující položky vyžadují posouzení, než mohou být zobrazeny veřejně:' body: 'Následující položky vyžadují posouzení, než mohou být zobrazeny veřejně:'
new_trending_links: new_trending_links:
@ -1000,6 +1054,7 @@ cs:
notification_preferences: Změnit předvolby e-mailů notification_preferences: Změnit předvolby e-mailů
salutation: "%{name}," salutation: "%{name},"
settings: 'Změnit předvolby e-mailů: %{link}' settings: 'Změnit předvolby e-mailů: %{link}'
unsubscribe: Přestat odebírat
view: 'Zobrazit:' view: 'Zobrazit:'
view_profile: Zobrazit profil view_profile: Zobrazit profil
view_status: Zobrazit příspěvek view_status: Zobrazit příspěvek
@ -1013,6 +1068,10 @@ cs:
your_token: Váš přístupový token your_token: Váš přístupový token
auth: auth:
apply_for_account: Požádat o účet 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: confirmations:
wrong_email_hint: Pokud není e-mail správný, můžete si ho změnit v nastavení účtu. wrong_email_hint: Pokud není e-mail správný, můžete si ho změnit v nastavení účtu.
delete_account: Odstranit účet delete_account: Odstranit účet
@ -1049,8 +1108,11 @@ cs:
rules: rules:
accept: Přijmout accept: Přijmout
back: Zpět 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: 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: Některá základní pravidla.
title_invited: Byl/a jsi pozván/a.
security: Zabezpečení security: Zabezpečení
set_new_password: Nastavit nové heslo set_new_password: Nastavit nové heslo
setup: setup:
@ -1151,6 +1213,10 @@ cs:
your_appeal_rejected: Vaše odvolání bylo zamítnuto your_appeal_rejected: Vaše odvolání bylo zamítnuto
domain_validator: domain_validator:
invalid_domain: není platné doménové jméno 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: errors:
'400': Žádost, kterou jste odeslali, byla neplatná nebo poškozená. '400': Žádost, kterou jste odeslali, byla neplatná nebo poškozená.
'403': Nejste oprávněni tuto stránku zobrazit. '403': Nejste oprávněni tuto stránku zobrazit.
@ -1306,6 +1372,7 @@ cs:
bookmarks: Záložky bookmarks: Záložky
domain_blocking: Seznam blokovaných domén domain_blocking: Seznam blokovaných domén
following: Seznam sledovaných following: Seznam sledovaných
lists: Seznamy
muting: Seznam ignorovaných muting: Seznam ignorovaných
upload: Nahrát upload: Nahrát
invites: invites:
@ -1461,12 +1528,22 @@ cs:
expired: Anketa již skončila expired: Anketa již skončila
invalid_choice: Zvolená možnost hlasování neexistuje invalid_choice: Zvolená možnost hlasování neexistuje
over_character_limit: nesmí být žádná delší než %{max} znaků 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_few_options: musí mít více než jednu položku
too_many_options: nesmí obsahovat více než %{max} položek too_many_options: nesmí obsahovat více než %{max} položek
preferences: preferences:
other: Ostatní other: Ostatní
posting_defaults: Výchozí možnosti psaní posting_defaults: Výchozí možnosti psaní
public_timelines: Veřejné časové osy 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: privacy_policy:
title: Zásady ochrany osobních údajů title: Zásady ochrany osobních údajů
reactions: 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á. 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:' signed_in_as: 'Přihlášeni jako:'
verification: 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í verification: Ověření
verified_links: Vaše ověřené odkazy
webauthn_credentials: webauthn_credentials:
add: Přidat nový bezpečnostní klíč add: Přidat nový bezpečnostní klíč
create: create:

View File

@ -1866,6 +1866,7 @@ cy:
default: "%b %d, %Y, %H:%M" default: "%b %d, %Y, %H:%M"
month: "%b %Y" month: "%b %Y"
time: "%H:%M" time: "%H:%M"
with_time_zone: "%b %d, %Y, %H:%M %Z"
translation: translation:
errors: errors:
quota_exceeded: Aethpwyd y tu hwnt i gwota defnydd y gweinydd cyfan ar gyfer y gwasanaeth cyfieithu. 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:' signed_in_as: 'Angemeldet als:'
verification: 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. 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." 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“. 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 verification: Verifizierung

View File

@ -18,13 +18,13 @@ sr-Latn:
unconfirmed: Pre nastavka morate potvrditi svoj nalog. unconfirmed: Pre nastavka morate potvrditi svoj nalog.
mailer: mailer:
confirmation_instructions: confirmation_instructions:
action: Potvrdite adresu e-pošte action: Verifikujte adresu e-pošte
action_with_app: Potvrdi i vrati se na %{app} 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: 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. 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. 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}' 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: email_changed:
explanation: 'Adresa ove e-pošte za vaš nalog će biti promenjena u:' 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. 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. 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. 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}' subject: 'Mastodon: Potvrdite e-poštu za %{instance}'
title: Potvrdite adresu e-pošte title: Verifikujte adresu e-pošte
reset_password_instructions: reset_password_instructions:
action: Lozinka promenjena action: Lozinka promenjena
explanation: Zatražili ste novu lozinku za vaš nalog. 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_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_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. 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. updated: Vaš nalog je uspešno ažuriran.
sessions: sessions:
already_signed_out: Uspešno ste se odjavili. already_signed_out: Uspešno ste se odjavili.

View File

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

View File

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

View File

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

View File

@ -458,7 +458,7 @@ gd:
not_permitted: Chan eil seo ceadaichte 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_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} resolved_through_html: Chaidh fuasgladh slighe %{domain}
title: Àrainnean puist-d gam bacadh title: Bacadh àrainnean puist-d
export_domain_allows: export_domain_allows:
new: new:
title: Ion-phortaich àrainnean ceadaichte title: Ion-phortaich àrainnean ceadaichte

View File

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

View File

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

View File

@ -1303,7 +1303,7 @@ ko:
unconfirmed: 미확인 unconfirmed: 미확인
status: 상태 status: 상태
success: 파일이 정상적으로 업로드되었으며, 현재 처리 중입니다 success: 파일이 정상적으로 업로드되었으며, 현재 처리 중입니다
time_started: 시작 시 time_started: 시작 시
titles: titles:
blocking: 차단한 계정 가져오는 중 blocking: 차단한 계정 가져오는 중
bookmarks: 북마크 가져오는 중 bookmarks: 북마크 가져오는 중

View File

@ -309,6 +309,7 @@
unpublish: Avpubliser unpublish: Avpubliser
unpublished_msg: Kunngjøring upublisert! unpublished_msg: Kunngjøring upublisert!
updated_msg: Kunngjøringen er oppdatert! updated_msg: Kunngjøringen er oppdatert!
critical_update_pending: Kritisk oppdatering avventer
custom_emojis: custom_emojis:
assign_category: Tilegn kategori assign_category: Tilegn kategori
by_domain: Domene by_domain: Domene
@ -774,6 +775,18 @@
site_uploads: site_uploads:
delete: Slett den opplastede filen delete: Slett den opplastede filen
destroyed_msg: Vellykket sletting av sideopplasting! 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: statuses:
account: Forfatter account: Forfatter
application: Applikasjon application: Applikasjon
@ -838,6 +851,12 @@
message_html: Du har ikke definert noen serverregler. message_html: Du har ikke definert noen serverregler.
sidekiq_process_check: sidekiq_process_check:
message_html: Ingen Sidekiq-prosess kjører for %{value} køen(e). Vennligst se gjennom Sidekiq-konfigurasjonen din 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: upload_check_privacy_error:
action: Sjekk her for mer informasjon action: Sjekk her for mer informasjon
message_html: "<strong>Webserveren din er feilkonfigurert. Personvernet til brukerne dine er i fare.</strong>" 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:" 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. next_steps: Du kan godkjenne klagen for å angre på moderasjonsvedtaket eller ignorere det.
subject: "%{username} klager på en moderasjonsbeslutning for %{instance}" 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: new_pending_account:
body: Detaljer om den nye kontoen er nedenfor. Du kan godkjenne eller avvise denne søknaden. 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}) subject: Ny konto opp til vurdering på %{instance} (%{username})
@ -958,6 +980,9 @@
body: "%{reporter} har rapportert %{target}" body: "%{reporter} har rapportert %{target}"
body_remote: Noen fra %{domain} har rapportert %{target} body_remote: Noen fra %{domain} har rapportert %{target}
subject: Ny rapport for %{instance} (#%{id}) 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: new_trends:
body: 'Følgende elementer trenger en gjennomgang før de kan vises offentlig:' body: 'Følgende elementer trenger en gjennomgang før de kan vises offentlig:'
new_trending_links: new_trending_links:
@ -1708,6 +1733,7 @@
default: "%-d. %b %Y, %H:%M" default: "%-d. %b %Y, %H:%M"
month: "%b %Y" month: "%b %Y"
time: "%H:%M" time: "%H:%M"
with_time_zone: "%-d. %b %Y, %H:%M %Z"
two_factor_authentication: two_factor_authentication:
add: Legg til add: Legg til
disable: Skru av disable: Skru av

View File

@ -15,7 +15,7 @@ ca:
account_migration: account_migration:
acct: Especifica l'usuari@domini del compte al qual et vols traslladar acct: Especifica l'usuari@domini del compte al qual et vols traslladar
account_warning_preset: 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 title: Opcional. No és visible per al destinatari
admin_account_action: admin_account_action:
include_statuses: L'usuari veurà quins tuts han causat l'acció de moderació o avís 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 pending_account: Mae cyfrif newydd angen adolygiad
reblog: Mae rhywun wedi hybu eich postiad reblog: Mae rhywun wedi hybu eich postiad
report: Cyflwynwyd adroddiad newydd report: Cyflwynwyd adroddiad newydd
software_updates:
label: Mae fersiwn Mastodon newydd ar gael
trending_tag: Mae pwnc llosg newydd angen adolygiad trending_tag: Mae pwnc llosg newydd angen adolygiad
rule: rule:
text: Rheol text: Rheol

View File

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

View File

@ -301,7 +301,7 @@ lv:
rule: rule:
text: Noteikumi text: Noteikumi
settings: 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 show_application: Parādi, no kuras lietotnes nosūtīji ziņu
tag: tag:
listable: Atļaut šim tēmturim parādīties meklējumos un ieteikumos listable: Atļaut šim tēmturim parādīties meklējumos un ieteikumos

View File

@ -200,7 +200,7 @@
password: Passord password: Passord
phrase: Nøkkelord eller frase phrase: Nøkkelord eller frase
setting_advanced_layout: Skru på det avanserte nettgrensesnittet 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_always_send_emails: Alltid send e-postvarslinger
setting_auto_play_gif: Autoavspill animert GIF-filer setting_auto_play_gif: Autoavspill animert GIF-filer
setting_boost_modal: Vis bekreftelse før fremheving setting_boost_modal: Vis bekreftelse før fremheving
@ -291,6 +291,12 @@
pending_account: Ny bruker avventer gjennomgang pending_account: Ny bruker avventer gjennomgang
reblog: Send e-post når noen fremhever din status reblog: Send e-post når noen fremhever din status
report: Ny rapport er sendt 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 trending_tag: Ny trend krever gjennomgang
rule: rule:
text: Regler text: Regler

View File

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

View File

@ -273,6 +273,7 @@ sk:
title: Oboznámenia title: Oboznámenia
unpublish: Zruš zverejnenie unpublish: Zruš zverejnenie
updated_msg: Oboznámenie úspešne aktualizované! updated_msg: Oboznámenie úspešne aktualizované!
critical_update_pending: Čaká kritická aktualizácia
custom_emojis: custom_emojis:
assign_category: Priraď kategóriu assign_category: Priraď kategóriu
by_domain: Doména by_domain: Doména
@ -418,6 +419,8 @@ sk:
instance_accounts_dimension: Najsledovanejšie účty instance_accounts_dimension: Najsledovanejšie účty
instance_accounts_measure: uložené účty instance_accounts_measure: uložené účty
instance_follows_measure: ich sledovatelia tu 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_reports_measure: hlásenia o nich
instance_statuses_measure: uložené príspevky instance_statuses_measure: uložené príspevky
delivery: delivery:
@ -425,6 +428,7 @@ sk:
failing: Zlyhávajúce failing: Zlyhávajúce
unavailable: Nedostupné unavailable: Nedostupné
delivery_available: Je v dosahu doručovania delivery_available: Je v dosahu doručovania
empty: Nenájdené žiadne domény.
moderation: moderation:
all: Všetky all: Všetky
limited: Obmedzené limited: Obmedzené
@ -482,6 +486,12 @@ sk:
created_msg: Poznámka o nahlásení úspešne vytvorená! created_msg: Poznámka o nahlásení úspešne vytvorená!
destroyed_msg: Poznámka o nahlásení úspešne vymazaná! destroyed_msg: Poznámka o nahlásení úspešne vymazaná!
reports: 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 action_taken_by: Zákrok vykonal/a
actions: 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. 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é other: Ostatné
posting_defaults: Východiskové nastavenia príspevkov posting_defaults: Východiskové nastavenia príspevkov
public_timelines: Verejné časové osi public_timelines: Verejné časové osi
privacy:
title: Súkromie a dosah
reactions: reactions:
errors: errors:
limit_reached: Maximálny počet rôznorodých reakcií bol dosiahnutý limit_reached: Maximálny počet rôznorodých reakcií bol dosiahnutý

View File

@ -869,6 +869,7 @@ sl:
action: Glejte razpoložljive posodobitve action: Glejte razpoložljive posodobitve
software_version_patch_check: software_version_patch_check:
action: Glejte razpoložljive posodobitve action: Glejte razpoložljive posodobitve
message_html: Na voljo je posodobitev Mastodona s popravki hroščev.
upload_check_privacy_error: upload_check_privacy_error:
action: Preverite tukaj za več informacij 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>" 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." x_seconds: "%{count} sek."
deletes: deletes:
challenge_not_passed: Lozinka koju ste uneli nije bila ispravna 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 confirm_username: Unesite svoje korisničko ime da biste potvrdili proceduru
proceed: Obriši nalog proceed: Obriši nalog
success_msg: Vaš nalog je uspešno obrisan success_msg: Vaš nalog je uspešno obrisan
@ -1209,8 +1209,8 @@ sr-Latn:
'406': Ova stranica nije dostupna u izabranom formatu. '406': Ova stranica nije dostupna u izabranom formatu.
'410': Strana koju ste tražili više ne postoji. '410': Strana koju ste tražili više ne postoji.
'422': '422':
content: Bezbedonosna provera nije uspela. Da ne blokirate kolačiće? content: Bezbedonosna verifikacija nije uspela. Da li blokirate kolačiće?
title: Bezbedonosna provera nije uspela title: Bezbedonosna verifikacija nije uspela
'429': Uspored '429': Uspored
'500': '500':
content: Izvinjavamo se, nešto je pošlo po zlu sa ove strane. 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." 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. other: Svih <strong>%{count}</strong> stavki koje se poklapaju sa Vašom pretragom su izabrane.
cancel: Otkaži cancel: Otkaži
changes_saved_msg: Izmene uspešno sačuvane! changes_saved_msg: Promene su uspešno sačuvane!
confirm: Potvrdi confirm: Potvrdi
copy: Kopiraj copy: Kopiraj
delete: Izbriši delete: Izbriši
@ -1770,6 +1770,7 @@ sr-Latn:
default: "%d %b %Y, %H:%M" default: "%d %b %Y, %H:%M"
month: "%b %Y" month: "%b %Y"
time: "%H:%M" time: "%H:%M"
with_time_zone: "%d. %b %Y, %H:%M %Z"
translation: translation:
errors: errors:
quota_exceeded: Prekoračena je kvota korišćenja usluge prevođenja na celom serveru. 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 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." 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. 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 verified_links: Vaše verifikovane veze
webauthn_credentials: webauthn_credentials:
add: Dodajte novi sigurnosni ključ add: Dodajte novi sigurnosni ključ

View File

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

View File

@ -1513,7 +1513,7 @@ vi:
activity: Tương tác 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_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_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 dormant: Chưa
follow_failure: Không thể theo dõi một số tài khoản đã chọn. 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 follow_selected_followers: Theo dõi những người đã chọn

View File

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

View File

@ -5,7 +5,7 @@ require_relative 'base'
module Mastodon::CLI module Mastodon::CLI
class Maintenance < Base class Maintenance < Base
MIN_SUPPORTED_VERSION = 2019_10_01_213028 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 # Stubs to enjoy ActiveRecord queries while not depending on a particular
# version of the code/database # version of the code/database
@ -37,6 +37,8 @@ module Mastodon::CLI
class CanonicalEmailBlock < ApplicationRecord; end class CanonicalEmailBlock < ApplicationRecord; end
class Appeal < ApplicationRecord; end class Appeal < ApplicationRecord; end
class Webhook < ApplicationRecord; end class Webhook < ApplicationRecord; end
class BulkImport < ApplicationRecord; end
class SoftwareUpdate < ApplicationRecord; end
class PreviewCard < ApplicationRecord class PreviewCard < ApplicationRecord
self.inheritance_column = false 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 << FollowRecommendationSuppression if ActiveRecord::Base.connection.table_exists?(:follow_recommendation_suppressions)
owned_classes << AccountIdentityProof if ActiveRecord::Base.connection.table_exists?(:account_identity_proofs) owned_classes << AccountIdentityProof if ActiveRecord::Base.connection.table_exists?(:account_identity_proofs)
owned_classes << Appeal if ActiveRecord::Base.connection.table_exists?(:appeals) 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| owned_classes.each do |klass|
klass.where(account_id: other_account.id).find_each do |record| klass.where(account_id: other_account.id).find_each do |record|
@ -169,6 +172,7 @@ module Mastodon::CLI
deduplicate_tags! deduplicate_tags!
deduplicate_webauthn_credentials! deduplicate_webauthn_credentials!
deduplicate_webhooks! deduplicate_webhooks!
deduplicate_software_updates!
Scenic.database.refresh_materialized_view('instances', concurrently: true, cascade: false) if ActiveRecord::Migrator.current_version >= 2020_12_06_004238 Scenic.database.refresh_materialized_view('instances', concurrently: true, cascade: false) if ActiveRecord::Migrator.current_version >= 2020_12_06_004238
Rails.cache.clear Rails.cache.clear
@ -204,6 +208,7 @@ module Mastodon::CLI
ActiveRecord::Base.connection.execute('REINDEX INDEX search_index;') 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_uri;')
ActiveRecord::Base.connection.execute('REINDEX INDEX index_accounts_on_url;') 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 end
def deduplicate_users! def deduplicate_users!
@ -241,6 +246,8 @@ module Mastodon::CLI
else 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 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 end
ActiveRecord::Base.connection.execute('REINDEX INDEX index_users_on_unconfirmed_email;') if ActiveRecord::Migrator.current_version >= 2023_07_02_151753
end end
def deduplicate_users_process_confirmation_token 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 ActiveRecord::Base.connection.add_index :webhooks, ['url'], name: 'index_webhooks_on_url', unique: true
end 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) def deduplicate_local_accounts!(accounts)
accounts = accounts.sort_by(&:id).reverse accounts = accounts.sort_by(&:id).reverse

View File

@ -43,7 +43,8 @@ module Paperclip
unless eligible_to_passthrough?(metadata) unless eligible_to_passthrough?(metadata)
size_limit_in_bits = MediaAttachment::VIDEO_LIMIT * 8 size_limit_in_bits = MediaAttachment::VIDEO_LIMIT * 8
desired_bitrate = (metadata.width * metadata.height * 30 * BITS_PER_PIXEL).floor 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 bitrate = [desired_bitrate, maximum_bitrate].min
@output_options['b:v'] = bitrate @output_options['b:v'] = bitrate

165
yarn.lock
View File

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