@@ -246,7 +293,33 @@ class FocalPointModal extends ImmutablePureComponent {
diff --git a/app/javascript/mastodon/features/ui/components/media_modal.js b/app/javascript/mastodon/features/ui/components/media_modal.js
index a785551c0..d7f97f210 100644
--- a/app/javascript/mastodon/features/ui/components/media_modal.js
+++ b/app/javascript/mastodon/features/ui/components/media_modal.js
@@ -211,7 +211,6 @@ class MediaModal extends ImmutablePureComponent {
style={swipeableViewsStyle}
containerStyle={containerStyle}
onChangeIndex={this.handleSwipe}
- onSwitching={this.handleSwitching}
index={index}
>
{content}
diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js
index 46d222fc7..1a67eeb83 100644
--- a/app/javascript/mastodon/features/ui/components/navigation_panel.js
+++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js
@@ -18,6 +18,7 @@ const NavigationPanel = () => (
}
diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js.orig b/app/javascript/mastodon/features/ui/components/navigation_panel.js.orig
new file mode 100644
index 000000000..7ffc1836e
--- /dev/null
+++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js.orig
@@ -0,0 +1,41 @@
+import React from 'react';
+import { NavLink, withRouter } from 'react-router-dom';
+import { FormattedMessage } from 'react-intl';
+import Icon from 'mastodon/components/icon';
+import { profile_directory, showTrends, treeRoot } from 'mastodon/initial_state';
+import NotificationsCounterIcon from './notifications_counter_icon';
+import FollowRequestsNavLink from './follow_requests_nav_link';
+import ListPanel from './list_panel';
+import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container';
+
+const NavigationPanel = () => (
+
+);
+
+export default withRouter(NavigationPanel);
diff --git a/app/javascript/mastodon/features/ui/components/video_modal.js b/app/javascript/mastodon/features/ui/components/video_modal.js
index f37fc796f..e28bd5b49 100644
--- a/app/javascript/mastodon/features/ui/components/video_modal.js
+++ b/app/javascript/mastodon/features/ui/components/video_modal.js
@@ -14,7 +14,11 @@ export default class VideoModal extends ImmutablePureComponent {
static propTypes = {
media: ImmutablePropTypes.map.isRequired,
status: ImmutablePropTypes.map,
- time: PropTypes.number,
+ options: PropTypes.shape({
+ startTime: PropTypes.number,
+ autoPlay: PropTypes.bool,
+ defaultVolume: PropTypes.number,
+ }),
onClose: PropTypes.func.isRequired,
};
@@ -52,7 +56,8 @@ export default class VideoModal extends ImmutablePureComponent {
}
render () {
- const { media, status, time, onClose } = this.props;
+ const { media, status, onClose } = this.props;
+ const options = this.props.options || {};
return (
@@ -61,7 +66,9 @@ export default class VideoModal extends ImmutablePureComponent {
preview={media.get('preview_url')}
blurhash={media.get('blurhash')}
src={media.get('url')}
- startTime={time}
+ startTime={options.startTime}
+ autoPlay={options.autoPlay}
+ defaultVolume={options.defaultVolume}
onCloseVideo={onClose}
detailed
alt={media.get('description')}
diff --git a/app/javascript/mastodon/features/ui/containers/status_list_container.js b/app/javascript/mastodon/features/ui/containers/status_list_container.js
index 7b8eb652b..4ce4ac6c8 100644
--- a/app/javascript/mastodon/features/ui/containers/status_list_container.js
+++ b/app/javascript/mastodon/features/ui/containers/status_list_container.js
@@ -6,9 +6,9 @@ import { createSelector } from 'reselect';
import { debounce } from 'lodash';
import { me } from '../../../initial_state';
-const makeGetStatusIds = () => createSelector([
+const makeGetStatusIds = (pending = false) => createSelector([
(state, { type }) => state.getIn(['settings', type], ImmutableMap()),
- (state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),
+ (state, { type }) => state.getIn(['timelines', type, pending ? 'pendingItems' : 'items'], ImmutableList()),
(state) => state.get('statuses'),
], (columnSettings, statusIds, statuses) => {
return statusIds.filter(id => {
@@ -17,6 +17,8 @@ const makeGetStatusIds = () => createSelector([
const statusForId = statuses.get(id);
let showStatus = true;
+ if (statusForId.get('account') === me) return true;
+
if (columnSettings.getIn(['shows', 'reblog']) === false) {
showStatus = showStatus && statusForId.get('reblog') === null;
}
@@ -31,13 +33,14 @@ const makeGetStatusIds = () => createSelector([
const makeMapStateToProps = () => {
const getStatusIds = makeGetStatusIds();
+ const getPendingStatusIds = makeGetStatusIds(true);
const mapStateToProps = (state, { timelineId }) => ({
statusIds: getStatusIds(state, { type: timelineId }),
isLoading: state.getIn(['timelines', timelineId, 'isLoading'], true),
isPartial: state.getIn(['timelines', timelineId, 'isPartial'], false),
hasMore: state.getIn(['timelines', timelineId, 'hasMore']),
- numPending: state.getIn(['timelines', timelineId, 'pendingItems'], ImmutableList()).size,
+ numPending: getPendingStatusIds(state, { type: timelineId }).size,
});
return mapStateToProps;
diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js
index 791ff9a2e..553cb3365 100644
--- a/app/javascript/mastodon/features/ui/index.js
+++ b/app/javascript/mastodon/features/ui/index.js
@@ -10,13 +10,13 @@ import LoadingBarContainer from './containers/loading_bar_container';
import ModalContainer from './containers/modal_container';
import { isMobile } from '../../is_mobile';
import { debounce } from 'lodash';
-import { uploadCompose, resetCompose } from '../../actions/compose';
+import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose';
import { expandHomeTimeline } from '../../actions/timelines';
import { expandNotifications } from '../../actions/notifications';
import { fetchFilters } from '../../actions/filters';
import { clearHeight } from '../../actions/height_cache';
import { focusApp, unfocusApp } from 'mastodon/actions/app';
-import { submitMarkers } from 'mastodon/actions/markers';
+import { synchronouslySubmitMarkers } from 'mastodon/actions/markers';
import { WrappedSwitch, WrappedRoute } from './util/react_router_helpers';
import UploadArea from './components/upload_area';
import ColumnsAreaContainer from './containers/columns_area_container';
@@ -41,6 +41,7 @@ import {
FollowRequests,
GenericNotFound,
FavouritedStatuses,
+ BookmarkedStatuses,
ListTimeline,
Blocks,
DomainBlocks,
@@ -75,6 +76,7 @@ const keyMap = {
new: 'n',
search: 's',
forceNew: 'option+n',
+ toggleComposeSpoilers: 'option+x',
focusColumn: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
reply: 'r',
favourite: 'f',
@@ -99,6 +101,7 @@ const keyMap = {
goToRequests: 'g r',
toggleHidden: 'x',
toggleSensitive: 'h',
+ openMedia: 'e',
};
class SwitchingColumnsArea extends React.PureComponent {
@@ -164,7 +167,9 @@ class SwitchingColumnsArea extends React.PureComponent {
}
setRef = c => {
- this.node = c.getWrappedInstance();
+ if (c) {
+ this.node = c.getWrappedInstance();
+ }
}
render () {
@@ -188,6 +193,7 @@ class SwitchingColumnsArea extends React.PureComponent {
+
@@ -246,9 +252,10 @@ class UI extends React.PureComponent {
handleBeforeUnload = e => {
const { intl, dispatch, isComposing, hasComposingText, hasMediaAttachments } = this.props;
- dispatch(submitMarkers());
+ dispatch(synchronouslySubmitMarkers());
if (isComposing && (hasComposingText || hasMediaAttachments)) {
+ e.preventDefault();
// Setting returnValue to any string causes confirmation dialog.
// Many browsers no longer display this text to users,
// but we set user-friendly message for other browsers, e.g. Edge.
@@ -369,7 +376,7 @@ class UI extends React.PureComponent {
componentDidMount () {
this.hotkeys.__mousetrap__.stopCallback = (e, element) => {
- return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName);
+ return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName) && !e.altKey;
};
}
@@ -414,6 +421,11 @@ class UI extends React.PureComponent {
this.props.dispatch(resetCompose());
}
+ handleHotkeyToggleComposeSpoilers = e => {
+ e.preventDefault();
+ this.props.dispatch(changeComposeSpoilerness());
+ }
+
handleHotkeyFocusColumn = e => {
const index = (e.key * 1) + 1; // First child is drawer, skip that
const column = this.node.querySelector(`.column:nth-child(${index})`);
@@ -509,6 +521,7 @@ class UI extends React.PureComponent {
new: this.handleHotkeyNew,
search: this.handleHotkeySearch,
forceNew: this.handleHotkeyForceNew,
+ toggleComposeSpoilers: this.handleHotkeyToggleComposeSpoilers,
focusColumn: this.handleHotkeyFocusColumn,
back: this.handleHotkeyBack,
goToHome: this.handleHotkeyGoToHome,
diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js
index bb0fcb859..986efda1e 100644
--- a/app/javascript/mastodon/features/ui/util/async-components.js
+++ b/app/javascript/mastodon/features/ui/util/async-components.js
@@ -90,6 +90,10 @@ export function FavouritedStatuses () {
return import(/* webpackChunkName: "features/favourited_statuses" */'../../favourited_statuses');
}
+export function BookmarkedStatuses () {
+ return import(/* webpackChunkName: "features/bookmarked_statuses" */'../../bookmarked_statuses');
+}
+
export function Blocks () {
return import(/* webpackChunkName: "features/blocks" */'../../blocks');
}
diff --git a/app/javascript/mastodon/features/video/index.js b/app/javascript/mastodon/features/video/index.js
index 5fe4e956f..135200a3d 100644
--- a/app/javascript/mastodon/features/video/index.js
+++ b/app/javascript/mastodon/features/video/index.js
@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import { fromJS, is } from 'immutable';
-import { throttle } from 'lodash';
+import { throttle, debounce } from 'lodash';
import classNames from 'classnames';
import { isFullscreen, requestFullscreen, exitFullscreen } from '../ui/util/fullscreen';
import { displayMedia, useBlurhash } from '../../initial_state';
@@ -86,6 +86,14 @@ export const getPointerPosition = (el, event) => {
return position;
};
+export const fileNameFromURL = str => {
+ const url = new URL(str);
+ const pathname = url.pathname;
+ const index = pathname.lastIndexOf('/');
+
+ return pathname.substring(index + 1);
+};
+
export default @injectIntl
class Video extends React.PureComponent {
@@ -108,6 +116,8 @@ class Video extends React.PureComponent {
intl: PropTypes.object.isRequired,
blurhash: PropTypes.string,
link: PropTypes.node,
+ autoPlay: PropTypes.bool,
+ defaultVolume: PropTypes.number,
};
state = {
@@ -123,26 +133,26 @@ class Video extends React.PureComponent {
revealed: this.props.visible !== undefined ? this.props.visible : (displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all'),
};
- // hard coded in components.scss
- // any way to get ::before values programatically?
- volWidth = 50;
- volOffset = 70;
- volHandleOffset = v => {
- const offset = v * this.volWidth + this.volOffset;
- return (offset > 110) ? 110 : offset;
- }
-
setPlayerRef = c => {
this.player = c;
- if (c) {
- if (this.props.cacheWidth) this.props.cacheWidth(this.player.offsetWidth);
- this.setState({
- containerWidth: c.offsetWidth,
- });
+ if (this.player) {
+ this._setDimensions();
}
}
+ _setDimensions () {
+ const width = this.player.offsetWidth;
+
+ if (this.props.cacheWidth) {
+ this.props.cacheWidth(width);
+ }
+
+ this.setState({
+ containerWidth: width,
+ });
+ }
+
setVideoRef = c => {
this.video = c;
@@ -167,15 +177,26 @@ class Video extends React.PureComponent {
handlePlay = () => {
this.setState({ paused: false });
+ this._updateTime();
}
handlePause = () => {
this.setState({ paused: true });
}
+ _updateTime () {
+ requestAnimationFrame(() => {
+ this.handleTimeUpdate();
+
+ if (!this.state.paused) {
+ this._updateTime();
+ }
+ });
+ }
+
handleTimeUpdate = () => {
this.setState({
- currentTime: Math.floor(this.video.currentTime),
+ currentTime: this.video.currentTime,
duration: Math.floor(this.video.duration),
});
}
@@ -200,20 +221,14 @@ class Video extends React.PureComponent {
}
handleMouseVolSlide = throttle(e => {
- const rect = this.volume.getBoundingClientRect();
- const x = (e.clientX - rect.left) / this.volWidth; //x position within the element.
+ const { x } = getPointerPosition(this.volume, e);
if(!isNaN(x)) {
- var slideamt = x;
- if(x > 1) {
- slideamt = 1;
- } else if(x < 0) {
- slideamt = 0;
- }
- this.video.volume = slideamt;
- this.setState({ volume: slideamt });
+ this.setState({ volume: x }, () => {
+ this.video.volume = x;
+ });
}
- }, 60);
+ }, 15);
handleMouseDown = e => {
document.addEventListener('mousemove', this.handleMouseMove, true);
@@ -241,19 +256,20 @@ class Video extends React.PureComponent {
handleMouseMove = throttle(e => {
const { x } = getPointerPosition(this.seek, e);
- const currentTime = Math.floor(this.video.duration * x);
+ const currentTime = this.video.duration * x;
if (!isNaN(currentTime)) {
- this.video.currentTime = currentTime;
- this.setState({ currentTime });
+ this.setState({ currentTime }, () => {
+ this.video.currentTime = currentTime;
+ });
}
- }, 60);
+ }, 15);
togglePlay = () => {
if (this.state.paused) {
- this.video.play();
+ this.setState({ paused: false }, () => this.video.play());
} else {
- this.video.pause();
+ this.setState({ paused: true }, () => this.video.pause());
}
}
@@ -271,12 +287,18 @@ class Video extends React.PureComponent {
document.addEventListener('mozfullscreenchange', this.handleFullscreenChange, true);
document.addEventListener('MSFullscreenChange', this.handleFullscreenChange, true);
+ window.addEventListener('scroll', this.handleScroll);
+ window.addEventListener('resize', this.handleResize, { passive: true });
+
if (this.props.blurhash) {
this._decode();
}
}
componentWillUnmount () {
+ window.removeEventListener('scroll', this.handleScroll);
+ window.removeEventListener('resize', this.handleResize);
+
document.removeEventListener('fullscreenchange', this.handleFullscreenChange, true);
document.removeEventListener('webkitfullscreenchange', this.handleFullscreenChange, true);
document.removeEventListener('mozfullscreenchange', this.handleFullscreenChange, true);
@@ -293,6 +315,7 @@ class Video extends React.PureComponent {
if (prevState.revealed && !this.state.revealed && this.video) {
this.video.pause();
}
+
if (prevProps.blurhash !== this.props.blurhash && this.props.blurhash) {
this._decode();
}
@@ -312,6 +335,27 @@ class Video extends React.PureComponent {
}
}
+ handleResize = debounce(() => {
+ if (this.player) {
+ this._setDimensions();
+ }
+ }, 250, {
+ trailing: true,
+ });
+
+ handleScroll = throttle(() => {
+ if (!this.video) {
+ return;
+ }
+
+ const { top, height } = this.video.getBoundingClientRect();
+ const inView = (top <= (window.innerHeight || document.documentElement.clientHeight)) && (top + height >= 0);
+
+ if (!this.state.paused && !inView) {
+ this.setState({ paused: true }, () => this.video.pause());
+ }
+ }, 150, { trailing: true })
+
handleFullscreenChange = () => {
this.setState({ fullscreen: isFullscreen() });
}
@@ -325,8 +369,11 @@ class Video extends React.PureComponent {
}
toggleMute = () => {
- this.video.muted = !this.video.muted;
- this.setState({ muted: this.video.muted });
+ const muted = !this.video.muted;
+
+ this.setState({ muted }, () => {
+ this.video.muted = muted;
+ });
}
toggleReveal = () => {
@@ -340,13 +387,22 @@ class Video extends React.PureComponent {
handleLoadedData = () => {
if (this.props.startTime) {
this.video.currentTime = this.props.startTime;
+ }
+
+ if (this.props.defaultVolume !== undefined) {
+ this.video.volume = this.props.defaultVolume;
+ }
+
+ if (this.props.autoPlay) {
this.video.play();
}
}
handleProgress = () => {
- if (this.video.buffered.length > 0) {
- this.setState({ buffer: this.video.buffered.end(0) / this.video.duration * 100 });
+ const lastTimeRange = this.video.buffered.length - 1;
+
+ if (lastTimeRange > -1) {
+ this.setState({ buffer: Math.ceil(this.video.buffered.end(lastTimeRange) / this.video.duration * 100) });
}
}
@@ -366,8 +422,14 @@ class Video extends React.PureComponent {
height,
});
+ const options = {
+ startTime: this.video.currentTime,
+ autoPlay: !this.state.paused,
+ defaultVolume: this.state.volume,
+ };
+
this.video.pause();
- this.props.onOpenVideo(media, this.video.currentTime);
+ this.props.onOpenVideo(media, options);
}
handleCloseVideo = () => {
@@ -379,9 +441,6 @@ class Video extends React.PureComponent {
const { preview, src, inline, startTime, onOpenVideo, onCloseVideo, intl, alt, detailed, sensitive, link, editable } = this.props;
const { containerWidth, currentTime, duration, volume, buffer, dragging, paused, fullscreen, hovered, muted, revealed } = this.state;
const progress = (currentTime / duration) * 100;
-
- const volumeWidth = (muted) ? 0 : volume * this.volWidth;
- const volumeHandleLoc = (muted) ? this.volHandleOffset(0) : this.volHandleOffset(volume);
const playerStyle = {};
let { width, height } = this.props;
@@ -429,7 +488,6 @@ class Video extends React.PureComponent {
src={src}
poster={preview}
preload={preload}
- loop
role='button'
tabIndex='0'
aria-label={alt}
@@ -440,7 +498,6 @@ class Video extends React.PureComponent {
onClick={this.togglePlay}
onPlay={this.handlePlay}
onPause={this.handlePause}
- onTimeUpdate={this.handleTimeUpdate}
onLoadedData={this.handleLoadedData}
onProgress={this.handleProgress}
onVolumeChange={this.handleVolumeChange}
@@ -466,21 +523,22 @@ class Video extends React.PureComponent {
-
-
+
+
+
+
+
-
{(detailed || fullscreen) && (
-
- {formatTime(currentTime)}
+
+ {formatTime(Math.floor(currentTime))}
/
{formatTime(duration)}
@@ -490,10 +548,10 @@ class Video extends React.PureComponent {
- {(!onCloseVideo && !editable) && }
- {(!fullscreen && onOpenVideo) && }
- {onCloseVideo && }
-
+ {(!onCloseVideo && !editable && !fullscreen) && }
+ {(!fullscreen && onOpenVideo) && }
+ {onCloseVideo && }
+
diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js
index e11939c96..439cc1558 100644
--- a/app/javascript/mastodon/initial_state.js
+++ b/app/javascript/mastodon/initial_state.js
@@ -24,6 +24,7 @@ export const useBlurhash = getMeta('use_blurhash');
export const usePendingItems = getMeta('use_pending_items');
export const showTrends = getMeta('trends');
export const title = getMeta('title');
+export const cropImages = getMeta('crop_images');
export const treeRoot = getMeta('tree_root');
export const pinnedInfo = getMeta('pinned_info');
diff --git a/app/javascript/mastodon/load_keyboard_extensions.js b/app/javascript/mastodon/load_keyboard_extensions.js
new file mode 100644
index 000000000..2dd0e45fa
--- /dev/null
+++ b/app/javascript/mastodon/load_keyboard_extensions.js
@@ -0,0 +1,16 @@
+// On KaiOS, we may not be able to use a mouse cursor or navigate using Tab-based focus, so we install
+// special left/right focus navigation keyboard listeners, at least on public pages (i.e. so folks
+// can at least log in using KaiOS devices).
+
+function importArrowKeyNavigation() {
+ return import(/* webpackChunkName: "arrow-key-navigation" */ 'arrow-key-navigation');
+}
+
+export default function loadKeyboardExtensions() {
+ if (/KAIOS/.test(navigator.userAgent)) {
+ return importArrowKeyNavigation().then(arrowKeyNav => {
+ arrowKeyNav.register();
+ });
+ }
+ return Promise.resolve();
+}
diff --git a/app/javascript/mastodon/load_polyfills.js b/app/javascript/mastodon/load_polyfills.js
index 8cb81c1a6..73eedc9dc 100644
--- a/app/javascript/mastodon/load_polyfills.js
+++ b/app/javascript/mastodon/load_polyfills.js
@@ -18,7 +18,8 @@ function loadPolyfills() {
Number.isNaN &&
Object.assign &&
Object.values &&
- window.Symbol
+ window.Symbol &&
+ Promise.prototype.finally
);
// Latest version of Firefox and Safari do not have IntersectionObserver.
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 1b560b964..4decd3f74 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -1,18 +1,22 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "أضفه أو أزله من القائمة",
"account.badges.bot": "روبوت",
+ "account.badges.group": "فريق",
"account.block": "حظر @{name}",
- "account.block_domain": "إخفاء كل شيئ قادم من اسم النطاق {domain}",
+ "account.block_domain": "إخفاء كل شيء قادم من اسم النطاق {domain}",
"account.blocked": "محظور",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "إلغاء طلب المتابَعة",
"account.direct": "رسالة خاصة إلى @{name}",
"account.domain_blocked": "النطاق مخفي",
- "account.edit_profile": "تعديل الملف التعريفي",
+ "account.edit_profile": "تعديل الملف الشخصي",
"account.endorse": "أوصِ به على صفحتك",
"account.follow": "تابِع",
- "account.followers": "متابعون",
+ "account.followers": "مُتابِعون",
"account.followers.empty": "لا أحد يتبع هذا الحساب بعد.",
- "account.follows": "يتبع",
+ "account.follows": "يتابع",
"account.follows.empty": "هذا الحساب لا يتبع أحدًا بعد.",
"account.follows_you": "يتابعك",
"account.hide_reblogs": "إخفاء ترقيات @{name}",
@@ -27,7 +31,7 @@
"account.muted": "مكتوم",
"account.never_active": "أبدا",
"account.posts": "تبويقات",
- "account.posts_with_replies": "التبويقات و الردود",
+ "account.posts_with_replies": "التبويقات والردود",
"account.report": "ابلِغ عن @{name}",
"account.requested": "في انتظار الموافقة. اضْغَطْ/ي لإلغاء طلب المتابعة",
"account.share": "شارك ملف تعريف @{name}",
@@ -38,10 +42,15 @@
"account.unfollow": "إلغاء المتابعة",
"account.unmute": "إلغاء الكتم عن @{name}",
"account.unmute_notifications": "إلغاء كتم إخطارات @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "يرجى إعادة المحاولة بعد {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "alert.rate_limited.title": "المعدل محدود",
"alert.unexpected.message": "لقد طرأ هناك خطأ غير متوقّع.",
"alert.unexpected.title": "المعذرة!",
+ "announcement.announcement": "إعلان",
"autosuggest_hashtag.per_week": "{count} في الأسبوع",
"boost_modal.combo": "يمكنك/ي ضغط {combo} لتخطّي هذه في المرّة القادمة",
"bundle_column_error.body": "لقد وقع هناك خطأ أثناء عملية تحميل هذا العنصر.",
@@ -51,9 +60,10 @@
"bundle_modal_error.message": "لقد وقع هناك خطأ أثناء عملية تحميل هذا العنصر.",
"bundle_modal_error.retry": "إعادة المحاولة",
"column.blocks": "الحسابات المحجوبة",
+ "column.bookmarks": "الفواصل المرجعية",
"column.community": "الخيط العام المحلي",
"column.direct": "الرسائل المباشرة",
- "column.directory": "استعرض الملفات التعريفية",
+ "column.directory": "استعراض الملفات التعريفية",
"column.domain_blocks": "النطاقات المخفية",
"column.favourites": "المفضلة",
"column.follow_requests": "طلبات المتابعة",
@@ -71,7 +81,9 @@
"column_header.show_settings": "عرض الإعدادات",
"column_header.unpin": "فك التدبيس",
"column_subheading.settings": "الإعدادات",
+ "community.column_settings.local_only": "المحلي فقط",
"community.column_settings.media_only": "الوسائط فقط",
+ "community.column_settings.remote_only": "عن بُعد فقط",
"compose_form.direct_message_warning": "لن يَظهر هذا التبويق إلا للمستخدمين المذكورين.",
"compose_form.direct_message_warning_learn_more": "اقرأ المزيد",
"compose_form.hashtag_warning": "هذا التبويق لن يُدرَج تحت أي وسم كان بما أنه غير مُدرَج. لا يُسمح بالبحث إلّا عن التبويقات العمومية عن طريق الوسوم.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "مدة استطلاع الرأي",
"compose_form.poll.option_placeholder": "الخيار {number}",
"compose_form.poll.remove_option": "إزالة هذا الخيار",
+ "compose_form.poll.switch_to_multiple": "عدّل استطلاع الرأي وغيّره لإتاحة الخيارات المتعددة",
+ "compose_form.poll.switch_to_single": "عدّل استطلاع الرأي وغيّره لإتاحة خيار واحد فقط",
"compose_form.publish": "بوّق",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "تحديد الوسائط كحساسة",
@@ -103,10 +117,10 @@
"confirmations.logout.confirm": "خروج",
"confirmations.logout.message": "متأكد من أنك تريد الخروج؟",
"confirmations.mute.confirm": "أكتم",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "هذا سيخفي المنشورات عنهم وتلك المشار فيها إليهم، لكنه سيسمح لهم برؤية منشوراتك ومتابعتك.",
"confirmations.mute.message": "هل أنت متأكد أنك تريد كتم {name} ؟",
"confirmations.redraft.confirm": "إزالة و إعادة الصياغة",
- "confirmations.redraft.message": "هل أنت متأكد من أنك تريد حذف هذا المنشور و إعادة صياغته ؟ سوف تفقد جميع الإعجابات و الترقيات أما الردود المتصلة به فستُصبِح يتيمة.",
+ "confirmations.redraft.message": "هل أنت متأكد من أنك تريد حذف هذا المنشور و إعادة صياغته؟ سوف تفقد جميع الإعجابات و الترقيات أما الردود المتصلة به فستُصبِح يتيمة.",
"confirmations.reply.confirm": "رد",
"confirmations.reply.message": "الرد في الحين سوف يُعيد كتابة الرسالة التي أنت بصدد كتابتها. متأكد من أنك تريد المواصلة؟",
"confirmations.unfollow.confirm": "إلغاء المتابعة",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "ليس هناك تبويقات!",
"empty_column.account_unavailable": "الملف التعريفي غير متوفر",
"empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.",
+ "empty_column.bookmarked_statuses": "ليس لديك أية تبويقات في الفواصل المرجعية بعد. عندما ستقوم بإضافة البعض منها، ستظهر هنا.",
"empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!",
"empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.",
"empty_column.domain_blocks": "ليس هناك نطاقات مخفية بعد.",
@@ -152,12 +167,13 @@
"empty_column.mutes": "لم تقم بكتم أي مستخدم بعد.",
"empty_column.notifications": "لم تتلق أي إشعار بعدُ. تفاعل مع المستخدمين الآخرين لإنشاء محادثة.",
"empty_column.public": "لا يوجد أي شيء هنا! قم بنشر شيء ما للعامة، أو اتبع المستخدمين الآخرين المتواجدين على الخوادم الأخرى لملء خيط المحادثات",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "error.unexpected_crash.explanation": "نظرا لوجود خطأ في التعليمات البرمجية أو مشكلة توافق مع المتصفّح، تعذر عرض هذه الصفحة بشكل صحيح.",
+ "error.unexpected_crash.next_steps": "حاول إعادة إنعاش الصفحة. إن لم تُحلّ المشكلة ، يمكنك دائمًا استخدام ماستدون عبر متصفّح آخر أو تطبيق أصلي.",
+ "errors.unexpected_crash.copy_stacktrace": "انسخ تتبع الارتباطات إلى الحافظة",
"errors.unexpected_crash.report_issue": "الإبلاغ عن خلل",
"follow_request.authorize": "ترخيص",
"follow_request.reject": "رفض",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "المُطوِّرون",
"getting_started.directory": "دليل الصفحات التعريفية",
"getting_started.documentation": "الدليل",
@@ -176,8 +192,10 @@
"hashtag.column_settings.tag_mode.none": "لا شيء مِن هذه",
"hashtag.column_settings.tag_toggle": "إدراج الوسوم الإضافية لهذا العمود",
"home.column_settings.basic": "الأساسية",
- "home.column_settings.show_reblogs": "عرض الترقيات",
+ "home.column_settings.show_reblogs": "اعرض الترقيات",
"home.column_settings.show_replies": "اعرض الردود",
+ "home.hide_announcements": "إخفاء الإعلانات",
+ "home.show_announcements": "إظهار الإعلانات",
"intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}",
"intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}",
"intervals.full.minutes": "{number, plural, one {# دقيقة} other {# دقائق}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "لفتح قائمة المستخدِمين المكتومين",
"keyboard_shortcuts.my_profile": "لفتح ملفك التعريفي",
"keyboard_shortcuts.notifications": "لفتح عمود الإشعارات",
+ "keyboard_shortcuts.open_media": "لفتح الوسائط",
"keyboard_shortcuts.pinned": "لفتح قائمة التبويقات المدبسة",
"keyboard_shortcuts.profile": "لفتح الملف التعريفي للناشر",
"keyboard_shortcuts.reply": "للردّ",
"keyboard_shortcuts.requests": "لفتح قائمة طلبات المتابعة",
"keyboard_shortcuts.search": "للتركيز على البحث",
+ "keyboard_shortcuts.spoilers": "لإظهار/إخفاء حقلCW",
"keyboard_shortcuts.start": "لفتح عمود \"هيا نبدأ\"",
"keyboard_shortcuts.toggle_hidden": "لعرض أو إخفاء النص مِن وراء التحذير",
"keyboard_shortcuts.toggle_sensitivity": "لعرض/إخفاء الوسائط",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟",
"navigation_bar.apps": "تطبيقات الأجهزة المحمولة",
"navigation_bar.blocks": "الحسابات المحجوبة",
+ "navigation_bar.bookmarks": "الفواصل المرجعية",
"navigation_bar.community_timeline": "الخيط العام المحلي",
"navigation_bar.compose": "تحرير تبويق جديد",
"navigation_bar.direct": "الرسائل المباشِرة",
@@ -273,7 +294,9 @@
"navigation_bar.security": "الأمان",
"notification.favourite": "أُعجِب {name} بمنشورك",
"notification.follow": "{name} يتابعك",
+ "notification.follow_request": "لقد طلب {name} متابعتك",
"notification.mention": "{name} ذكرك",
+ "notification.own_poll": "انتهى استطلاعك للرأي",
"notification.poll": "لقد إنتها تصويت شاركت فيه",
"notification.reblog": "{name} قام بترقية تبويقك",
"notifications.clear": "امسح الإخطارات",
@@ -282,8 +305,9 @@
"notifications.column_settings.favourite": "المُفَضَّلة:",
"notifications.column_settings.filter_bar.advanced": "اعرض كافة الفئات",
"notifications.column_settings.filter_bar.category": "شريط الفلترة السريعة",
- "notifications.column_settings.filter_bar.show": "اعرض",
+ "notifications.column_settings.filter_bar.show": "اظهِره",
"notifications.column_settings.follow": "متابعُون جُدُد:",
+ "notifications.column_settings.follow_request": "الطلبات الجديد لِمتابَعتك:",
"notifications.column_settings.mention": "الإشارات:",
"notifications.column_settings.poll": "نتائج استطلاع الرأي:",
"notifications.column_settings.push": "الإخطارات المدفوعة",
@@ -299,7 +323,7 @@
"notifications.group": "{count} إشعارات",
"poll.closed": "انتهى",
"poll.refresh": "تحديث",
- "poll.total_people": "{count, plural, one {# شخص} other {# أشخاص}}",
+ "poll.total_people": "{count, plural, one {# شخص} two {# شخصين} few {# أشخاص} many {# أشخاص} other {# أشخاص}}",
"poll.total_votes": "{count, plural, one {# صوت} other {# أصوات}}",
"poll.vote": "صَوّت",
"poll.voted": "لقد صوّتت على هذه الإجابة",
@@ -322,6 +346,7 @@
"relative_time.just_now": "الآن",
"relative_time.minutes": "{number}د",
"relative_time.seconds": "{number}ثا",
+ "relative_time.today": "اليوم",
"reply_indicator.cancel": "إلغاء",
"report.forward": "التحويل إلى {target}",
"report.forward_hint": "هذا الحساب ينتمي إلى خادوم آخَر. هل تودّ إرسال نسخة مجهولة مِن التقرير إلى هنالك أيضًا؟",
@@ -340,10 +365,11 @@
"search_results.hashtags": "الوُسوم",
"search_results.statuses": "التبويقات",
"search_results.statuses_fts_disabled": "البحث في التبويقات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.",
- "search_results.total": "{count, number} {count, plural, one {result} و {results}}",
+ "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}",
"status.admin_account": "افتح الواجهة الإدارية لـ @{name}",
"status.admin_status": "افتح هذا المنشور على واجهة الإشراف",
"status.block": "احجب @{name}",
+ "status.bookmark": "أضفه إلى الفواصل المرجعية",
"status.cancel_reblog_private": "إلغاء الترقية",
"status.cannot_reblog": "تعذرت ترقية هذا المنشور",
"status.copy": "نسخ رابط المنشور",
@@ -368,6 +394,7 @@
"status.reblogged_by": "رقّاه {name}",
"status.reblogs.empty": "لم يقم أي أحد بترقية هذا التبويق بعد. عندما يقوم أحدهم بذلك سوف تظهر هنا.",
"status.redraft": "إزالة و إعادة الصياغة",
+ "status.remove_bookmark": "احذفه مِن الفواصل المرجعية",
"status.reply": "ردّ",
"status.replyAll": "رُد على الخيط",
"status.report": "ابلِغ عن @{name}",
@@ -393,25 +420,32 @@
"time_remaining.minutes": "{number, plural, one {# دقيقة} other {# دقائق}} متبقية",
"time_remaining.moments": "لحظات متبقية",
"time_remaining.seconds": "{number, plural, one {# ثانية} other {# ثوانٍ}} متبقية",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} آخرون {people}} يتحدثون",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "المتابِعون",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "التبويقات القديمة",
+ "trends.count_by_accounts": "{count} {rawCount, plural, zero {} one {شخص واحد} two {شخصين} few {أشخاص} many {أشخاص} other {أشخاص}} تتحدّث",
"trends.trending_now": "المتداولة الآن",
"ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
"upload_area.title": "اسحب ثم أفلت للرفع",
"upload_button.label": "إضافة وسائط ({formats})",
"upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.",
"upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.",
+ "upload_form.audio_description": "وصف للأشخاص ذي قِصر السمع",
"upload_form.description": "وصف للمعاقين بصريا",
"upload_form.edit": "تعديل",
"upload_form.undo": "حذف",
+ "upload_form.video_description": "وصف للمعاقين بصريا أو لِذي قِصر السمع",
"upload_modal.analyzing_picture": "جارٍ فحص الصورة…",
"upload_modal.apply": "طبّق",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+ "upload_modal.description_placeholder": "نصٌّ حكيمٌ لهُ سِرٌّ قاطِعٌ وَذُو شَأنٍ عَظيمٍ مكتوبٌ على ثوبٍ أخضرَ ومُغلفٌ بجلدٍ أزرق",
"upload_modal.detect_text": "اكتشف النص مِن الصورة",
"upload_modal.edit_media": "تعديل الوسائط",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.hint": "اضغط أو اسحب الدائرة على خانة المعاينة لاختيار نقطة التركيز التي ستُعرَض دائمًا على كل المصغرات.",
"upload_modal.preview_label": "معاينة ({ratio})",
"upload_progress.label": "يرفع...",
"video.close": "إغلاق الفيديو",
+ "video.download": "تنزيل الملف",
"video.exit_fullscreen": "الخروج من وضع الشاشة المليئة",
"video.expand": "توسيع الفيديو",
"video.fullscreen": "ملء الشاشة",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index 5145a6579..80d1d4aac 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -1,56 +1,66 @@
{
- "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Amestar o desaniciar de les llistes",
"account.badges.bot": "Robó",
+ "account.badges.group": "Grupu",
"account.block": "Bloquiar a @{name}",
"account.block_domain": "Anubrir tolo de {domain}",
- "account.blocked": "Blocked",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.blocked": "Bloquiada",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Encaboxar la solicitú de siguimientu",
"account.direct": "Unviar un mensaxe direutu a @{name}",
"account.domain_blocked": "Dominiu anubríu",
"account.edit_profile": "Editar el perfil",
"account.endorse": "Destacar nel perfil",
- "account.follow": "Follow",
+ "account.follow": "Siguir",
"account.followers": "Siguidores",
"account.followers.empty": "Naide sigue a esti usuariu entá.",
- "account.follows": "Sigue a",
+ "account.follows": "Sigue",
"account.follows.empty": "Esti usuariu entá nun sigue a naide.",
"account.follows_you": "Síguete",
- "account.hide_reblogs": "Hide boosts from @{name}",
- "account.last_status": "Last active",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.hide_reblogs": "Anubrir les comparticiones de @{name}",
+ "account.last_status": "Cabera actividá",
+ "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"account.media": "Media",
"account.mention": "Mentar a @{name}",
- "account.moved_to": "{name} has moved to:",
+ "account.moved_to": "{name} mudóse a:",
"account.mute": "Silenciar a @{name}",
"account.mute_notifications": "Mute notifications from @{name}",
"account.muted": "Muted",
- "account.never_active": "Never",
- "account.posts": "Toots",
- "account.posts_with_replies": "Toots y rempuestes",
+ "account.never_active": "Enxamás",
+ "account.posts": "Barritos",
+ "account.posts_with_replies": "Barritos y rempuestes",
"account.report": "Report @{name}",
- "account.requested": "Awaiting approval",
+ "account.requested": "Esperando pola aprobación. Calca pa encaboxar la solicitú de siguimientu",
"account.share": "Share @{name}'s profile",
- "account.show_reblogs": "Show boosts from @{name}",
+ "account.show_reblogs": "Amosar les comparticiones de @{name}",
"account.unblock": "Desbloquiar a @{name}",
"account.unblock_domain": "Amosar {domain}",
- "account.unendorse": "Don't feature on profile",
- "account.unfollow": "Unfollow",
+ "account.unendorse": "Nun destacar nel perfil",
+ "account.unfollow": "Dexar de siguir",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "Asocedió un fallu inesperáu.",
- "alert.unexpected.title": "¡Ups!",
- "autosuggest_hashtag.per_week": "{count} per week",
+ "alert.unexpected.title": "¡Meca!",
+ "announcement.announcement": "Anunciu",
+ "autosuggest_hashtag.per_week": "{count} per selmana",
"boost_modal.combo": "Pues primir {combo} pa saltar esto la próxima vegada",
- "bundle_column_error.body": "Something went wrong while loading this component.",
+ "bundle_column_error.body": "Asocedió daqué malo mentanto se cargaba esti componente.",
"bundle_column_error.retry": "Try again",
"bundle_column_error.title": "Network error",
"bundle_modal_error.close": "Close",
- "bundle_modal_error.message": "Something went wrong while loading this component.",
+ "bundle_modal_error.message": "Asocedió daqué malo mentanto se cargaba esti componente.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Usuarios bloquiaos",
+ "column.bookmarks": "Marcadores",
"column.community": "Llinia temporal llocal",
"column.direct": "Mensaxes direutos",
"column.directory": "Browse profiles",
@@ -61,153 +71,161 @@
"column.lists": "Llistes",
"column.mutes": "Usuarios silenciaos",
"column.notifications": "Avisos",
- "column.pins": "Toots fixaos",
+ "column.pins": "Barritos fixaos",
"column.public": "Llinia temporal federada",
"column_back_button.label": "Atrás",
"column_header.hide_settings": "Hide settings",
"column_header.moveLeft_settings": "Mover la columna a la esquierda",
"column_header.moveRight_settings": "Mover la columna a la drecha",
"column_header.pin": "Fixar",
- "column_header.show_settings": "Show settings",
+ "column_header.show_settings": "Amosar axustes",
"column_header.unpin": "Desfixar",
"column_subheading.settings": "Axustes",
- "community.column_settings.media_only": "Media only",
- "compose_form.direct_message_warning": "Esti toot namái va unviase a los usuarios mentaos.",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "Namái multimedia",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "Esti barritu namái va unviase a los usuarios mentaos.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "¿En qué pienses?",
- "compose_form.poll.add_option": "Add a choice",
+ "compose_form.poll.add_option": "Amestar una escoyeta",
"compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
- "compose_form.publish": "Toot",
+ "compose_form.poll.option_placeholder": "Escoyeta {number}",
+ "compose_form.poll.remove_option": "Desaniciar esta escoyeta",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "Barritar",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "El testu nun va anubrise darrera d'una alvertencia",
- "compose_form.spoiler.unmarked": "El testu va anubrise",
- "compose_form.spoiler_placeholder": "Escribi equí l'avertencia",
+ "compose_form.spoiler.unmarked": "El testu nun va anubrise",
+ "compose_form.spoiler_placeholder": "Escribi equí l'alvertencia",
"confirmation_modal.cancel": "Encaboxar",
- "confirmations.block.block_and_report": "Block & Report",
- "confirmations.block.confirm": "Block",
+ "confirmations.block.block_and_report": "Bloquiar ya informar",
+ "confirmations.block.confirm": "Bloquiar",
"confirmations.block.message": "¿De xuru que quies bloquiar a {name}?",
- "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.confirm": "Desaniciar",
"confirmations.delete.message": "¿De xuru que quies desaniciar esti estáu?",
"confirmations.delete_list.confirm": "Desaniciar",
"confirmations.delete_list.message": "¿De xuru que quies desaniciar dafechu esta llista?",
"confirmations.domain_block.confirm": "Anubrir tol dominiu",
- "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
- "confirmations.mute.confirm": "Mute",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.domain_block.message": "¿De xuru xurísimu que quies bloquiar el dominiu {domain} enteru? Na mayoría de casos bloquiar o silenciar dalguna cuenta ye abondo y preferible. Nun vas ver el conteníu d'esi dominiu en nenguna llinia temporal pública o nos avisos, y van desanciase los tos siguidores d'esi dominiu.",
+ "confirmations.logout.confirm": "Zarrar sesión",
+ "confirmations.logout.message": "¿De xuru que quies zarrar la sesión?",
+ "confirmations.mute.confirm": "Silenciar",
+ "confirmations.mute.explanation": "Esto va anubrir los espublizamientos y les sos menciones pero entá va permiti-yos ver los tos espublizamientos y siguite.",
"confirmations.mute.message": "¿De xuru que quies silenciar a {name}?",
"confirmations.redraft.confirm": "Desaniciar y reeditar",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
- "confirmations.unfollow.confirm": "Unfollow",
+ "confirmations.redraft.message": "¿De xuru que quies desaniciar esti estáu y reeditalu? Van perdese los favoritos y comparticiones, y les rempuestes al toot orixinal van quedar güérfanes.",
+ "confirmations.reply.confirm": "Responder",
+ "confirmations.reply.message": "Responder agora va sobrescribir el mensaxe que tas componiendo anguaño. ¿De xuru que quies siguir?",
+ "confirmations.unfollow.confirm": "Dexar de siguir",
"confirmations.unfollow.message": "¿De xuru que quies dexar de siguir a {name}?",
"conversation.delete": "Delete conversation",
"conversation.mark_as_read": "Mark as read",
"conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
+ "conversation.with": "Con {names}",
+ "directory.federated": "Dende'l fediversu",
+ "directory.local": "Dende {domain} namái",
+ "directory.new_arrivals": "Cuentes nueves",
+ "directory.recently_active": "Actividá recién",
"embed.instructions": "Empotra esti estáu nun sitiu web copiando'l códigu d'embaxo.",
- "embed.preview": "Asina ye como va vese:",
+ "embed.preview": "Asina ye cómo va vese:",
"emoji_button.activity": "Actividaes",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Banderes",
"emoji_button.food": "Comida y bébora",
- "emoji_button.label": "Insert emoji",
+ "emoji_button.label": "Inxertar un fustaxe",
"emoji_button.nature": "Natura",
"emoji_button.not_found": "¡Nun hai fustaxes! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Oxetos",
"emoji_button.people": "Xente",
"emoji_button.recent": "Úsase davezu",
- "emoji_button.search": "Guetar...",
+ "emoji_button.search": "Guetar…",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viaxes y llugares",
- "empty_column.account_timeline": "No toots here!",
+ "empty_column.account_timeline": "¡Equí nun hai barritos!",
"empty_column.account_unavailable": "Profile unavailable",
- "empty_column.blocks": "Entá nun bloquiesti a dengún usuariu.",
+ "empty_column.blocks": "Entá nun bloquiesti a nunengún usuariu.",
+ "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
- "empty_column.direct": "Entá nun tienes dengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.",
+ "empty_column.direct": "Entá nun tienes nunengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.",
"empty_column.domain_blocks": "Entá nun hai dominios anubríos.",
- "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.",
"empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
- "empty_column.follow_requests": "Entá nun tienes denguna solicitú de siguimientu. Cuando recibas una, va amosase equí.",
- "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas una, va amosase equí.",
+ "empty_column.hashtag": "Entá nun hai nada nesta etiqueta.",
"empty_column.home": "¡Tienes la llinia temporal balera! Visita {public} o usa la gueta pa entamar y conocer a otros usuarios.",
"empty_column.home.public_timeline": "la llinia temporal pública",
"empty_column.list": "Entá nun hai nada nesta llista. Cuando los miembros d'esta llista espublicen estaos nuevos, van apaecer equí.",
- "empty_column.lists": "Entá nun tienes denguna llista. Cuando crees una, va amosase equí.",
- "empty_column.mutes": "Entá nun silenciesti a dengún usuariu.",
- "empty_column.notifications": "Entá nun tienes dengún avisu. Interactua con otros p'aniciar la conversación.",
- "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "empty_column.lists": "Entá nun tienes nenguna llista. Cuando crees una, va amosase equí.",
+ "empty_column.mutes": "Entá nun silenciesti a nunengún usuariu.",
+ "empty_column.notifications": "Entá nun tienes nunengún avisu. Interactúa con otros p'aniciar la conversación.",
+ "empty_column.public": "¡Equí nun hai nada! Escribi daqué público o sigui a usuarios d'otros sirvidores pa rellenar esto",
+ "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun pudo amosase correutamente.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Autorizar",
"follow_request.reject": "Refugar",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Desendolcadores",
- "getting_started.directory": "Profile directory",
+ "getting_started.directory": "Direutoriu de perfiles",
"getting_started.documentation": "Documentación",
"getting_started.heading": "Entamu",
- "getting_started.invite": "Convidar xente",
- "getting_started.open_source_notice": "Mastodon ye software de códigu abiertu. Pues collaborar o informar de fallos en {github} (GitHub).",
- "getting_started.security": "Seguranza",
+ "getting_started.invite": "Convidar a persones",
+ "getting_started.open_source_notice": "Mastodon ye software de códigu abiertu. Pues collaborar o informar de fallos en GitHub: {github}.",
+ "getting_started.security": "Axustes de la cuenta",
"getting_started.terms": "Términos del serviciu",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
+ "hashtag.column_header.tag_mode.all": "y {additional}",
+ "hashtag.column_header.tag_mode.any": "o {additional}",
+ "hashtag.column_header.tag_mode.none": "ensin {additional}",
+ "hashtag.column_settings.select.no_options_message": "Nun s'alcontraron suxerencies",
"hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "hashtag.column_settings.tag_mode.all": "Toes estes",
+ "hashtag.column_settings.tag_mode.any": "Cualesquiera d'estes",
+ "hashtag.column_settings.tag_mode.none": "Nenguna d'estes",
+ "hashtag.column_settings.tag_toggle": "Incluyir les etiquetes adicionales d'esta columna",
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Amosar toots compartíos",
"home.column_settings.show_replies": "Amosar rempuestes",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
+ "intervals.full.days": "{number, plural, one {# día} other {# díes}}",
+ "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
+ "intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}",
+ "introduction.federation.action": "Siguiente",
"introduction.federation.federated.headline": "Federated",
- "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+ "introduction.federation.federated.text": "Los espublizamientos públicos de los demás sirvidores del fediversu van apaecer na llinia temporal federada.",
"introduction.federation.home.headline": "Home",
"introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
"introduction.federation.local.headline": "Local",
"introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
- "introduction.interactions.action": "Finish toot-orial!",
+ "introduction.interactions.action": "¡Finar el tutorial!",
"introduction.interactions.favourite.headline": "Favourite",
- "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.favourite.text": "Pues guardar un barritu pa dempués y facer que l'autor sepa que te prestó marcándolu como favoritu.",
"introduction.interactions.reblog.headline": "Boost",
"introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
"introduction.interactions.reply.headline": "Reply",
"introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "First steps",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "introduction.welcome.action": "¡Vamos!",
+ "introduction.welcome.headline": "Primeros pasos",
+ "introduction.welcome.text": "¡Afáyate nel fediversu! Nun momentu vas ser a tresmitir mensaxes y falar colos collacios d'una montonera de sirvidores. Pero esti sirvidor, {domain}, ye especial: agospia'l to perfil, asina qu'alcuérdate de cómo se llama.",
"keyboard_shortcuts.back": "pa dir p'atrás",
"keyboard_shortcuts.blocked": "p'abrir la llista d'usuarios bloquiaos",
"keyboard_shortcuts.boost": "pa compartir un toot",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
- "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.compose": "pa enfocar l'área de composición",
"keyboard_shortcuts.description": "Descripción",
"keyboard_shortcuts.direct": "p'abrir la columna de los mensaxes direutos",
"keyboard_shortcuts.down": "pa baxar na llista",
- "keyboard_shortcuts.enter": "to open status",
- "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.enter": "p'abrir estaos",
+ "keyboard_shortcuts.favourite": "p'amestar a Favoritos",
"keyboard_shortcuts.favourites": "p'abrir la llista de favoritos",
"keyboard_shortcuts.federated": "p'abrir la llinia temporal federada",
"keyboard_shortcuts.heading": "Atayos del tecláu",
@@ -217,18 +235,20 @@
"keyboard_shortcuts.local": "p'abrir la llinia temporal llocal",
"keyboard_shortcuts.mention": "pa mentar al autor",
"keyboard_shortcuts.muted": "p'abrir la llista d'usuarios silenciaos",
- "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.my_profile": "p'abrir el to perfil",
"keyboard_shortcuts.notifications": "p'abrir la columna d'avisos",
- "keyboard_shortcuts.pinned": "p'abrir la llista de toots fixaos",
+ "keyboard_shortcuts.open_media": "to open media",
+ "keyboard_shortcuts.pinned": "p'abrir la llista de barritos fixaos",
"keyboard_shortcuts.profile": "p'abrir el perfil del autor",
"keyboard_shortcuts.reply": "pa responder",
"keyboard_shortcuts.requests": "p'abrir la llista de solicitúes de siguimientu",
- "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.search": "pa enfocar la gueta",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "p'abrir la columna «entamar»",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
- "keyboard_shortcuts.toot": "p'apenzar un toot nuevu",
- "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.toot": "p'apenzar un barritu nuevu",
+ "keyboard_shortcuts.unfocus": "pa desenfocar l'área de composición/gueta",
"keyboard_shortcuts.up": "pa xubir na llista",
"lightbox.close": "Close",
"lightbox.next": "Siguiente",
@@ -243,14 +263,15 @@
"lists.new.title_placeholder": "Títulu nuevu de la llista",
"lists.search": "Guetar ente la xente que sigues",
"lists.subheading": "Les tos llistes",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "Cargando...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}",
+ "loading_indicator.label": "Cargando…",
+ "media_gallery.toggle_visible": "Alternar la visibilidá",
"missing_indicator.label": "Nun s'alcontró",
"missing_indicator.sublabel": "Esti recursu nun pudo alcontrase",
- "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "mute_modal.hide_notifications": "¿Anubrir los avisos d'esti usuariu?",
"navigation_bar.apps": "Aplicaciones pa móviles",
"navigation_bar.blocks": "Usuarios bloquiaos",
+ "navigation_bar.bookmarks": "Marcadores",
"navigation_bar.community_timeline": "Llinia temporal llocal",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Mensaxes direutos",
@@ -267,44 +288,47 @@
"navigation_bar.logout": "Zarrar sesión",
"navigation_bar.mutes": "Usuarios silenciaos",
"navigation_bar.personal": "Personal",
- "navigation_bar.pins": "Toots fixaos",
+ "navigation_bar.pins": "Barritos fixaos",
"navigation_bar.preferences": "Preferencies",
"navigation_bar.public_timeline": "Llinia temporal federada",
"navigation_bar.security": "Seguranza",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} siguióte",
+ "notification.follow_request": "{name} solicitó siguite",
"notification.mention": "{name} mentóte",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.own_poll": "Your poll has ended",
+ "notification.poll": "Finó una encuesta na que votesti",
"notification.reblog": "{name} compartió'l to estáu",
"notifications.clear": "Llimpiar avisos",
"notifications.clear_confirmation": "¿De xuru que quies llimpiar dafechu tolos avisos?",
"notifications.column_settings.alert": "Avisos d'escritoriu",
"notifications.column_settings.favourite": "Favoritos:",
- "notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.filter_bar.advanced": "Amosar toles estayes",
+ "notifications.column_settings.filter_bar.category": "Barra de peñera rápida",
+ "notifications.column_settings.filter_bar.show": "Amosar",
"notifications.column_settings.follow": "Siguidores nuevos:",
+ "notifications.column_settings.follow_request": "Solicitúes de siguimientu nueves:",
"notifications.column_settings.mention": "Menciones:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Resultaos d'encuestes:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.reblog": "Toots compartíos:",
+ "notifications.column_settings.reblog": "Barritos compartíos:",
"notifications.column_settings.show": "Amosar en columna",
- "notifications.column_settings.sound": "Reproducir soníu",
- "notifications.filter.all": "All",
+ "notifications.column_settings.sound": "Reproducir un soníu",
+ "notifications.filter.all": "Too",
"notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favourites",
"notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
+ "notifications.filter.mentions": "Menciones",
"notifications.filter.polls": "Poll results",
"notifications.group": "{count} avisos",
- "poll.closed": "Closed",
+ "poll.closed": "Acabó",
"poll.refresh": "Refresh",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.total_people": "{count, plural, one {# persona} other {# persones}}",
+ "poll.total_votes": "{count, plural, one {# votu} other {# votos}}",
"poll.vote": "Vote",
"poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll_button.add_poll": "Amestar una encuesta",
+ "poll_button.remove_poll": "Desaniciar la encuesta",
"privacy.change": "Adjust status privacy",
"privacy.direct.long": "Post to mentioned users only",
"privacy.direct.short": "Direct",
@@ -312,24 +336,25 @@
"privacy.private.short": "Namái siguidores",
"privacy.public.long": "Post to public timelines",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Do not show in public timelines",
- "privacy.unlisted.short": "Unlisted",
+ "privacy.unlisted.long": "Nun apaez nes llinies temporales públiques",
+ "privacy.unlisted.short": "Nun llistar",
"refresh": "Refresh",
"regeneration_indicator.label": "Cargando…",
- "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "regeneration_indicator.sublabel": "¡Tamos tresnando'l feed d'Aniciu!",
"relative_time.days": "{number}d",
"relative_time.hours": "{number}h",
"relative_time.just_now": "agora",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "güei",
"reply_indicator.cancel": "Encaboxar",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
- "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.hint": "L'informe va unviase a los llendadores del to sirvidor. Embaxo, pues desplicar por qué informes d'esta cuenta:",
"report.placeholder": "Comentarios adicionales",
- "report.submit": "Submit",
+ "report.submit": "Unviar",
"report.target": "Report {target}",
- "search.placeholder": "Search",
+ "search.placeholder": "Guetar",
"search_popout.search_format": "Formatu de gueta avanzada",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "etiqueta",
@@ -338,80 +363,89 @@
"search_popout.tips.user": "usuariu",
"search_results.accounts": "Xente",
"search_results.hashtags": "Etiquetes",
- "search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
- "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "search_results.statuses": "Barritos",
+ "search_results.statuses_fts_disabled": "Esti sirvidor de Mastodon tien activada la gueta de barritos pol so conteníu.",
+ "search_results.total": "{count, number} {count, plural, one {resultáu} other {resultaos}}",
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Bloquiar a @{name}",
+ "status.bookmark": "Amestar a Marcadores",
"status.cancel_reblog_private": "Dexar de compartir",
"status.cannot_reblog": "Esti artículu nun pue compartise",
- "status.copy": "Copy link to status",
- "status.delete": "Delete",
+ "status.copy": "Copiar l'enllaz al estáu",
+ "status.delete": "Desaniciar",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Unviar un mensaxe direutu a @{name}",
"status.embed": "Empotrar",
"status.favourite": "Favourite",
"status.filtered": "Filtered",
"status.load_more": "Cargar más",
- "status.media_hidden": "Mediu anubríu",
+ "status.media_hidden": "Multimedia anubrida",
"status.mention": "Mentar a @{name}",
"status.more": "Más",
"status.mute": "Silenciar a @{name}",
"status.mute_conversation": "Silenciar la conversación",
"status.open": "Espander esti estáu",
"status.pin": "Fixar nel perfil",
- "status.pinned": "Toot fixáu",
+ "status.pinned": "Barritu fixáu",
"status.read_more": "Read more",
"status.reblog": "Compartir",
"status.reblog_private": "Compartir cola audiencia orixinal",
"status.reblogged_by": "{name} compartió",
- "status.reblogs.empty": "Naide nun compartió esti toot entá. Cuando daquién lo faiga, va amosase equí.",
+ "status.reblogs.empty": "Naide nun compartió esti barritu entá. Cuando daquién lo faiga, va amosase equí.",
"status.redraft": "Desaniciar y reeditar",
+ "status.remove_bookmark": "Desaniciar de Marcadores",
"status.reply": "Responder",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
"status.sensitive_warning": "Conteníu sensible",
"status.share": "Share",
"status.show_less": "Amosar menos",
- "status.show_less_all": "Show less for all",
+ "status.show_less_all": "Amosar menos en too",
"status.show_more": "Amosar más",
- "status.show_more_all": "Show more for all",
- "status.show_thread": "Show thread",
- "status.uncached_media_warning": "Not available",
+ "status.show_more_all": "Amosar más en too",
+ "status.show_thread": "Amosar el filu",
+ "status.uncached_media_warning": "Non disponible",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Desfixar del perfil",
"suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
- "tabs_bar.federated_timeline": "Federated",
+ "suggestions.header": "Quiciabes t'interese…",
+ "tabs_bar.federated_timeline": "Fediversu",
"tabs_bar.home": "Aniciu",
"tabs_bar.local_timeline": "Llocal",
"tabs_bar.notifications": "Avisos",
"tabs_bar.search": "Search",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+ "time_remaining.days": "{number, plural, one {Queda # día} other {Queden # díes}}",
+ "time_remaining.hours": "{number, plural, one {# hora restante} other {# hores restantes}}",
+ "time_remaining.minutes": "{number, plural, one {# minutu restante} other {# minutos restantes}}",
"time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "time_remaining.seconds": "{number, plural, one {# segundu restante} other {# segundos restantes}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {persones}} falando",
"trends.trending_now": "Trending now",
"ui.beforeunload": "El borrador va perdese si coles de Mastodon.",
- "upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media",
+ "upload_area.title": "Arrastra y suelta pa xubir",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "La xuba de ficheros nun ta permitida con encuestes.",
+ "upload_form.audio_description": "Descripción pa persones con perda auditiva",
"upload_form.description": "Descripción pa discapacitaos visuales",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "Editar",
"upload_form.undo": "Desaniciar",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
+ "upload_form.video_description": "Descripción pa persones con perda auditiva o discapacidá visual",
+ "upload_modal.analyzing_picture": "Analizando la semeya…",
+ "upload_modal.apply": "Aplicar",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
- "upload_progress.label": "Xubiendo...",
+ "upload_modal.detect_text": "Deteutar el testu de la semeya",
+ "upload_modal.edit_media": "Edición",
+ "upload_modal.hint": "Calca o arrastra'l círculu de la previsualización pa escoyer el puntu d'enfoque que va amosase siempres en toles miniatures.",
+ "upload_modal.preview_label": "Previsualización ({ratio})",
+ "upload_progress.label": "Xubiendo…",
"video.close": "Zarrar el videu",
+ "video.download": "Download file",
"video.exit_fullscreen": "Colar de la pantalla completa",
"video.expand": "Espander el videu",
"video.fullscreen": "Pantalla completa",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index a4afe2adb..7fa980202 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -1,22 +1,26 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Добави или премахни от списъците",
"account.badges.bot": "бот",
+ "account.badges.group": "Group",
"account.block": "Блокирай",
"account.block_domain": "скрий всичко от (домейн)",
"account.blocked": "Блокирани",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Откажи искането за следване",
"account.direct": "Direct Message @{name}",
"account.domain_blocked": "Скрит домейн",
"account.edit_profile": "Редактирай профила си",
- "account.endorse": "Feature on profile",
+ "account.endorse": "Характеристика на профила",
"account.follow": "Последвай",
"account.followers": "Последователи",
- "account.followers.empty": "No one follows this user yet.",
+ "account.followers.empty": "Все още никой не следва този потребител.",
"account.follows": "Следвам",
- "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows.empty": "Този потребител все още не следва никого.",
"account.follows_you": "Твой последовател",
"account.hide_reblogs": "Hide boosts from @{name}",
- "account.last_status": "Last active",
+ "account.last_status": "Последно активен/а",
"account.link_verified_on": "Ownership of this link was checked on {date}",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"account.media": "Media",
@@ -38,10 +42,15 @@
"account.unfollow": "Не следвай",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Blocked users",
+ "column.bookmarks": "Bookmarks",
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.settings": "Settings",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Раздумай",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -245,12 +265,13 @@
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Зареждане...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Security",
"notification.favourite": "{name} хареса твоята публикация",
"notification.follow": "{name} те последва",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} те спомена",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} сподели твоята публикация",
"notifications.clear": "Clear notifications",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "Нови последователи:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Споменавания:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
@@ -322,6 +346,7 @@
"relative_time.just_now": "now",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Отказ",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} сподели",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Отговор",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Добави медия",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
"upload_form.undo": "Отмяна",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"video.close": "Close video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 6c4f0def6..c5f08a40e 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -1,60 +1,70 @@
{
- "account.add_or_remove_from_list": "তালিকাতে আরো যুক্ত বা মুছে ফেলুন",
- "account.badges.bot": "রোবট",
- "account.block": "@{name} কে বন্ধ করুন",
- "account.block_domain": "{domain} থেকে সব সরিয়ে ফেলুন",
- "account.blocked": "বন্ধ করা হয়েছে",
- "account.cancel_follow_request": "Cancel follow request",
- "account.direct": "@{name} এর কাছে সরকারি লেখা পাঠাতে",
- "account.domain_blocked": "ওয়েবসাইট সরিয়ে ফেলা হয়েছে",
- "account.edit_profile": "নিজের পাতা সম্পাদনা করতে",
- "account.endorse": "আপনার নিজের পাতায় দেখাতে",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "তালিকাতে যুক্ত বা অপসারণ করুন",
+ "account.badges.bot": "বট",
+ "account.badges.group": "Group",
+ "account.block": "@{name} কে ব্লক করুন",
+ "account.block_domain": "{domain} থেকে সব আড়াল করুন",
+ "account.blocked": "অবরুদ্ধ",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "অনুসরণ অনুরোধ বাতিল করুন",
+ "account.direct": "@{name} কে সরাসরি বার্তা",
+ "account.domain_blocked": "ডোমেন গোপন করুন",
+ "account.edit_profile": "প্রোফাইল পরিবর্তন করুন",
+ "account.endorse": "নিজের পাতায় দেখান",
"account.follow": "অনুসরণ করুন",
- "account.followers": "অনুসরণকারক",
- "account.followers.empty": "এই ব্যবহারকারীকে কেও এখনো অনুসরণ করে না।",
+ "account.followers": "অনুসরণকারী",
+ "account.followers.empty": "এই সদস্যকে এখনো কেউ অনুসরণ করে না।.",
"account.follows": "যাদেরকে অনুসরণ করেন",
- "account.follows.empty": "এই ব্যবহারকারী কাওকে এখনো অনুসরণ করেন না।",
+ "account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.",
"account.follows_you": "আপনাকে অনুসরণ করে",
- "account.hide_reblogs": "@{name}র সমর্থনগুলি সরিয়ে ফেলুন",
- "account.last_status": "Last active",
- "account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিকে",
+ "account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন",
+ "account.last_status": "শেষ সক্রিয় ছিল",
+ "account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিখে",
"account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।",
- "account.media": "ছবি বা ভিডিও",
- "account.mention": "@{name} কে উল্লেখ করতে",
- "account.moved_to": "{name} চলে গেছে এখানে:",
- "account.mute": "@{name} সব কার্যক্রম আপনার সময়রেখা থেকে সরিয়ে ফেলতে",
- "account.mute_notifications": "@{name}র প্রজ্ঞাপন আপনার কাছ থেকে সরিয়ে ফেলুন",
- "account.muted": "সরানো আছে",
- "account.never_active": "Never",
+ "account.media": "মিডিয়া",
+ "account.mention": "@{name} কে উল্লেখ করুন",
+ "account.moved_to": "{name} কে এখানে সরানো হয়েছে:",
+ "account.mute": "@{name} কে নিঃশব্দ করুন",
+ "account.mute_notifications": "@{name} র প্রজ্ঞাপন আপনার কাছে নিঃশব্দ করুন",
+ "account.muted": "নিঃশব্দ",
+ "account.never_active": "কখনও নয়",
"account.posts": "টুট",
"account.posts_with_replies": "টুট এবং মতামত",
- "account.report": "@{name} কে রিপোর্ট করতে",
- "account.requested": "অনুমতির অপেক্ষায় আছে। অনুসরণ করার অনুরোধ বাতিল করতে এখানে ক্লিক করুন",
- "account.share": "@{name}র পাতা অন্যদের দেখান",
- "account.show_reblogs": "@{name}র সমর্থনগুলো দেখুন",
- "account.unblock": "@{name}র কার্যকলাপ আবার দেখুন",
- "account.unblock_domain": "{domain}থেকে আবার দেখুন",
- "account.unendorse": "আপনার নিজের পাতায় এটা না দেখাতে",
+ "account.report": "@{name} কে রিপোর্ট করুন",
+ "account.requested": "অনুমতির অপেক্ষা। অনুসরণ করার অনুরোধ বাতিল করতে এখানে ক্লিক করুন",
+ "account.share": "@{name} র প্রোফাইল অন্যদের দেখান",
+ "account.show_reblogs": "@{name} র সমর্থনগুলো দেখান",
+ "account.unblock": "@{name} র কার্যকলাপ দেখুন",
+ "account.unblock_domain": "{domain} কে আবার দেখুন",
+ "account.unendorse": "আপনার নিজের পাতায় এটা দেখবেন না",
"account.unfollow": "অনুসরণ না করতে",
- "account.unmute": "@{name}র কার্যকলাপ আবার দেখুন",
- "account.unmute_notifications": "@{name}র প্রজ্ঞাপন দেওয়ার অনুমতি দিন",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
- "alert.unexpected.message": "অপ্রত্যাশিত একটি সমস্যা হয়েছে।",
+ "account.unmute": "@{name} র কার্যকলাপ আবার দেখুন",
+ "account.unmute_notifications": "@{name} র প্রজ্ঞাপন দেখুন",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "{retry_time, time, medium} -এর পরে আবার প্রচেষ্টা করুন।",
+ "alert.rate_limited.title": "হার সীমিত",
+ "alert.unexpected.message": "সমস্যা অপ্রত্যাশিত.",
"alert.unexpected.title": "ওহো!",
- "autosuggest_hashtag.per_week": "{count} per week",
- "boost_modal.combo": "পরেরবার আপনি {combo} চাপ দিলে এটার শেষে চলে যেতে পারবেন",
- "bundle_column_error.body": "এই অংশটি দেখতে যেয়ে কোনো সমস্যা হয়েছে।",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "প্রতি সপ্তাহে {count}",
+ "boost_modal.combo": "পরেরবার আপনি {combo} টিপলে এটি আর আসবে না",
+ "bundle_column_error.body": "এই অংশটি দেখতে যেয়ে কোনো সমস্যা হয়েছে।.",
"bundle_column_error.retry": "আবার চেষ্টা করুন",
- "bundle_column_error.title": "নেটওয়ার্কের সমস্যা হচ্ছে",
+ "bundle_column_error.title": "নেটওয়ার্কের সমস্যা",
"bundle_modal_error.close": "বন্ধ করুন",
- "bundle_modal_error.message": "এই অংশটি দেখাতে যেয়ে কোনো সমস্যা হয়েছে।",
+ "bundle_modal_error.message": "এই অংশটি দেখাতে যেয়ে কোনো সমস্যা হয়েছে।.",
"bundle_modal_error.retry": "আবার চেষ্টা করুন",
- "column.blocks": "যাদের বন্ধ করে রাখা হয়েছে",
+ "column.blocks": "যাদের ব্লক করা হয়েছে",
+ "column.bookmarks": "Bookmarks",
"column.community": "স্থানীয় সময়সারি",
"column.direct": "সরাসরি লেখা",
- "column.directory": "Browse profiles",
- "column.domain_blocks": "সরিয়ে ফেলা ওয়েবসাইট",
+ "column.directory": "প্রোফাইল ব্রাউজ করুন",
+ "column.domain_blocks": "লুকোনো ডোমেনগুলি",
"column.favourites": "পছন্দের গুলো",
"column.follow_requests": "অনুসরণের অনুমতি চেয়েছে যারা",
"column.home": "বাড়ি",
@@ -71,7 +81,9 @@
"column_header.show_settings": "সেটিং দেখান",
"column_header.unpin": "পিন খুলুন",
"column_subheading.settings": "সেটিং",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "শুধুমাত্র ছবি বা ভিডিও",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "শুধুমাত্র যাদেরকে উল্লেখ করা হয়েছে তাদেরকেই এই টুটটি পাঠানো হবে ।",
"compose_form.direct_message_warning_learn_more": "আরো জানুন",
"compose_form.hashtag_warning": "কোনো হ্যাশট্যাগের ভেতরে এই টুটটি থাকবেনা কারণ এটি তালিকাবহির্ভূত। শুধুমাত্র প্রকাশ্য ঠোটগুলো হ্যাশট্যাগের ভেতরে খুঁজে পাওয়া যাবে।",
@@ -82,28 +94,30 @@
"compose_form.poll.duration": "ভোটগ্রহনের সময়",
"compose_form.poll.option_placeholder": "বিকল্প {number}",
"compose_form.poll.remove_option": "এই বিকল্পটি মুছে ফেলুন",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "টুট",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করতে",
"compose_form.sensitive.marked": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করা হয়েছে",
"compose_form.sensitive.unmarked": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করা হয়নি",
- "compose_form.spoiler.marked": "লেখাটি সাবধানতার পেছনে লুকানো আছে",
+ "compose_form.spoiler.marked": "সতর্কতার পিছনে লেখানটি লুকানো আছে",
"compose_form.spoiler.unmarked": "লেখাটি লুকানো নেই",
"compose_form.spoiler_placeholder": "আপনার লেখা দেখার সাবধানবাণী লিখুন",
"confirmation_modal.cancel": "বাতিল করুন",
- "confirmations.block.block_and_report": "বন্ধ করুন এবং রিপোর্ট করুন",
- "confirmations.block.confirm": "বন্ধ করুন",
- "confirmations.block.message": "আপনি কি নিশ্চিত {name} কে বন্ধ করতে চান ?",
+ "confirmations.block.block_and_report": "ব্লক করুন এবং রিপোর্ট করুন",
+ "confirmations.block.confirm": "ব্লক করুন",
+ "confirmations.block.message": "আপনি কি নিশ্চিত {name} কে ব্লক করতে চান?",
"confirmations.delete.confirm": "মুছে ফেলুন",
"confirmations.delete.message": "আপনি কি নিশ্চিত যে এই লেখাটি মুছে ফেলতে চান ?",
"confirmations.delete_list.confirm": "মুছে ফেলুন",
"confirmations.delete_list.message": "আপনি কি নিশ্চিত যে আপনি এই তালিকাটি স্থায়িভাবে মুছে ফেলতে চান ?",
- "confirmations.domain_block.confirm": "এই ওয়েবসাইট থেকে সব সরান",
- "confirmations.domain_block.message": "আপনি কি সত্যি সত্যি নিশ্চিত যে {domain} ওয়েবসাইট থেকে সব সরাতে চান ? সাধারণত কিছু লক্ষ্যবস্তু বন্ধ এবং সরানোযা যথেষ্ট। নিশ্চিত করলে ওই ওয়েবসাইট থেকে কোনোকিছু কোনখানে দেখবেন না। যারা আপনাকে অনুসরণ করে ওই ওয়েবসাইট থেকে তাদেরকেও মুছে ফেলা হবে।",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.domain_block.confirm": "এই ডোমেন থেকে সব লুকান",
+ "confirmations.domain_block.message": "আপনি কি সত্যিই সত্যই নিশ্চিত যে আপনি পুরো {domain}'টি ব্লক করতে চান? বেশিরভাগ ক্ষেত্রে কয়েকটি লক্ষ্যযুক্ত ব্লক বা নীরবতা যথেষ্ট এবং পছন্দসই। আপনি কোনও পাবলিক টাইমলাইন বা আপনার বিজ্ঞপ্তিগুলিতে সেই ডোমেন থেকে সামগ্রী দেখতে পাবেন না। সেই ডোমেন থেকে আপনার অনুসরণকারীদের সরানো হবে।",
+ "confirmations.logout.confirm": "প্রস্থান",
+ "confirmations.logout.message": "আপনি লগ আউট করতে চান?",
"confirmations.mute.confirm": "সরিয়ে ফেলুন",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "এটি তাদের কাছ থেকে পোস্ট এবং তাদেরকে মেনশন করা পোস্টগুলি হাইড করবে, তবুও তাদেরকে এটি আপনার পোস্ট গুলো দেখতে দিবে ও তারা আপনাকে অনুসরন করতে পারবে।.",
"confirmations.mute.message": "আপনি কি নিশ্চিত {name} সরিয়ে ফেলতে চান ?",
"confirmations.redraft.confirm": "মুছে ফেলুন এবং আবার সম্পাদন করুন",
"confirmations.redraft.message": "আপনি কি নিশ্চিত এটি মুছে ফেলে এবং আবার সম্পাদন করতে চান ? এটাতে যা পছন্দিত, সমর্থন বা মতামত আছে সেগুলো নতুন লেখার সাথে যুক্ত থাকবে না।",
@@ -111,14 +125,14 @@
"confirmations.reply.message": "এখন মতামত লিখতে গেলে আপনার এখন যেটা লিখছেন সেটা মুছে যাবে। আপনি নি নিশ্চিত এটা করতে চান ?",
"confirmations.unfollow.confirm": "অনুসরণ করা বাতিল করতে",
"confirmations.unfollow.message": "আপনি কি নিশ্চিত {name} কে আর অনুসরণ করতে চান না ?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
+ "conversation.delete": "কথোপকথন মুছে ফেলুন",
+ "conversation.mark_as_read": "পঠিত হিসেবে চিহ্নিত করুন",
+ "conversation.open": "কথপোকথন দেখান",
+ "conversation.with": "{names} এর সঙ্গে",
+ "directory.federated": "পরিচিত ফেডিভারসের থেকে",
+ "directory.local": "শুধু {domain} থেকে",
+ "directory.new_arrivals": "নতুন আগত",
+ "directory.recently_active": "সম্প্রতি সক্রিয়",
"embed.instructions": "এই লেখাটি আপনার ওয়েবসাইটে যুক্ত করতে নিচের কোডটি বেবহার করুন।",
"embed.preview": "সেটা দেখতে এরকম হবে:",
"emoji_button.activity": "কার্যকলাপ",
@@ -137,27 +151,29 @@
"emoji_button.travel": "ভ্রমণ এবং স্থান",
"empty_column.account_timeline": "এখানে কোনো টুট নেই!",
"empty_column.account_unavailable": "নিজস্ব পাতা নেই",
- "empty_column.blocks": "আপনি কোনো ব্যবহারকারীদের বন্ধ করেন নি।",
+ "empty_column.blocks": "আপনি কোনো ব্যবহারকারীদের ব্লক করেন নি।",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "স্থানীয় সময়রেখাতে কিছু নেই। প্রকাশ্যভাবে কিছু লিখে লেখালেখির উদ্বোধন করে ফেলুন!",
"empty_column.direct": "আপনার কাছে সরাসরি পাঠানো কোনো লেখা নেই। যদি কেও পাঠায়, সেটা এখানে দেখা যাবে।",
- "empty_column.domain_blocks": "এখনো কোনো সরানো ওয়েবসাইট নেই।",
+ "empty_column.domain_blocks": "এখনও কোনও লুকানো ডোমেন নেই।",
"empty_column.favourited_statuses": "আপনার পছন্দের কোনো টুট এখনো নেই। আপনি কোনো লেখা পছন্দের হিসেবে চিহ্নিত করলে এখানে পাওয়া যাবে।",
"empty_column.favourites": "কেও এখনো এটাকে পছন্দের টুট হিসেবে চিহ্নিত করেনি। যদি করে, তখন তাদের এখানে পাওয়া যাবে।",
"empty_column.follow_requests": "আপনার এখনো কোনো অনুসরণের আবেদন পাঠানো নেই। যদি পাঠায়, এখানে পাওয়া যাবে।",
"empty_column.hashtag": "এই হেসটাগে এখনো কিছু নেই।",
- "empty_column.home": "আপনার বাড়ির সময়রেখা এখনো খালি! {public}এ ঘুরে আসুন অথবা অনুসন্ধান বেবহার করে শুরু করতে পারেন এবং অন্য ব্যবহারকারীদের সাথে সাক্ষাৎ করতে পারেন।",
+ "empty_column.home": "আপনার বাড়ির সময়রেখা এখনো খালি! {public} এ ঘুরে আসুন অথবা অনুসন্ধান বেবহার করে শুরু করতে পারেন এবং অন্য ব্যবহারকারীদের সাথে সাক্ষাৎ করতে পারেন।",
"empty_column.home.public_timeline": "প্রকাশ্য সময়রেখা",
"empty_column.list": "এই তালিকাতে এখনো কিছু নেই. যখন এই তালিকায় থাকা ব্যবহারকারী নতুন কিছু লিখবে, সেগুলো এখানে পাওয়া যাবে।",
"empty_column.lists": "আপনার এখনো কোনো তালিকা তৈরী নেই। যদি বা যখন তৈরী করেন, সেগুলো এখানে পাওয়া যাবে।",
- "empty_column.mutes": "আপনি এখনো কোনো ব্যবহারকারীকে সরাননি।",
+ "empty_column.mutes": "আপনি এখনো কোনো ব্যবহারকারীকে নিঃশব্দ করেননি।",
"empty_column.notifications": "আপনার এখনো কোনো প্রজ্ঞাপন নেই। কথোপকথন শুরু করতে, অন্যদের সাথে মেলামেশা করতে পারেন।",
"empty_column.public": "এখানে এখনো কিছু নেই! প্রকাশ্য ভাবে কিছু লিখুন বা অন্য সার্ভার থেকে কাওকে অনুসরণ করে এই জায়গা ভরে ফেলুন",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "আমাদের কোড বা ব্রাউজারের সামঞ্জস্য ইস্যুতে একটি বাগের কারণে এই পৃষ্ঠাটি সঠিকভাবে প্রদর্শিত করা যায় নি।",
+ "error.unexpected_crash.next_steps": "পাতাটি রিফ্রেশ করে চেষ্টা করুন। তবুও যদি না হয়, তবে আপনি অন্য একটি ব্রাউজার অথবা আপনার ডিভাইসের জন্যে এপের মাধ্যমে মাস্টডন ব্যাবহার করতে পারবেন।.",
+ "errors.unexpected_crash.copy_stacktrace": "স্টেকট্রেস ক্লিপবোর্ডে কপি করুন",
+ "errors.unexpected_crash.report_issue": "সমস্যার প্রতিবেদন করুন",
"follow_request.authorize": "অনুমতি দিন",
"follow_request.reject": "প্রত্যাখ্যান করুন",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "তৈরিকারকদের জন্য",
"getting_started.directory": "নিজস্ব-পাতাগুলির তালিকা",
"getting_started.documentation": "নথিপত্র",
@@ -178,9 +194,11 @@
"home.column_settings.basic": "সাধারণ",
"home.column_settings.show_reblogs": "সমর্থনগুলো দেখান",
"home.column_settings.show_replies": "মতামত দেখান",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# ঘটা} other {# ঘটা}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "intervals.full.minutes": "{number, plural, one {# মিনিট} other {# মিনিট}}",
"introduction.federation.action": "পরবর্তী",
"introduction.federation.federated.headline": "যুক্তবিশ্ব",
"introduction.federation.federated.text": "অন্যান্য যুক্তবিশ্বের সার্ভারের লেখাগুলি যুক্তবিশ্বের সময়রেখাতে আসবে ।",
@@ -199,7 +217,7 @@
"introduction.welcome.headline": "প্রথম ধাপ",
"introduction.welcome.text": "যুক্তবিশ্বে স্বাগতম! কিছুক্ষনের মধ্যেই আপনি আপনার লেখা বিভিন্ন সার্ভারে সম্প্রচার করতে পারবেন। কিন্তু মনে রাখবে যে এটা একটা বিশেষ সার্ভার, {domain} কারণ এখানে আপনার নিজেস্ব পাতা রাখা হচ্ছে।",
"keyboard_shortcuts.back": "পেছনে যেতে",
- "keyboard_shortcuts.blocked": "বন্ধ করা ব্যবহারকারীদের তালিকা দেখতে",
+ "keyboard_shortcuts.blocked": "ব্লক করা ব্যবহারকারীদের তালিকা খুলতে",
"keyboard_shortcuts.boost": "সমর্থন করতে",
"keyboard_shortcuts.column": "কোনো কলামএ কোনো লেখা ফোকাস করতে",
"keyboard_shortcuts.compose": "লেখা সম্পদনার জায়গায় ফোকাস করতে",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "বন্ধ করা ব্যবহারকারীদের তালিকা খুলতে",
"keyboard_shortcuts.my_profile": "আপনার নিজের পাতা দেখতে",
"keyboard_shortcuts.notifications": "প্রজ্ঞাপনের কলাম খুলতে",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "পিন দেওয়া টুটের তালিকা খুলতে",
"keyboard_shortcuts.profile": "লেখকের পাতা দেখতে",
"keyboard_shortcuts.reply": "মতামত দিতে",
"keyboard_shortcuts.requests": "অনুসরণ অনুরোধের তালিকা দেখতে",
"keyboard_shortcuts.search": "খোঁজার অংশে ফোকাস করতে",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "\"প্রথম শুরুর\" কলাম বের করতে",
"keyboard_shortcuts.toggle_hidden": "CW লেখা দেখতে বা লুকাতে",
"keyboard_shortcuts.toggle_sensitivity": "ভিডিও/ছবি দেখতে বা বন্ধ করতে",
@@ -243,7 +263,7 @@
"lists.new.title_placeholder": "তালিকার নতুন শিরোনাম দিতে",
"lists.search": "যাদের অনুসরণ করেন তাদের ভেতরে খুঁজুন",
"lists.subheading": "আপনার তালিকা",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "load_pending": "{count, plural, one {# নতুন জিনিস} other {# নতুন জিনিস}}",
"loading_indicator.label": "আসছে...",
"media_gallery.toggle_visible": "দৃশ্যতার অবস্থা বদলান",
"missing_indicator.label": "খুঁজে পাওয়া যায়নি",
@@ -251,21 +271,22 @@
"mute_modal.hide_notifications": "এই ব্যবহারকারীর প্রজ্ঞাপন বন্ধ করবেন ?",
"navigation_bar.apps": "মোবাইলের আপ্প",
"navigation_bar.blocks": "বন্ধ করা ব্যবহারকারী",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "স্থানীয় সময়রেখা",
"navigation_bar.compose": "নতুন টুট লিখুন",
"navigation_bar.direct": "সরাসরি লেখাগুলি",
"navigation_bar.discover": "ঘুরে দেখুন",
- "navigation_bar.domain_blocks": "বন্ধ করা ওয়েবসাইট",
+ "navigation_bar.domain_blocks": "লুকানো ডোমেনগুলি",
"navigation_bar.edit_profile": "নিজের পাতা সম্পাদনা করতে",
"navigation_bar.favourites": "পছন্দের",
"navigation_bar.filters": "বন্ধ করা শব্দ",
"navigation_bar.follow_requests": "অনুসরণের অনুরোধগুলি",
- "navigation_bar.follows_and_followers": "যাদেরকে অনুসরণ করেন এবং যারা তাকে অনুসরণ করে",
+ "navigation_bar.follows_and_followers": "অনুসরণ এবং অনুসরণকারী",
"navigation_bar.info": "এই সার্ভার সম্পর্কে",
"navigation_bar.keyboard_shortcuts": "হটকীগুলি",
"navigation_bar.lists": "তালিকাগুলো",
"navigation_bar.logout": "বাইরে যান",
- "navigation_bar.mutes": "যেসব বেভহারকারীদের কার্যক্রম বন্ধ করা আছে",
+ "navigation_bar.mutes": "যাদের কার্যক্রম দেখা বন্ধ আছে",
"navigation_bar.personal": "নিজস্ব",
"navigation_bar.pins": "পিন দেওয়া টুট",
"navigation_bar.preferences": "পছন্দসমূহ",
@@ -273,7 +294,9 @@
"navigation_bar.security": "নিরাপত্তা",
"notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন",
"notification.follow": "{name} আপনাকে অনুসরণ করেছেন",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} আপনাকে উল্লেখ করেছেন",
+ "notification.own_poll": "আপনার পোল শেষ হয়েছে",
"notification.poll": "আপনি ভোট দিয়েছিলেন এমন এক নির্বাচনের ভোটের সময় শেষ হয়েছে",
"notification.reblog": "{name} আপনার কার্যক্রমে সমর্থন দেখিয়েছেন",
"notifications.clear": "প্রজ্ঞাপনগুলো মুছে ফেলতে",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "সংক্ষিপ্ত ছাঁকনি অংশ",
"notifications.column_settings.filter_bar.show": "দেখানো",
"notifications.column_settings.follow": "নতুন অনুসরণকারীরা:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "প্রজ্ঞাপনগুলো:",
"notifications.column_settings.poll": "নির্বাচনের ফলাফল:",
"notifications.column_settings.push": "পুশ প্রজ্ঞাপনগুলি",
@@ -299,10 +323,10 @@
"notifications.group": "{count} প্রজ্ঞাপন",
"poll.closed": "বন্ধ",
"poll.refresh": "বদলেছে কিনা দেখতে",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, one {# ব্যক্তি} other {# ব্যক্তি}}",
"poll.total_votes": "{count, plural, one {# ভোট} other {# ভোট}}",
"poll.vote": "ভোট",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "আপনি এই উত্তরের পক্ষে ভোট দিয়েছেন",
"poll_button.add_poll": "একটা নির্বাচন যোগ করতে",
"poll_button.remove_poll": "নির্বাচন বাদ দিতে",
"privacy.change": "লেখার গোপনীয়তা অবস্থা ঠিক করতে",
@@ -314,14 +338,15 @@
"privacy.public.short": "সর্বজনীন প্রকাশ্য",
"privacy.unlisted.long": "সর্বজনীন প্রকাশ্য সময়রেখাতে না দেখাতে",
"privacy.unlisted.short": "প্রকাশ্য নয়",
- "refresh": "Refresh",
+ "refresh": "সতেজ করা",
"regeneration_indicator.label": "আসছে…",
"regeneration_indicator.sublabel": "আপনার বাড়ির-সময়রেখা প্রস্তূত করা হচ্ছে!",
"relative_time.days": "{number} দিন",
"relative_time.hours": "{number} ঘন্টা",
"relative_time.just_now": "এখন",
- "relative_time.minutes": "{number}ম",
+ "relative_time.minutes": "{number}মিঃ",
"relative_time.seconds": "{number} সেকেন্ড",
+ "relative_time.today": "today",
"reply_indicator.cancel": "বাতিল করতে",
"report.forward": "এটা আরো পাঠান {target} তে",
"report.forward_hint": "এই নিবন্ধনটি অন্য একটি সার্ভারে। অপ্রকাশিতনামাভাবে রিপোর্টের কপি সেখানেও কি পাঠাতে চান ?",
@@ -329,7 +354,7 @@
"report.placeholder": "অন্য কোনো মন্তব্য",
"report.submit": "জমা দিন",
"report.target": "{target} রিপোর্ট করুন",
- "search.placeholder": "খুঁজতে",
+ "search.placeholder": "অনুসন্ধান",
"search_popout.search_format": "বিস্তারিতভাবে খোঁজার পদ্ধতি",
"search_popout.tips.full_text": "সাধারণ লেখা দিয়ে খুঁজলে বের হবে সেরকম আপনার লেখা, পছন্দের লেখা, সমর্থন করা লেখা, আপনাকে উল্লেখকরা কোনো লেখা, যা খুঁজছেন সেরকম কোনো ব্যবহারকারীর নাম বা কোনো হ্যাশট্যাগগুলো।",
"search_popout.tips.hashtag": "হ্যাশট্যাগ",
@@ -339,11 +364,12 @@
"search_results.accounts": "মানুষ",
"search_results.hashtags": "হ্যাশট্যাগগুলি",
"search_results.statuses": "টুট",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.statuses_fts_disabled": "তাদের সামগ্রী দ্বারা টুটগুলি অনুসন্ধান এই মস্তোডন সার্ভারে সক্ষম নয়।",
"search_results.total": "{count, number} {count, plural, one {ফলাফল} other {ফলাফল}}",
"status.admin_account": "@{name} র জন্য পরিচালনার ইন্টারফেসে ঢুকুন",
"status.admin_status": "যায় লেখাটি পরিচালনার ইন্টারফেসে খুলুন",
- "status.block": "@{name}কে বন্ধ করুন",
+ "status.block": "@{name} কে ব্লক করুন",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "সমর্থন বাতিল করতে",
"status.cannot_reblog": "এটিতে সমর্থন দেওয়া যাবেনা",
"status.copy": "লেখাটির লিংক কপি করতে",
@@ -354,7 +380,7 @@
"status.favourite": "পছন্দের করতে",
"status.filtered": "ছাঁকনিদিত",
"status.load_more": "আরো দেখুন",
- "status.media_hidden": "ছবি বা ভিডিও পেছনে",
+ "status.media_hidden": "মিডিয়া লুকানো আছে",
"status.mention": "@{name}কে উল্লেখ করতে",
"status.more": "আরো",
"status.mute": "@{name}র কার্যক্রম সরিয়ে ফেলতে",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} সমর্থন দিয়েছে",
"status.reblogs.empty": "এখনো কেও এটাতে সমর্থন দেয়নি। যখন কেও দেয়, সেটা তখন এখানে দেখা যাবে।",
"status.redraft": "মুছে আবার নতুন করে লিখতে",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "মতামত জানাতে",
"status.replyAll": "লেখাযুক্ত সবার কাছে মতামত জানাতে",
"status.report": "@{name} কে রিপোর্ট করতে",
@@ -378,7 +405,7 @@
"status.show_more": "আরো দেখাতে",
"status.show_more_all": "সবগুলোতে আরো দেখতে",
"status.show_thread": "আলোচনা দেখতে",
- "status.uncached_media_warning": "Not available",
+ "status.uncached_media_warning": "পাওয়া যাচ্ছে না",
"status.unmute_conversation": "আলোচনার প্রজ্ঞাপন চালু করতে",
"status.unpin": "নিজের পাতা থেকে পিন করে রাখাটির পিন খুলতে",
"suggestions.dismiss": "সাহায্যের পরামর্শগুলো সরাতে",
@@ -387,31 +414,38 @@
"tabs_bar.home": "বাড়ি",
"tabs_bar.local_timeline": "স্থানীয়",
"tabs_bar.notifications": "প্রজ্ঞাপনগুলো",
- "tabs_bar.search": "খুঁজতে",
+ "tabs_bar.search": "অনুসন্ধান",
"time_remaining.days": "{number, plural, one {# day} other {# days}} বাকি আছে",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} বাকি আছে",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} বাকি আছে",
+ "time_remaining.minutes": "{number, plural, one {# মিনিট} other {# মিনিট}} বাকি আছে",
"time_remaining.moments": "সময় বাকি আছে",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} বাকি আছে",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} কথা বলছে",
- "trends.trending_now": "Trending now",
+ "trends.trending_now": "বর্তমানে জনপ্রিয়",
"ui.beforeunload": "যে পর্যন্ত এটা লেখা হয়েছে, মাস্টাডন থেকে চলে গেলে এটা মুছে যাবে।",
"upload_area.title": "টেনে এখানে ছেড়ে দিলে এখানে যুক্ত করা যাবে",
"upload_button.label": "ছবি বা ভিডিও যুক্ত করতে (এসব ধরণের: JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "যা যুক্ত করতে চাচ্ছেন সেটি বেশি বড়, এখানকার সর্বাধিকের মেমোরির উপরে চলে গেছে।",
"upload_error.poll": "নির্বাচনক্ষেত্রে কোনো ফাইল যুক্ত করা যাবেনা।",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "যারা দেখতে পায়না তাদের জন্য এটা বর্ণনা করতে",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "সম্পাদন",
"upload_form.undo": "মুছে ফেলতে",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+ "upload_modal.analyzing_picture": "চিত্র বিশ্লেষণ করা হচ্ছে…",
+ "upload_modal.apply": "প্রয়োগ করুন",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_modal.detect_text": "ছবি থেকে পাঠ্য সনাক্ত করুন",
+ "upload_modal.edit_media": "মিডিয়া সম্পাদনা করুন",
+ "upload_modal.hint": "একটি দৃশ্যমান পয়েন্ট নির্বাচন করুন ক্লিক অথবা টানার মাধ্যমে যেটি সবময় সব থাম্বনেলে দেখা যাবে।",
+ "upload_modal.preview_label": "পূর্বরূপ({ratio})",
"upload_progress.label": "যুক্ত করতে পাঠানো হচ্ছে...",
"video.close": "ভিডিওটি বন্ধ করতে",
+ "video.download": "ফাইলটি ডাউনলোড করুন",
"video.exit_fullscreen": "পূর্ণ পর্দা থেকে বাইরে বের হতে",
"video.expand": "ভিডিওটি বড়ো করতে",
"video.fullscreen": "পূর্ণ পর্দা করতে",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index db07f1aba..e6ad55fb9 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -1,209 +1,227 @@
{
- "account.add_or_remove_from_list": "Ouzhpenn pe lemel ag ar listennadoù",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Ouzhpenn pe dilemel eus al listennadoù",
"account.badges.bot": "Robot",
- "account.block": "Stankañ @{name}",
- "account.block_domain": "Kuzh kement tra a {domain}",
+ "account.badges.group": "Strollad",
+ "account.block": "Berzañ @{name}",
+ "account.block_domain": "Berzañ pep tra eus {domain}",
"account.blocked": "Stanket",
- "account.cancel_follow_request": "Nullañ ar pedad heuliañ",
- "account.direct": "Kas ur c'hemennad da @{name}",
- "account.domain_blocked": "Domani kuzhet",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Nullañ ar bedadenn heuliañ",
+ "account.direct": "Kas ur gemennadenn da @{name}",
+ "account.domain_blocked": "Domani berzet",
"account.edit_profile": "Aozañ ar profil",
"account.endorse": "Lakaat war-wel war ar profil",
"account.follow": "Heuliañ",
- "account.followers": "Heilour·ezed·ion",
- "account.followers.empty": "Den na heul an implijour-mañ c'hoazh.",
+ "account.followers": "Heulier·ezed·ien",
+ "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.",
"account.follows": "Koumanantoù",
- "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows.empty": "An implijer·ez-mañ na heul den ebet.",
"account.follows_you": "Ho heul",
- "account.hide_reblogs": "Kuzh toudoù skignet gant @{name}",
+ "account.hide_reblogs": "Kuzh toudoù rannet gant @{name}",
"account.last_status": "Oberiantiz zivezhañ",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
- "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}",
+ "account.locked_info": "Prennet eo ar gon-mañ. Dibab a ra ar perc'henn ar re a c'hall heuliañ anezhi pe anezhañ.",
"account.media": "Media",
"account.mention": "Menegiñ @{name}",
- "account.moved_to": "Dilojet en·he deus {name} da:",
+ "account.moved_to": "Dilojet en·he deus {name} da :",
"account.mute": "Kuzhat @{name}",
- "account.mute_notifications": "Kuzh kemennoù a @{name}",
+ "account.mute_notifications": "Kuzh kemennoù eus @{name}",
"account.muted": "Kuzhet",
"account.never_active": "Birviken",
- "account.posts": "Toudoù",
+ "account.posts": "a doudoù",
"account.posts_with_replies": "Toudoù ha respontoù",
"account.report": "Disklêriañ @{name}",
- "account.requested": "Awaiting approval",
+ "account.requested": "O c'hortoz an asant. Klikit evit nullañ ar goulenn heuliañ",
"account.share": "Skignañ profil @{name}",
- "account.show_reblogs": "Diskouez toudoù a @{name}",
- "account.unblock": "Distankañ @{name}",
- "account.unblock_domain": "Diguzh {domain}",
- "account.unendorse": "Don't feature on profile",
+ "account.show_reblogs": "Diskouez skignadennoù @{name}",
+ "account.unblock": "Diverzañ @{name}",
+ "account.unblock_domain": "Diverzañ an domani {domain}",
+ "account.unendorse": "Paouez da lakaat war-wel war ar profil",
"account.unfollow": "Diheuliañ",
"account.unmute": "Diguzhat @{name}",
"account.unmute_notifications": "Diguzhat kemennoù a @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Klaskit en-dro a-benn {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Feur bevennet",
"alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.",
- "alert.unexpected.title": "C'hem !",
+ "alert.unexpected.title": "Hopala!",
+ "announcement.announcement": "Kemenn",
"autosuggest_hashtag.per_week": "{count} bep sizhun",
- "boost_modal.combo": "You can press {combo} to skip this next time",
- "bundle_column_error.body": "Something went wrong while loading this component.",
- "bundle_column_error.retry": "Klask endro",
+ "boost_modal.combo": "Ar wezh kentañ e c'halliot gwaskañ war {combo} evit tremen hebiou",
+ "bundle_column_error.body": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.",
+ "bundle_column_error.retry": "Klask en-dro",
"bundle_column_error.title": "Fazi rouedad",
"bundle_modal_error.close": "Serriñ",
- "bundle_modal_error.message": "Something went wrong while loading this component.",
- "bundle_modal_error.retry": "Klask endro",
- "column.blocks": "Implijour·ezed·ion stanket",
+ "bundle_modal_error.message": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.",
+ "bundle_modal_error.retry": "Klask en-dro",
+ "column.blocks": "Implijer·ezed·ien berzet",
+ "column.bookmarks": "Sinedoù",
"column.community": "Red-amzer lec'hel",
"column.direct": "Kemennadoù prevez",
"column.directory": "Mont a-dreuz ar profiloù",
- "column.domain_blocks": "Domani kuzhet",
- "column.favourites": "Favourites",
- "column.follow_requests": "Follow requests",
- "column.home": "Home",
- "column.lists": "Lists",
- "column.mutes": "Muted users",
- "column.notifications": "Notifications",
- "column.pins": "Pinned toot",
- "column.public": "Federated timeline",
- "column_back_button.label": "Back",
- "column_header.hide_settings": "Hide settings",
- "column_header.moveLeft_settings": "Move column to the left",
- "column_header.moveRight_settings": "Move column to the right",
- "column_header.pin": "Pin",
- "column_header.show_settings": "Show settings",
- "column_header.unpin": "Unpin",
- "column_subheading.settings": "Settings",
- "community.column_settings.media_only": "Media only",
- "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
- "compose_form.direct_message_warning_learn_more": "Learn more",
- "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
- "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
- "compose_form.lock_disclaimer.lock": "locked",
- "compose_form.placeholder": "What is on your mind?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
- "compose_form.publish": "Toot",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
- "compose_form.spoiler.marked": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
- "compose_form.spoiler_placeholder": "Write your warning here",
- "confirmation_modal.cancel": "Cancel",
- "confirmations.block.block_and_report": "Block & Report",
- "confirmations.block.confirm": "Block",
- "confirmations.block.message": "Are you sure you want to block {name}?",
- "confirmations.delete.confirm": "Delete",
- "confirmations.delete.message": "Are you sure you want to delete this status?",
- "confirmations.delete_list.confirm": "Delete",
- "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
- "confirmations.domain_block.confirm": "Hide entire domain",
- "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
- "confirmations.mute.confirm": "Mute",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
- "confirmations.mute.message": "Are you sure you want to mute {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
- "confirmations.unfollow.confirm": "Unfollow",
- "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
- "embed.instructions": "Embed this status on your website by copying the code below.",
- "embed.preview": "Here is what it will look like:",
- "emoji_button.activity": "Activity",
- "emoji_button.custom": "Custom",
- "emoji_button.flags": "Flags",
- "emoji_button.food": "Food & Drink",
- "emoji_button.label": "Insert emoji",
- "emoji_button.nature": "Nature",
- "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
- "emoji_button.objects": "Objects",
- "emoji_button.people": "People",
- "emoji_button.recent": "Frequently used",
- "emoji_button.search": "Search...",
- "emoji_button.search_results": "Search results",
- "emoji_button.symbols": "Symbols",
- "emoji_button.travel": "Travel & Places",
- "empty_column.account_timeline": "No toots here!",
- "empty_column.account_unavailable": "Profile unavailable",
- "empty_column.blocks": "You haven't blocked any users yet.",
- "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
- "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
- "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
- "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
- "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
- "empty_column.hashtag": "There is nothing in this hashtag yet.",
- "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
- "empty_column.home.public_timeline": "the public timeline",
- "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
- "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
- "empty_column.mutes": "You haven't muted any users yet.",
- "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
- "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
- "follow_request.authorize": "Authorize",
- "follow_request.reject": "Reject",
- "getting_started.developers": "Developers",
- "getting_started.directory": "Profile directory",
- "getting_started.documentation": "Documentation",
- "getting_started.heading": "Getting started",
- "getting_started.invite": "Invite people",
+ "column.domain_blocks": "Domani berzet",
+ "column.favourites": "Muiañ-karet",
+ "column.follow_requests": "Pedadoù heuliañ",
+ "column.home": "Degemer",
+ "column.lists": "Listennoù",
+ "column.mutes": "Implijer·ion·ezed kuzhet",
+ "column.notifications": "Kemennoù",
+ "column.pins": "Toudoù spilhennet",
+ "column.public": "Red-amzer kevreet",
+ "column_back_button.label": "Distro",
+ "column_header.hide_settings": "Kuzhat an arventennoù",
+ "column_header.moveLeft_settings": "Dilec'hiañ ar bannad a-gleiz",
+ "column_header.moveRight_settings": "Dilec'hiañ ar bannad a-zehou",
+ "column_header.pin": "Spilhennañ",
+ "column_header.show_settings": "Diskouez an arventennoù",
+ "column_header.unpin": "Dispilhennañ",
+ "column_subheading.settings": "Arventennoù",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "Nemet Mediaoù",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "An toud-mañ a vo kaset nemet d'an implijer·ezed·ien meneget.",
+ "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h",
+ "compose_form.hashtag_warning": "Ne vo ket lakaet an toud-mañ er rolloù gerioù-klik dre mard eo anlistennet. N'eus nemet an toudoù foran a c'hall bezañ klasket dre c'her-klik.",
+ "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal heuliañ ac'hanoc'h evit gwelout ho toudoù prevez.",
+ "compose_form.lock_disclaimer.lock": "prennet",
+ "compose_form.placeholder": "Petra eh oc'h é soñjal a-barzh ?",
+ "compose_form.poll.add_option": "Ouzhpenniñ un dibab",
+ "compose_form.poll.duration": "Pad ar sontadeg",
+ "compose_form.poll.option_placeholder": "Dibab {number}",
+ "compose_form.poll.remove_option": "Lemel an dibab-mañ",
+ "compose_form.poll.switch_to_multiple": "Kemmañ ar sontadeg evit aotren meur a zibab",
+ "compose_form.poll.switch_to_single": "Kemmañ ar sontadeg evit aotren un dibab hepken",
+ "compose_form.publish": "Toudañ",
+ "compose_form.publish_loud": "{publish} !",
+ "compose_form.sensitive.hide": "Merkañ ar media evel kizidik",
+ "compose_form.sensitive.marked": "Merket eo ar media evel kizidik",
+ "compose_form.sensitive.unmarked": "N'eo ket merket ar media evel kizidik",
+ "compose_form.spoiler.marked": "Kuzhet eo an destenn a-dreñv ur c'hemenn",
+ "compose_form.spoiler.unmarked": "N'eo ket kuzhet an destenn",
+ "compose_form.spoiler_placeholder": "Skrivit ho kemenn amañ",
+ "confirmation_modal.cancel": "Nullañ",
+ "confirmations.block.block_and_report": "Berzañ ha Disklêriañ",
+ "confirmations.block.confirm": "Stankañ",
+ "confirmations.block.message": "Ha sur oc'h e fell deoc'h stankañ {name} ?",
+ "confirmations.delete.confirm": "Dilemel",
+ "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel an toud-mañ ?",
+ "confirmations.delete_list.confirm": "Dilemel",
+ "confirmations.delete_list.message": "Ha sur eo hoc'h eus c'hoant da zilemel ar roll-mañ da vat ?",
+ "confirmations.domain_block.confirm": "Berzañ an domani a-bezh",
+ "confirmations.domain_block.message": "Ha sur oc'h e fell deoc'h berzañ an {domain} a-bezh? Peurvuiañ eo trawalc'h berzañ pe mudañ un nebeud implijer·ezed·ien. Ne welot danvez ebet o tont eus an domani-mañ. Dilamet e vo ar c'houmanantoù war an domani-mañ.",
+ "confirmations.logout.confirm": "Digevreañ",
+ "confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreañ ?",
+ "confirmations.mute.confirm": "Kuzhat",
+ "confirmations.mute.explanation": "Kuzhat a raio an toudoù skrivet gantañ·i hag ar re a veneg anezhañ·i, met aotren a raio anezhañ·i da welet ho todoù ha a heuliañ ac'hanoc'h.",
+ "confirmations.mute.message": "Ha sur oc'h e fell deoc'h kuzhaat {name} ?",
+ "confirmations.redraft.confirm": "Diverkañ ha skrivañ en-dro",
+ "confirmations.redraft.message": "Ha sur oc'h e fell deoc'h dilemel ar statud-mañ hag adlakaat anezhañ er bouilhoñs? Kollet e vo ar merkoù muiañ-karet hag ar skignadennoù hag emzivat e vo ar respontoù d'an toud orin.",
+ "confirmations.reply.confirm": "Respont",
+ "confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?",
+ "confirmations.unfollow.confirm": "Diheuliañ",
+ "confirmations.unfollow.message": "Ha sur oc'h e fell deoc'h paouez da heuliañ {name}?",
+ "conversation.delete": "Dilemel ar gaozeadenn",
+ "conversation.mark_as_read": "Merkañ evel lennet",
+ "conversation.open": "Gwelout ar gaozeadenn",
+ "conversation.with": "Gant {names}",
+ "directory.federated": "Eus ar c'hevrebed anavezet",
+ "directory.local": "Eus {domain} hepken",
+ "directory.new_arrivals": "Degouezhet a-nevez",
+ "directory.recently_active": "Oberiant nevez zo",
+ "embed.instructions": "Enkorfit ar statud war ho lec'hienn en ur eilañ ar c'hod dindan.",
+ "embed.preview": "Setu penaos e vo diskouezet:",
+ "emoji_button.activity": "Obererezh",
+ "emoji_button.custom": "Kempennet",
+ "emoji_button.flags": "Bannieloù",
+ "emoji_button.food": "Boued hag Evaj",
+ "emoji_button.label": "Enlakaat un emoji",
+ "emoji_button.nature": "Natur",
+ "emoji_button.not_found": "Emoji ebet !! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Traoù",
+ "emoji_button.people": "Tud",
+ "emoji_button.recent": "Implijet alies",
+ "emoji_button.search": "O klask...",
+ "emoji_button.search_results": "Disoc'hoù an enklask",
+ "emoji_button.symbols": "Arouezioù",
+ "emoji_button.travel": "Lec'hioù ha Beajoù",
+ "empty_column.account_timeline": "Toud ebet amañ!",
+ "empty_column.account_unavailable": "Profil dihegerz",
+ "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.",
+ "empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan ganeoc'h e teuio war wel amañ.",
+ "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !",
+ "empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.",
+ "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.",
+ "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo lakaet unan ganeoc'h e vo diskouezet amañ.",
+ "empty_column.favourites": "Den ebet n'eus lakaet an toud-mañ en e reoù muiañ-karet. Pa vo graet gant unan bennak e vo diskouezet amañ.",
+ "empty_column.follow_requests": "N'ho peus goulenn heuliañ ebet c'hoazh. Pa resevot reoù e vo diskouezet amañ.",
+ "empty_column.hashtag": "N'eus netra er ger-klik-mañ c'hoazh.",
+ "empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniñ {public} pe implijit ar c'hlask evit kregiñ ganti ha kejañ gant implijer·ien·ezed all.",
+ "empty_column.home.public_timeline": "ar red-amzer publik",
+ "empty_column.list": "Goullo eo ar roll-mañ evit ar poent. Pa vo toudet gant e izili e vo diskouezet amañ.",
+ "empty_column.lists": "N'ho peus roll ebet c'hoazh. Pa vo krouet unan ganeoc'h e vo diskouezet amañ.",
+ "empty_column.mutes": "N'ho peus kuzhet implijer ebet c'hoazh.",
+ "empty_column.notifications": "N'ho peus kemenn ebet c'hoazh. Grit gant implijer·ezed·ien all evit loc'hañ ar gomz.",
+ "empty_column.public": "N'eus netra amañ! Skrivit un dra bennak foran pe heuilhit implijer·ien·ezed eus dafariadoù all evit leuniañ",
+ "error.unexpected_crash.explanation": "Abalamour d'ur beug en hor c'hod pe d'ur gudenn geverlec'hded n'hallomp ket skrammañ ar bajenn-mañ en un doare dereat.",
+ "error.unexpected_crash.next_steps": "Klaskit azbevaat ar bajenn. Ma n'a ket en-dro e c'hallit klask ober gant Mastodon dre ur merdeer disheñvel pe dre an arload genidik.",
+ "errors.unexpected_crash.copy_stacktrace": "Eilañ ar roudoù diveugañ er golver",
+ "errors.unexpected_crash.report_issue": "Danevellañ ur fazi",
+ "follow_request.authorize": "Aotren",
+ "follow_request.reject": "Nac'hañ",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "Diorroerien",
+ "getting_started.directory": "Roll ar profiloù",
+ "getting_started.documentation": "Teuliadur",
+ "getting_started.heading": "Loc'hañ",
+ "getting_started.invite": "Pediñ tud",
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
- "home.column_settings.basic": "Basic",
- "home.column_settings.show_reblogs": "Show boosts",
- "home.column_settings.show_replies": "Show replies",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
- "introduction.federation.federated.headline": "Federated",
+ "getting_started.security": "Arventennoù ar gont",
+ "getting_started.terms": "Divizoù gwerzhañ hollek",
+ "hashtag.column_header.tag_mode.all": "ha {additional}",
+ "hashtag.column_header.tag_mode.any": "pe {additional}",
+ "hashtag.column_header.tag_mode.none": "hep {additional}",
+ "hashtag.column_settings.select.no_options_message": "N'eus bet kavet ali ebet",
+ "hashtag.column_settings.select.placeholder": "Ouzhpennañ gerioù-klik…",
+ "hashtag.column_settings.tag_mode.all": "An holl elfennoù-mañ",
+ "hashtag.column_settings.tag_mode.any": "Unan e mesk anezho",
+ "hashtag.column_settings.tag_mode.none": "Hini ebet anezho",
+ "hashtag.column_settings.tag_toggle": "Endelc'her gerioù-alc'hwez ouzhpenn evit ar bannad-mañ",
+ "home.column_settings.basic": "Diazez",
+ "home.column_settings.show_reblogs": "Diskouez ar skignadennoù",
+ "home.column_settings.show_replies": "Diskouez ar respontoù",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
+ "intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}",
+ "intervals.full.hours": "{number, plural, one {# eurvezh} other{# eurvezh}}",
+ "intervals.full.minutes": "{number, plural, one {# munut} other{# a vunutoù}}",
+ "introduction.federation.action": "Da-heul",
+ "introduction.federation.federated.headline": "Kevreet",
"introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
- "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.headline": "Degemer",
"introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
- "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.headline": "Lec'hel",
"introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
"introduction.interactions.action": "Finish toot-orial!",
- "introduction.interactions.favourite.headline": "Favourite",
+ "introduction.interactions.favourite.headline": "Muiañ-karet",
"introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
- "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.headline": "Skignañ",
"introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
- "introduction.interactions.reply.headline": "Reply",
+ "introduction.interactions.reply.headline": "Respont",
"introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "First steps",
+ "introduction.welcome.action": "Bec'h dezhi!",
+ "introduction.welcome.headline": "Pazennoù kentañ",
"introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
"keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.blocked": "to open blocked users list",
- "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.boost": "da skignañ",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
- "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.description": "Deskrivadur",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
@@ -219,190 +237,205 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
- "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.reply": "da respont",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
- "lightbox.close": "Close",
+ "lightbox.close": "Serriñ",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"lightbox.view_context": "View context",
- "lists.account.add": "Add to list",
- "lists.account.remove": "Remove from list",
- "lists.delete": "Delete list",
- "lists.edit": "Edit list",
- "lists.edit.submit": "Change title",
- "lists.new.create": "Add list",
- "lists.new.title_placeholder": "New list title",
+ "lists.account.add": "Ouzhpennañ d'al listenn",
+ "lists.account.remove": "Lemel kuit eus al listenn",
+ "lists.delete": "Dilemel al listenn",
+ "lists.edit": "Aozañ al listenn",
+ "lists.edit.submit": "Cheñch an titl",
+ "lists.new.create": "Ouzhpennañ ul listenn",
+ "lists.new.title_placeholder": "Titl nevez al listenn",
"lists.search": "Search among people you follow",
- "lists.subheading": "Your lists",
+ "lists.subheading": "Ho listennoù",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "Loading...",
+ "loading_indicator.label": "O kargañ...",
"media_gallery.toggle_visible": "Toggle visibility",
- "missing_indicator.label": "Not found",
+ "missing_indicator.label": "Digavet",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
- "navigation_bar.apps": "Mobile apps",
- "navigation_bar.blocks": "Blocked users",
- "navigation_bar.community_timeline": "Local timeline",
- "navigation_bar.compose": "Compose new toot",
- "navigation_bar.direct": "Direct messages",
- "navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "Edit profile",
- "navigation_bar.favourites": "Favourites",
- "navigation_bar.filters": "Muted words",
- "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.apps": "Arloadoù pellgomz",
+ "navigation_bar.blocks": "Implijer·ezed·ien berzet",
+ "navigation_bar.bookmarks": "Sinedoù",
+ "navigation_bar.community_timeline": "Red-amzer lec'hel",
+ "navigation_bar.compose": "Skrivañ un toud nevez",
+ "navigation_bar.direct": "Kemennadoù prevez",
+ "navigation_bar.discover": "Dizoleiñ",
+ "navigation_bar.domain_blocks": "Domanioù kuzhet",
+ "navigation_bar.edit_profile": "Aozañ ar profil",
+ "navigation_bar.favourites": "Ar re vuiañ-karet",
+ "navigation_bar.filters": "Gerioù kuzhet",
+ "navigation_bar.follow_requests": "Pedadoù heuliañ",
"navigation_bar.follows_and_followers": "Follows and followers",
- "navigation_bar.info": "About this server",
- "navigation_bar.keyboard_shortcuts": "Hotkeys",
- "navigation_bar.lists": "Lists",
- "navigation_bar.logout": "Logout",
- "navigation_bar.mutes": "Muted users",
- "navigation_bar.personal": "Personal",
- "navigation_bar.pins": "Pinned toots",
- "navigation_bar.preferences": "Preferences",
- "navigation_bar.public_timeline": "Federated timeline",
- "navigation_bar.security": "Security",
+ "navigation_bar.info": "Diwar-benn an dafariad-mañ",
+ "navigation_bar.keyboard_shortcuts": "Berradurioù",
+ "navigation_bar.lists": "Listennoù",
+ "navigation_bar.logout": "Digennaskañ",
+ "navigation_bar.mutes": "Implijer·ion·ezed kuzhet",
+ "navigation_bar.personal": "Personel",
+ "navigation_bar.pins": "Toudoù spilhennet",
+ "navigation_bar.preferences": "Gwellvezioù",
+ "navigation_bar.public_timeline": "Red-amzer kevreet",
+ "navigation_bar.security": "Diogelroez",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications",
- "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.favourite": "Ar re vuiañ-karet:",
"notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.filter_bar.category": "Barrenn siloù prim",
+ "notifications.column_settings.filter_bar.show": "Diskouez",
"notifications.column_settings.follow": "New followers:",
- "notifications.column_settings.mention": "Mentions:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.follow_request": "New follow requests:",
+ "notifications.column_settings.mention": "Menegoù:",
+ "notifications.column_settings.poll": "Disoc'hoù ar sontadeg:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.reblog": "Boosts:",
- "notifications.column_settings.show": "Show in column",
- "notifications.column_settings.sound": "Play sound",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Boosts",
- "notifications.filter.favourites": "Favourites",
+ "notifications.column_settings.reblog": "Skignadennoù:",
+ "notifications.column_settings.show": "Diskouez er bann",
+ "notifications.column_settings.sound": "Seniñ",
+ "notifications.filter.all": "Pep tra",
+ "notifications.filter.boosts": "Skignadennoù",
+ "notifications.filter.favourites": "Muiañ-karet",
"notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
- "notifications.group": "{count} notifications",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
+ "notifications.filter.mentions": "Menegoù",
+ "notifications.filter.polls": "Disoc'hoù ar sontadegoù",
+ "notifications.group": "{count} a gemennoù",
+ "poll.closed": "Serret",
+ "poll.refresh": "Azbevaat",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
- "privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "Post to public timelines",
- "privacy.public.short": "Public",
- "privacy.unlisted.long": "Do not show in public timelines",
- "privacy.unlisted.short": "Unlisted",
- "refresh": "Refresh",
- "regeneration_indicator.label": "Loading…",
- "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "poll.vote": "Mouezhiañ",
+ "poll.voted": "Mouezhiet ho peus evit ar respont-mañ",
+ "poll_button.add_poll": "Ouzhpennañ ur sontadeg",
+ "poll_button.remove_poll": "Dilemel ar sontadeg",
+ "privacy.change": "Kemmañ gwelidigezh ar statud",
+ "privacy.direct.long": "Embann evit an implijer·ezed·ien meneget hepken",
+ "privacy.direct.short": "War-eeun",
+ "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken",
+ "privacy.private.short": "Ar re a heuilh ac'hanon hepken",
+ "privacy.public.long": "Embann war ar redoù-amzer foran",
+ "privacy.public.short": "Publik",
+ "privacy.unlisted.long": "Na embann war ar redoù-amzer foran",
+ "privacy.unlisted.short": "Anlistennet",
+ "refresh": "Freskaat",
+ "regeneration_indicator.label": "O kargañ…",
+ "regeneration_indicator.sublabel": "War brientiñ emañ ho red degemer!",
"relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
- "relative_time.just_now": "now",
+ "relative_time.hours": "{number}e",
+ "relative_time.just_now": "bremañ",
"relative_time.minutes": "{number}m",
- "relative_time.seconds": "{number}s",
- "reply_indicator.cancel": "Cancel",
- "report.forward": "Forward to {target}",
+ "relative_time.seconds": "{number}eil",
+ "relative_time.today": "hiziv",
+ "reply_indicator.cancel": "Nullañ",
+ "report.forward": "Treuzkas da: {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
"report.placeholder": "Additional comments",
"report.submit": "Submit",
"report.target": "Report {target}",
- "search.placeholder": "Search",
+ "search.placeholder": "Klask",
"search_popout.search_format": "Advanced search format",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
- "search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "status",
+ "search_popout.tips.hashtag": "ger-klik",
+ "search_popout.tips.status": "statud",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
- "search_popout.tips.user": "user",
- "search_results.accounts": "People",
- "search_results.hashtags": "Hashtags",
- "search_results.statuses": "Toots",
+ "search_popout.tips.user": "implijer·ez",
+ "search_results.accounts": "Tud",
+ "search_results.hashtags": "Gerioù-klik",
+ "search_results.statuses": "a doudoù",
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Ouzhpennañ d'ar sinedoù",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
- "status.delete": "Delete",
+ "status.delete": "Dilemel",
"status.detailed_status": "Detailed conversation view",
- "status.direct": "Direct message @{name}",
- "status.embed": "Embed",
- "status.favourite": "Favourite",
+ "status.direct": "Kas ur c'hemennad da @{name}",
+ "status.embed": "Enframmañ",
+ "status.favourite": "Muiañ-karet",
"status.filtered": "Filtered",
- "status.load_more": "Load more",
- "status.media_hidden": "Media hidden",
- "status.mention": "Mention @{name}",
- "status.more": "More",
- "status.mute": "Mute @{name}",
- "status.mute_conversation": "Mute conversation",
+ "status.load_more": "Kargañ muioc'h",
+ "status.media_hidden": "Media kuzhet",
+ "status.mention": "Menegiñ @{name}",
+ "status.more": "Muioc'h",
+ "status.mute": "Kuzhat @{name}",
+ "status.mute_conversation": "Kuzhat ar gaozeadenn",
"status.open": "Expand this status",
- "status.pin": "Pin on profile",
- "status.pinned": "Pinned toot",
- "status.read_more": "Read more",
- "status.reblog": "Boost",
+ "status.pin": "Spilhennañ d'ar profil",
+ "status.pinned": "Toud spilhennet",
+ "status.read_more": "Lenn muioc'h",
+ "status.reblog": "Skignañ",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
- "status.reply": "Reply",
+ "status.remove_bookmark": "Remove bookmark",
+ "status.reply": "Respont",
"status.replyAll": "Reply to thread",
- "status.report": "Report @{name}",
+ "status.report": "Disklêriañ @{name}",
"status.sensitive_warning": "Sensitive content",
- "status.share": "Share",
+ "status.share": "Rannañ",
"status.show_less": "Show less",
"status.show_less_all": "Show less for all",
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
"status.show_thread": "Show thread",
"status.uncached_media_warning": "Not available",
- "status.unmute_conversation": "Unmute conversation",
- "status.unpin": "Unpin from profile",
+ "status.unmute_conversation": "Diguzhat ar gaozeadenn",
+ "status.unpin": "Dispilhennañ eus ar profil",
"suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "You might be interested in…",
"tabs_bar.federated_timeline": "Federated",
- "tabs_bar.home": "Home",
- "tabs_bar.local_timeline": "Local",
- "tabs_bar.notifications": "Notifications",
- "tabs_bar.search": "Search",
+ "tabs_bar.home": "Degemer",
+ "tabs_bar.local_timeline": "Lec'hel",
+ "tabs_bar.notifications": "Kemennoù",
+ "tabs_bar.search": "Klask",
"time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "trends.trending_now": "Trending now",
+ "trends.trending_now": "Luskad ar mare",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
+ "upload_button.label": "Ouzhpennañ ur media ({formats})",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
- "upload_form.edit": "Edit",
- "upload_form.undo": "Delete",
+ "upload_form.edit": "Aozañ",
+ "upload_form.undo": "Dilemel",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -410,8 +443,9 @@
"upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preview_label": "Preview ({ratio})",
- "upload_progress.label": "Uploading…",
+ "upload_progress.label": "O pellgargañ...",
"video.close": "Close video",
+ "video.download": "Pellgargañ ar restr",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 396e4a325..3ad7158fc 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -1,14 +1,18 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Afegir o Treure de les llistes",
"account.badges.bot": "Bot",
+ "account.badges.group": "Grup",
"account.block": "Bloqueja @{name}",
"account.block_domain": "Amaga-ho tot de {domain}",
"account.blocked": "Bloquejat",
+ "account.browse_more_on_origin_server": "Navega més en el perfil original",
"account.cancel_follow_request": "Anul·la la sol·licitud de seguiment",
"account.direct": "Missatge directe @{name}",
"account.domain_blocked": "Domini ocult",
- "account.edit_profile": "Editar el perfil",
- "account.endorse": "Recomanar en el teu perfil",
+ "account.edit_profile": "Edita el perfil",
+ "account.endorse": "Recomana en el teu perfil",
"account.follow": "Segueix",
"account.followers": "Seguidors",
"account.followers.empty": "Encara ningú no segueix aquest usuari.",
@@ -26,24 +30,29 @@
"account.mute_notifications": "Notificacions desactivades de @{name}",
"account.muted": "Silenciat",
"account.never_active": "Mai",
- "account.posts": "Toots",
- "account.posts_with_replies": "Toots i respostes",
- "account.report": "Informe @{name}",
+ "account.posts": "Tuts",
+ "account.posts_with_replies": "Tuts i respostes",
+ "account.report": "Informar sobre @{name}",
"account.requested": "Esperant aprovació. Clic per a cancel·lar la petició de seguiment",
"account.share": "Comparteix el perfil de @{name}",
"account.show_reblogs": "Mostra els impulsos de @{name}",
- "account.unblock": "Desbloca @{name}",
+ "account.unblock": "Desbloqueja @{name}",
"account.unblock_domain": "Mostra {domain}",
- "account.unendorse": "No es mostren al perfil",
+ "account.unendorse": "No recomanar en el perfil",
"account.unfollow": "Deixa de seguir",
"account.unmute": "Treure silenci de @{name}",
"account.unmute_notifications": "Activar notificacions de @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Si us plau torna-ho a provar després de {retry_time, time, medium}.",
"alert.rate_limited.title": "Límit de freqüència",
"alert.unexpected.message": "S'ha produït un error inesperat.",
"alert.unexpected.title": "Vaja!",
+ "announcement.announcement": "Anunci",
"autosuggest_hashtag.per_week": "{count} per setmana",
- "boost_modal.combo": "Pots premer {combo} per saltar-te això el proper cop",
+ "boost_modal.combo": "Pots prémer {combo} per saltar-te això el proper cop",
"bundle_column_error.body": "S'ha produït un error en carregar aquest component.",
"bundle_column_error.retry": "Torna-ho a provar",
"bundle_column_error.title": "Error de connexió",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "S'ha produït un error en carregar aquest component.",
"bundle_modal_error.retry": "Torna-ho a provar",
"column.blocks": "Usuaris bloquejats",
+ "column.bookmarks": "Marcadors",
"column.community": "Línia de temps local",
"column.direct": "Missatges directes",
"column.directory": "Navega els perfils",
@@ -61,7 +71,7 @@
"column.lists": "Llistes",
"column.mutes": "Usuaris silenciats",
"column.notifications": "Notificacions",
- "column.pins": "Toots fixats",
+ "column.pins": "Tuts fixats",
"column.public": "Línia de temps federada",
"column_back_button.label": "Enrere",
"column_header.hide_settings": "Amaga la configuració",
@@ -71,10 +81,12 @@
"column_header.show_settings": "Mostra la configuració",
"column_header.unpin": "No fixis",
"column_subheading.settings": "Configuració",
+ "community.column_settings.local_only": "Només local",
"community.column_settings.media_only": "Només multimèdia",
- "compose_form.direct_message_warning": "Aquest toot només serà enviat als usuaris esmentats.",
+ "community.column_settings.remote_only": "Només remot",
+ "compose_form.direct_message_warning": "Aquest tut només serà enviat als usuaris esmentats.",
"compose_form.direct_message_warning_learn_more": "Aprèn més",
- "compose_form.hashtag_warning": "Aquest toot no es mostrarà en cap etiqueta ja que no està llistat. Només els toots públics poden ser cercats per etiqueta.",
+ "compose_form.hashtag_warning": "Aquesta tut no es mostrarà en cap etiqueta ja que no està llistat. Només els tuts públics poden ser cercats per etiqueta.",
"compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges a seguidors.",
"compose_form.lock_disclaimer.lock": "bloquejat",
"compose_form.placeholder": "En què penses?",
@@ -82,7 +94,9 @@
"compose_form.poll.duration": "Durada de l'enquesta",
"compose_form.poll.option_placeholder": "Opció {number}",
"compose_form.poll.remove_option": "Elimina aquesta opció",
- "compose_form.publish": "Toot",
+ "compose_form.poll.switch_to_multiple": "Canvia l’enquesta per a permetre diverses opcions",
+ "compose_form.poll.switch_to_single": "Canvia l’enquesta per a permetre una única opció",
+ "compose_form.publish": "Tut",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Marcar mèdia com a sensible",
"compose_form.sensitive.marked": "Mèdia marcat com a sensible",
@@ -95,18 +109,18 @@
"confirmations.block.confirm": "Bloqueja",
"confirmations.block.message": "Estàs segur que vols bloquejar a {name}?",
"confirmations.delete.confirm": "Suprimeix",
- "confirmations.delete.message": "Estàs segur que vols suprimir aquest toot?",
+ "confirmations.delete.message": "Estàs segur que vols suprimir aquest tut?",
"confirmations.delete_list.confirm": "Suprimeix",
"confirmations.delete_list.message": "Estàs segur que vols suprimir permanentment aquesta llista?",
"confirmations.domain_block.confirm": "Amaga tot el domini",
- "confirmations.domain_block.message": "Estàs segur, realment segur que vols bloquejar totalment {domain}? En la majoria dels casos bloquejar o silenciar uns pocs objectius és suficient i preferible. No veuràs contingut d’aquest domini en cap de les línies públiques ni en les notificacions. Els teus seguidors d’aquest domini seran eliminats.",
+ "confirmations.domain_block.message": "Estàs segur, realment segur que vols bloquejar totalment {domain}? En la majoria dels casos bloquejar o silenciar uns pocs objectius és suficient i preferible. No veuràs contingut d’aquest domini en cap de les línies de temps ni en les notificacions. Els teus seguidors d’aquest domini seran eliminats.",
"confirmations.logout.confirm": "Tancar sessió",
"confirmations.logout.message": "Segur que vols tancar la sessió?",
"confirmations.mute.confirm": "Silencia",
"confirmations.mute.explanation": "Això amagarà les seves publicacions i les que els mencionen però encara els permetrà veure les teves i seguir-te.",
"confirmations.mute.message": "Estàs segur que vols silenciar {name}?",
"confirmations.redraft.confirm": "Esborrar i refer",
- "confirmations.redraft.message": "Estàs segur que vols esborrar aquest toot i tornar a redactar-lo? Perderàs totes els impulsos i favorits, i les respostes al toot original es quedaran orfes.",
+ "confirmations.redraft.message": "Estàs segur que vols esborrar aquest tut i tornar a redactar-lo? Perdràs tots els impulsos i favorits, i les respostes al tut original es quedaran orfes.",
"confirmations.reply.confirm": "Respon",
"confirmations.reply.message": "Responen ara es sobreescriurà el missatge que estàs editant. Estàs segur que vols continuar?",
"confirmations.unfollow.confirm": "Deixa de seguir",
@@ -119,8 +133,8 @@
"directory.local": "Només de {domain}",
"directory.new_arrivals": "Arribades noves",
"directory.recently_active": "Recentment actius",
- "embed.instructions": "Incrusta aquest toot al lloc web copiant el codi a continuació.",
- "embed.preview": "Aquí tenim quin aspecte tindrá:",
+ "embed.instructions": "Incrusta aquest tut al lloc web copiant el codi a continuació.",
+ "embed.preview": "Aquí tenim quin aspecte tindrà:",
"emoji_button.activity": "Activitat",
"emoji_button.custom": "Personalitzat",
"emoji_button.flags": "Banderes",
@@ -135,35 +149,37 @@
"emoji_button.search_results": "Resultats de la cerca",
"emoji_button.symbols": "Símbols",
"emoji_button.travel": "Viatges i Llocs",
- "empty_column.account_timeline": "No hi ha toots aquí!",
+ "empty_column.account_timeline": "No hi ha tuts aquí!",
"empty_column.account_unavailable": "Perfil no disponible",
"empty_column.blocks": "Encara no has bloquejat cap usuari.",
+ "empty_column.bookmarked_statuses": "Encara no tens marcat cap tut. Quan marquis un apareixerà aquí.",
"empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per a fer rodar la pilota!",
"empty_column.direct": "Encara no tens missatges directes. Quan enviïs o rebis un, es mostrarà aquí.",
"empty_column.domain_blocks": "Encara no hi ha dominis ocults.",
- "empty_column.favourited_statuses": "Encara no tens cap toot favorit. Quan en tinguis, apareixerà aquí.",
- "empty_column.favourites": "Encara ningú ha marcat aquest toot com a favorit. Quan algú ho faci, apareixera aquí.",
- "empty_column.follow_requests": "Encara no teniu cap petició de seguiment. Quan rebis una, apareixerà aquí.",
+ "empty_column.favourited_statuses": "Encara no has marcat com a favorit cap tut. Quan en facis, apareixerà aquí.",
+ "empty_column.favourites": "Ningú no ha marcat aquest tut com a preferit encara. Quan algú ho faci, apareixerà aquí.",
+ "empty_column.follow_requests": "Encara no tens cap petició de seguiment. Quan rebis una, apareixerà aquí.",
"empty_column.hashtag": "Encara no hi ha res en aquesta etiqueta.",
"empty_column.home": "Encara no segueixes ningú. Visita {public} o fes cerca per començar i conèixer altres usuaris.",
"empty_column.home.public_timeline": "la línia de temps pública",
- "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin nous toots, apareixeran aquí.",
+ "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin nous tuts, apareixeran aquí.",
"empty_column.lists": "Encara no tens cap llista. Quan en facis una, apareixerà aquí.",
"empty_column.mutes": "Encara no has silenciat cap usuari.",
"empty_column.notifications": "Encara no tens notificacions. Interactua amb altres per iniciar la conversa.",
"empty_column.public": "No hi ha res aquí! Escriu públicament alguna cosa o manualment segueix usuaris d'altres servidors per omplir-ho",
- "error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina no podria ser mostrada correctament.",
- "error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda encara pots ser capaç d'utilitzar Mastodont a través d'un navegador diferent o app nativa.",
+ "error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina podria no ser mostrada correctament.",
+ "error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda, encara podries ser capaç d'utilitzar Mastodon a través d'un navegador diferent o amb una app nativa.",
"errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace al porta-retalls",
"errors.unexpected_crash.report_issue": "Informa d'un problema",
"follow_request.authorize": "Autoritzar",
"follow_request.reject": "Rebutjar",
+ "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes de forma manual.",
"getting_started.developers": "Desenvolupadors",
"getting_started.directory": "Directori de perfils",
"getting_started.documentation": "Documentació",
"getting_started.heading": "Començant",
"getting_started.invite": "Convida gent",
- "getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir o informar de problemes a GitHub a {github}.",
+ "getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir-hi o informar de problemes a GitHub a {github}.",
"getting_started.security": "Seguretat",
"getting_started.terms": "Termes del servei",
"hashtag.column_header.tag_mode.all": "i {additional}",
@@ -176,8 +192,10 @@
"hashtag.column_settings.tag_mode.none": "Cap d’aquests",
"hashtag.column_settings.tag_toggle": "Inclou etiquetes addicionals per a aquesta columna",
"home.column_settings.basic": "Bàsic",
- "home.column_settings.show_reblogs": "Mostrar impulsos",
- "home.column_settings.show_replies": "Mostrar respostes",
+ "home.column_settings.show_reblogs": "Mostra els impulsos",
+ "home.column_settings.show_replies": "Mostra les respostes",
+ "home.hide_announcements": "Amaga els anuncis",
+ "home.show_announcements": "Mostra els anuncis",
"intervals.full.days": "{number, plural, one {# dia} other {# dies}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
"intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}",
@@ -190,27 +208,27 @@
"introduction.federation.local.text": "Les publicacions públiques de les persones del teu mateix servidor apareixeran a la línia de temps local.",
"introduction.interactions.action": "Finalitza el tutorial!",
"introduction.interactions.favourite.headline": "Favorit",
- "introduction.interactions.favourite.text": "Pots desar un toot per a més tard i deixar que l'autor sàpiga que t'ha agradat, marcant-lo com a favorit.",
+ "introduction.interactions.favourite.text": "Pots desar un tut per a més tard i deixar que l'autor sàpiga que t'ha agradat, marcant-lo com a favorit.",
"introduction.interactions.reblog.headline": "Impuls",
- "introduction.interactions.reblog.text": "Pots compartir amb els teus seguidors els toots d'altres usuaris, impulsant-los.",
+ "introduction.interactions.reblog.text": "Pots compartir amb els teus seguidors els tuts d'altres usuaris, impulsant-los.",
"introduction.interactions.reply.headline": "Respondre",
- "introduction.interactions.reply.text": "Pots respondre als toots d'altres persones i als teus propis, que els unirà en una conversa.",
+ "introduction.interactions.reply.text": "Pots respondre als tuts d'altres persones i als teus propis, que els unirà en una conversa.",
"introduction.welcome.action": "Som-hi!",
"introduction.welcome.headline": "Primers passos",
"introduction.welcome.text": "Benvingut al fedivers! En uns moments podràs emetre missatges i conversar amb els teus amics en una gran varietat de servidors. Però aquest servidor, {domain}, és especial: allotja el teu perfil així que recorda el seu nom.",
- "keyboard_shortcuts.back": "navegar enrera",
+ "keyboard_shortcuts.back": "navegar enrere",
"keyboard_shortcuts.blocked": "per obrir la llista d'usuaris bloquejats",
"keyboard_shortcuts.boost": "impulsar",
- "keyboard_shortcuts.column": "per a centrar un toot en una de les columnes",
- "keyboard_shortcuts.compose": "per centrar l'area de composició de text",
+ "keyboard_shortcuts.column": "per a centrar un tut en una de les columnes",
+ "keyboard_shortcuts.compose": "per centrar l'àrea de composició de text",
"keyboard_shortcuts.description": "Descripció",
"keyboard_shortcuts.direct": "per obrir la columna de missatges directes",
"keyboard_shortcuts.down": "per baixar en la llista",
- "keyboard_shortcuts.enter": "ampliar el toot",
+ "keyboard_shortcuts.enter": "per a obrir el tut",
"keyboard_shortcuts.favourite": "afavorir",
"keyboard_shortcuts.favourites": "per obrir la llista de favorits",
"keyboard_shortcuts.federated": "per obrir la línia de temps federada",
- "keyboard_shortcuts.heading": "Dreçeres de teclat",
+ "keyboard_shortcuts.heading": "Dreceres de teclat",
"keyboard_shortcuts.home": "per a obrir la línia de temps Inici",
"keyboard_shortcuts.hotkey": "Tecla d'accés directe",
"keyboard_shortcuts.legend": "per a mostrar aquesta llegenda",
@@ -219,16 +237,18 @@
"keyboard_shortcuts.muted": "per a obrir la llista d'usuaris silenciats",
"keyboard_shortcuts.my_profile": "per a obrir el teu perfil",
"keyboard_shortcuts.notifications": "per a obrir la columna de notificacions",
- "keyboard_shortcuts.pinned": "per a obrir la llista de toots fixats",
+ "keyboard_shortcuts.open_media": "obrir mèdia",
+ "keyboard_shortcuts.pinned": "per a obrir la llista de tuts fixats",
"keyboard_shortcuts.profile": "per a obrir el perfil de l'autor",
"keyboard_shortcuts.reply": "respondre",
"keyboard_shortcuts.requests": "per a obrir la llista de sol·licituds de seguiment",
"keyboard_shortcuts.search": "per a centrar la cerca",
+ "keyboard_shortcuts.spoilers": "mostrar/amagar el camp CW",
"keyboard_shortcuts.start": "per a obrir la columna \"Començar\"",
- "keyboard_shortcuts.toggle_hidden": "per a mostrar/amagar text sota CW",
- "keyboard_shortcuts.toggle_sensitivity": "per a mostrar/amagar mèdia",
- "keyboard_shortcuts.toot": "per a començar un toot nou de trinca",
- "keyboard_shortcuts.unfocus": "descentrar l'area de composició de text/cerca",
+ "keyboard_shortcuts.toggle_hidden": "per a mostrar o amagar text sota CW",
+ "keyboard_shortcuts.toggle_sensitivity": "per a mostrar o amagar contingut multimèdia",
+ "keyboard_shortcuts.toot": "per a començar un tut nou de trinca",
+ "keyboard_shortcuts.unfocus": "descentrar l'àrea de composició de text/cerca",
"keyboard_shortcuts.up": "moure amunt en la llista",
"lightbox.close": "Tancar",
"lightbox.next": "Següent",
@@ -251,13 +271,14 @@
"mute_modal.hide_notifications": "Amagar notificacions d'aquest usuari?",
"navigation_bar.apps": "Apps mòbils",
"navigation_bar.blocks": "Usuaris bloquejats",
+ "navigation_bar.bookmarks": "Marcadors",
"navigation_bar.community_timeline": "Línia de temps Local",
- "navigation_bar.compose": "Redacta nou toot",
+ "navigation_bar.compose": "Redacta un nou tut",
"navigation_bar.direct": "Missatges directes",
"navigation_bar.discover": "Descobreix",
"navigation_bar.domain_blocks": "Dominis ocults",
"navigation_bar.edit_profile": "Editar perfil",
- "navigation_bar.favourites": "Favorits",
+ "navigation_bar.favourites": "Preferits",
"navigation_bar.filters": "Paraules silenciades",
"navigation_bar.follow_requests": "Sol·licituds de seguiment",
"navigation_bar.follows_and_followers": "Seguits i seguidors",
@@ -267,29 +288,32 @@
"navigation_bar.logout": "Tancar sessió",
"navigation_bar.mutes": "Usuaris silenciats",
"navigation_bar.personal": "Personal",
- "navigation_bar.pins": "Toots fixats",
+ "navigation_bar.pins": "Tuts fixats",
"navigation_bar.preferences": "Preferències",
"navigation_bar.public_timeline": "Línia de temps federada",
"navigation_bar.security": "Seguretat",
"notification.favourite": "{name} ha afavorit el teu estat",
"notification.follow": "{name} et segueix",
+ "notification.follow_request": "{name} ha sol·licitat seguir-te",
"notification.mention": "{name} t'ha esmentat",
+ "notification.own_poll": "La teva enquesta ha finalitzat",
"notification.poll": "Ha finalitzat una enquesta en la que has votat",
"notification.reblog": "{name} ha impulsat el teu estat",
"notifications.clear": "Netejar notificacions",
- "notifications.clear_confirmation": "Estàs segur que vols esborrar permanenment totes les teves notificacions?",
+ "notifications.clear_confirmation": "Estàs segur que vols esborrar permanentment totes les teves notificacions?",
"notifications.column_settings.alert": "Notificacions d'escriptori",
- "notifications.column_settings.favourite": "Favorits:",
+ "notifications.column_settings.favourite": "Preferits:",
"notifications.column_settings.filter_bar.advanced": "Mostra totes les categories",
"notifications.column_settings.filter_bar.category": "Barra ràpida de filtres",
"notifications.column_settings.filter_bar.show": "Mostra",
"notifications.column_settings.follow": "Nous seguidors:",
+ "notifications.column_settings.follow_request": "Nova sol·licitud de seguiment:",
"notifications.column_settings.mention": "Mencions:",
"notifications.column_settings.poll": "Resultats de l’enquesta:",
"notifications.column_settings.push": "Notificacions push",
"notifications.column_settings.reblog": "Impulsos:",
- "notifications.column_settings.show": "Mostrar en la columna",
- "notifications.column_settings.sound": "Reproduïr so",
+ "notifications.column_settings.show": "Mostra en la columna",
+ "notifications.column_settings.sound": "Reproduir so",
"notifications.filter.all": "Tots",
"notifications.filter.boosts": "Impulsos",
"notifications.filter.favourites": "Favorits",
@@ -322,6 +346,7 @@
"relative_time.just_now": "ara",
"relative_time.minutes": "fa {number} minuts",
"relative_time.seconds": "fa {number} segons",
+ "relative_time.today": "avui",
"reply_indicator.cancel": "Cancel·lar",
"report.forward": "Reenvia a {target}",
"report.forward_hint": "Aquest compte és d'un altre servidor. Enviar-hi també una copia anònima del informe?",
@@ -331,22 +356,23 @@
"report.target": "Informes {target}",
"search.placeholder": "Cercar",
"search_popout.search_format": "Format de cerca avançada",
- "search_popout.tips.full_text": "Text simple recupera publicacions que has escrit, les marcades com a favorites, les impulsades o en les que has estat esmentat, així com usuaris, noms d'usuari i etiquetes.",
+ "search_popout.tips.full_text": "Text simple recupera publicacions que has escrit, les marcades com a preferides, les impulsades o en les que has estat esmentat, així com usuaris, noms d'usuari i etiquetes.",
"search_popout.tips.hashtag": "etiqueta",
- "search_popout.tips.status": "estat",
+ "search_popout.tips.status": "tut",
"search_popout.tips.text": "El text simple retorna coincidències amb els noms de visualització, els noms d'usuari i les etiquetes",
"search_popout.tips.user": "usuari",
"search_results.accounts": "Gent",
"search_results.hashtags": "Etiquetes",
- "search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "La cerca de toots pel seu contingut no està habilitada en aquest servidor Mastodon.",
+ "search_results.statuses": "Tuts",
+ "search_results.statuses_fts_disabled": "La cerca de tuts pel seu contingut no està habilitada en aquest servidor Mastodon.",
"search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
"status.admin_account": "Obre l'interfície de moderació per a @{name}",
- "status.admin_status": "Obre aquest toot a la interfície de moderació",
+ "status.admin_status": "Obre aquest tut a la interfície de moderació",
"status.block": "Bloqueja @{name}",
+ "status.bookmark": "Marcador",
"status.cancel_reblog_private": "Desfer l'impuls",
"status.cannot_reblog": "Aquesta publicació no pot ser impulsada",
- "status.copy": "Copia l'enllaç al toot",
+ "status.copy": "Copia l'enllaç a l'estat",
"status.delete": "Esborrar",
"status.detailed_status": "Visualització detallada de la conversa",
"status.direct": "Missatge directe @{name}",
@@ -361,13 +387,14 @@
"status.mute_conversation": "Silenciar conversació",
"status.open": "Ampliar aquest estat",
"status.pin": "Fixat en el perfil",
- "status.pinned": "Toot fixat",
+ "status.pinned": "Tut fixat",
"status.read_more": "Llegir més",
"status.reblog": "Impuls",
"status.reblog_private": "Impulsar a l'audiència original",
"status.reblogged_by": "{name} ha impulsat",
- "status.reblogs.empty": "Encara ningú no ha impulsat aquest toot. Quan algú ho faci, apareixeran aquí.",
+ "status.reblogs.empty": "Encara ningú no ha impulsat aquest tut. Quan algú ho faci, apareixeran aquí.",
"status.redraft": "Esborrar i reescriure",
+ "status.remove_bookmark": "Suprimeix el marcador",
"status.reply": "Respondre",
"status.replyAll": "Respondre al tema",
"status.report": "Informar sobre @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minut} other {# minuts}} restants",
"time_remaining.moments": "Moments restants",
"time_remaining.seconds": "{number, plural, one {# segon} other {# segons}} restants",
+ "timeline_hint.remote_resource_not_displayed": "{resource} dels altres servidors no son mostrats.",
+ "timeline_hint.resources.followers": "Seguidors",
+ "timeline_hint.resources.follows": "Seguiments",
+ "timeline_hint.resources.statuses": "Tuts més antics",
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {persones}} parlant-hi",
"trends.trending_now": "Ara en tendència",
"ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Afegir multimèdia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "S'ha superat el límit de càrrega d'arxius.",
"upload_error.poll": "No es permet l'enviament de fitxers en les enquestes.",
+ "upload_form.audio_description": "Descriviu per a les persones amb pèrdua auditiva",
"upload_form.description": "Descriure els problemes visuals",
"upload_form.edit": "Edita",
"upload_form.undo": "Esborra",
+ "upload_form.video_description": "Descriu per a les persones amb pèrdua auditiva o deficiència visual",
"upload_modal.analyzing_picture": "Analitzant imatge…",
"upload_modal.apply": "Aplica",
"upload_modal.description_placeholder": "Uns salts ràpids de guineu marró sobre el gos gandul",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Previsualitza ({ratio})",
"upload_progress.label": "Pujant...",
"video.close": "Tancar el vídeo",
+ "video.download": "Descarrega l’arxiu",
"video.exit_fullscreen": "Sortir de pantalla completa",
"video.expand": "Ampliar el vídeo",
"video.fullscreen": "Pantalla completa",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 6c680f13f..93c26a19c 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Aghjunghje o toglie da e liste",
"account.badges.bot": "Bot",
+ "account.badges.group": "Gruppu",
"account.block": "Bluccà @{name}",
- "account.block_domain": "Piattà tuttu da {domain}",
+ "account.block_domain": "Piattà u duminiu {domain}",
"account.blocked": "Bluccatu",
+ "account.browse_more_on_origin_server": "Vede di più nant'à u prufile uriginale",
"account.cancel_follow_request": "Annullà a dumanda d'abbunamentu",
"account.direct": "Missaghju direttu @{name}",
"account.domain_blocked": "Duminiu piattatu",
@@ -38,10 +42,15 @@
"account.unfollow": "Ùn siguità più",
"account.unmute": "Ùn piattà più @{name}",
"account.unmute_notifications": "Ùn piattà più nutificazione da @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Pruvate ancu dop'à {retry_time, time, medium}.",
"alert.rate_limited.title": "Ghjettu limitatu",
"alert.unexpected.message": "Un prublemu inaspettatu hè accadutu.",
"alert.unexpected.title": "Uups!",
+ "announcement.announcement": "Annunziu",
"autosuggest_hashtag.per_week": "{count} per settimana",
"boost_modal.combo": "Pudete appughjà nant'à {combo} per saltà quessa a prussima volta",
"bundle_column_error.body": "C'hè statu un prublemu caricandu st'elementu.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "C'hè statu un prublemu caricandu st'elementu.",
"bundle_modal_error.retry": "Pruvà torna",
"column.blocks": "Utilizatori bluccati",
+ "column.bookmarks": "Segnalibri",
"column.community": "Linea pubblica lucale",
"column.direct": "Missaghji diretti",
"column.directory": "Percorre i prufili",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Mustrà i parametri",
"column_header.unpin": "Spuntarulà",
"column_subheading.settings": "Parametri",
+ "community.column_settings.local_only": "Solu lucale",
"community.column_settings.media_only": "Solu media",
+ "community.column_settings.remote_only": "Solu distante",
"compose_form.direct_message_warning": "Solu l'utilizatori mintuvati puderenu vede stu statutu.",
"compose_form.direct_message_warning_learn_more": "Amparà di più",
"compose_form.hashtag_warning": "Stu statutu ùn hè \"Micca listatu\" è ùn sarà micca listatu indè e circate da hashtag. Per esse vistu in quesse, u statutu deve esse \"Pubblicu\".",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Durata di u scandagliu",
"compose_form.poll.option_placeholder": "Scelta {number}",
"compose_form.poll.remove_option": "Toglie sta scelta",
+ "compose_form.poll.switch_to_multiple": "Cambià u scandagliu per accittà parechje scelte",
+ "compose_form.poll.switch_to_single": "Cambià u scandagliu per ùn accittà ch'una scelta",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Indicà u media cum'è sensibile",
@@ -95,15 +109,15 @@
"confirmations.block.confirm": "Bluccà",
"confirmations.block.message": "Site sicuru·a che vulete bluccà @{name}?",
"confirmations.delete.confirm": "Toglie",
- "confirmations.delete.message": "Site sicuru·a che vulete supprime stu statutu?",
+ "confirmations.delete.message": "Site sicuru·a che vulete sguassà stu statutu?",
"confirmations.delete_list.confirm": "Toglie",
- "confirmations.delete_list.message": "Site sicuru·a che vulete supprime sta lista?",
+ "confirmations.delete_list.message": "Site sicuru·a che vulete toglie sta lista?",
"confirmations.domain_block.confirm": "Piattà tuttu u duminiu",
- "confirmations.domain_block.message": "Site sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà. Ùn viderete più nunda da quallà indè e linee pubbliche o e nutificazione. I vostri abbunati da stu duminiu saranu tolti.",
+ "confirmations.domain_block.message": "Site veramente sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà. Ùn viderete più nunda da quallà indè e linee pubbliche o e nutificazione. I vostri abbunati da stu duminiu saranu tolti.",
"confirmations.logout.confirm": "Scunnettassi",
"confirmations.logout.message": "Site sicuru·a che vulete scunnettà vi?",
"confirmations.mute.confirm": "Piattà",
- "confirmations.mute.explanation": "Quessu hà da piattà i statuti da sta persona è i posti chì a mintuvanu, mà ellu·a puderà sempre vede i vostri statuti è siguità vi.",
+ "confirmations.mute.explanation": "Quessu hà da piattà i statuti da sta persona è i posti chì a mintuvanu, ma ellu·a puderà sempre vede i vostri statuti è siguità vi.",
"confirmations.mute.message": "Site sicuru·a che vulete piattà @{name}?",
"confirmations.redraft.confirm": "Sguassà è riscrive",
"confirmations.redraft.message": "Site sicuru·a chè vulete sguassà stu statutu è riscrivelu? I favuriti è spartere saranu persi, è e risposte diventeranu orfane.",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Nisun statutu quì!",
"empty_column.account_unavailable": "Prufile micca dispunibule",
"empty_column.blocks": "Per avà ùn avete bluccatu manc'un utilizatore.",
+ "empty_column.bookmarked_statuses": "Ùn avete manc'un segnalibru. Quandu aghjunghjerate unu, sarà mustratu quì.",
"empty_column.community": "Ùn c'hè nunda indè a linea lucale. Scrivete puru qualcosa!",
"empty_column.direct": "Ùn avete ancu nisun missaghju direttu. S'è voi mandate o ricevete unu, u vidarete quì.",
"empty_column.domain_blocks": "Ùn c'hè manc'un duminiu bluccatu avà.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Palisà prublemu",
"follow_request.authorize": "Auturizà",
"follow_request.reject": "Righjittà",
+ "follow_requests.unlocked_explanation": "U vostru contu ùn hè micca privatu, ma a squadra d'amministrazione di {domain} pensa chì e dumande d'abbunamentu di questi conti anu bisognu d'esse verificate manualmente.",
"getting_started.developers": "Sviluppatori",
"getting_started.directory": "Annuariu di i prufili",
"getting_started.documentation": "Ducumentazione",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Bàsichi",
"home.column_settings.show_reblogs": "Vede e spartere",
"home.column_settings.show_replies": "Vede e risposte",
+ "home.hide_announcements": "Piattà annunzii",
+ "home.show_announcements": "Vede annunzii",
"intervals.full.days": "{number, plural, one {# ghjornu} other {# ghjorni}}",
"intervals.full.hours": "{number, plural, one {# ora} other {# ore}}",
"intervals.full.minutes": "{number, plural, one {# minuta} other {# minute}}",
@@ -197,7 +215,7 @@
"introduction.interactions.reply.text": "Pudete risponde à d'altre persone o a i vostri propii statuti, cio chì i ligarà indè una cunversazione.",
"introduction.welcome.action": "Andemu!",
"introduction.welcome.headline": "Primi passi",
- "introduction.welcome.text": "Benvenutu·a indè u fediverse! In qualchi minuta, puderete diffonde missaghji è parlà à i vostri amichi nant'à una varietà maiò di servori. Mà quess'istanza, {domain}, hè speciale—ghjè induve hè uspitatu u vostru prufile, allora ricurdatevi di u so nome.",
+ "introduction.welcome.text": "Benvenutu·a indè u fediverse! In qualchi minuta, puderete diffonde missaghji è parlà à i vostri amichi nant'à una varietà maiò di servori. Ma quess'istanza, {domain}, hè speciale—ghjè induve hè uspitatu u vostru prufile, allora ricurdatevi di u so nome.",
"keyboard_shortcuts.back": "rivultà",
"keyboard_shortcuts.blocked": "per apre una lista d'utilizatori bluccati",
"keyboard_shortcuts.boost": "sparte",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "per apre a lista di l'utilizatori piattati",
"keyboard_shortcuts.my_profile": "per apre u vostru prufile",
"keyboard_shortcuts.notifications": "per apre a culonna di nutificazione",
+ "keyboard_shortcuts.open_media": "per apre i media",
"keyboard_shortcuts.pinned": "per apre a lista di statuti puntarulati",
"keyboard_shortcuts.profile": "per apre u prufile di l'autore",
"keyboard_shortcuts.reply": "risponde",
"keyboard_shortcuts.requests": "per apre a lista di dumande d'abbunamentu",
"keyboard_shortcuts.search": "fucalizà nant'à l'area di circata",
+ "keyboard_shortcuts.spoilers": "per mustrà/piattà u campu CW",
"keyboard_shortcuts.start": "per apre a culonna \"per principià\"",
"keyboard_shortcuts.toggle_hidden": "vede/piattà u testu daretu à l'avertimentu CW",
"keyboard_shortcuts.toggle_sensitivity": "vede/piattà i media",
@@ -236,7 +256,7 @@
"lightbox.view_context": "Vede u cuntestu",
"lists.account.add": "Aghjunghje à a lista",
"lists.account.remove": "Toglie di a lista",
- "lists.delete": "Supprime a lista",
+ "lists.delete": "Toglie a lista",
"lists.edit": "Mudificà a lista",
"lists.edit.submit": "Cambià u titulu",
"lists.new.create": "Aghjunghje",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Piattà nutificazione da st'utilizatore?",
"navigation_bar.apps": "Applicazione per u telefuninu",
"navigation_bar.blocks": "Utilizatori bluccati",
+ "navigation_bar.bookmarks": "Segnalibri",
"navigation_bar.community_timeline": "Linea pubblica lucale",
"navigation_bar.compose": "Scrive un novu statutu",
"navigation_bar.direct": "Missaghji diretti",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Sicurità",
"notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti",
"notification.follow": "{name} v'hà seguitatu",
+ "notification.follow_request": "{name} vole abbunassi à u vostru contu",
"notification.mention": "{name} v'hà mintuvatu",
+ "notification.own_poll": "U vostru scandagliu hè compiu",
"notification.poll": "Un scandagliu induve avete vutatu hè finitu",
"notification.reblog": "{name} hà spartutu u vostru statutu",
"notifications.clear": "Purgà e nutificazione",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Barra di ricerca pronta",
"notifications.column_settings.filter_bar.show": "Mustrà",
"notifications.column_settings.follow": "Abbunati novi:",
+ "notifications.column_settings.follow_request": "Nove dumande d'abbunamentu:",
"notifications.column_settings.mention": "Minzione:",
"notifications.column_settings.poll": "Risultati:",
"notifications.column_settings.push": "Nutificazione Push",
@@ -322,6 +346,7 @@
"relative_time.just_now": "avà",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "oghji",
"reply_indicator.cancel": "Annullà",
"report.forward": "Trasferisce à {target}",
"report.forward_hint": "U contu hè nant'à un'altru servore. Vulete ancu mandà una copia anonima di u signalamentu quallà?",
@@ -344,6 +369,7 @@
"status.admin_account": "Apre l'interfaccia di muderazione per @{name}",
"status.admin_status": "Apre stu statutu in l'interfaccia di muderazione",
"status.block": "Bluccà @{name}",
+ "status.bookmark": "Segnalibru",
"status.cancel_reblog_private": "Ùn sparte più",
"status.cannot_reblog": "Stu statutu ùn pò micca esse spartutu",
"status.copy": "Cupià ligame indè u statutu",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} hà spartutu",
"status.reblogs.empty": "Per avà nisunu hà spartutu u statutu. Quandu qualch'unu u sparterà, u so contu sarà mustratu quì.",
"status.redraft": "Sguassà è riscrive",
+ "status.remove_bookmark": "Toglie segnalibru",
"status.reply": "Risponde",
"status.replyAll": "Risponde à tutti",
"status.report": "Palisà @{name}",
@@ -393,16 +420,22 @@
"time_remaining.minutes": "{number, plural, one {# minuta ferma} other {# minute fermanu}} left",
"time_remaining.moments": "Ci fermanu qualchi mumentu",
"time_remaining.seconds": "{number, plural, one {# siconda ferma} other {# siconde fermanu}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} da l'altri servori ùn so micca affissati·e.",
+ "timeline_hint.resources.followers": "Abbunati",
+ "timeline_hint.resources.follows": "Abbunamenti",
+ "timeline_hint.resources.statuses": "Statuti più anziani",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} parlanu",
"trends.trending_now": "Tindenze d'avà",
"ui.beforeunload": "A bruttacopia sarà persa s'ellu hè chjosu Mastodon.",
"upload_area.title": "Drag & drop per caricà un fugliale",
- "upload_button.label": "Aghjunghje un media (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_button.label": "Aghjunghje un media ({formats})",
"upload_error.limit": "Limita di caricamentu di fugliali trapassata.",
"upload_error.poll": "Ùn si pò micca caricà fugliali cù i scandagli.",
+ "upload_form.audio_description": "Discrizzione per i ciochi",
"upload_form.description": "Discrive per i malvistosi",
"upload_form.edit": "Mudificà",
"upload_form.undo": "Sguassà",
+ "upload_form.video_description": "Discrizzione per i ciochi o cechi",
"upload_modal.analyzing_picture": "Analisi di u ritrattu…",
"upload_modal.apply": "Affettà",
"upload_modal.description_placeholder": "Chì tempi brevi ziu, quandu solfeghji",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Vista ({ratio})",
"upload_progress.label": "Caricamentu...",
"video.close": "Chjudà a video",
+ "video.download": "Scaricà fugliale",
"video.exit_fullscreen": "Caccià u pienu screnu",
"video.expand": "Ingrandà a video",
"video.fullscreen": "Pienu screnu",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index fc807d45e..593311167 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -1,14 +1,18 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Přidat nebo odstranit ze seznamů",
"account.badges.bot": "Robot",
+ "account.badges.group": "Skupina",
"account.block": "Zablokovat uživatele @{name}",
- "account.block_domain": "Skrýt vše z {domain}",
- "account.blocked": "Blokován/a",
- "account.cancel_follow_request": "Zrušit požadavek o sledování",
- "account.direct": "Poslat přímou zprávu uživateli @{name}",
+ "account.block_domain": "Skrýt vše ze serveru {domain}",
+ "account.blocked": "Blokováno",
+ "account.browse_more_on_origin_server": "Více na původním profilu",
+ "account.cancel_follow_request": "Zrušit žádost o sledování",
+ "account.direct": "Poslat uživateli @{name} přímou zprávu",
"account.domain_blocked": "Doména skryta",
"account.edit_profile": "Upravit profil",
- "account.endorse": "Představit na profilu",
+ "account.endorse": "Zvýraznit na profilu",
"account.follow": "Sledovat",
"account.followers": "Sledující",
"account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.",
@@ -21,42 +25,48 @@
"account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.",
"account.media": "Média",
"account.mention": "Zmínit uživatele @{name}",
- "account.moved_to": "{name} se přesunul/a na:",
+ "account.moved_to": "Uživatel {name} se přesunul na:",
"account.mute": "Skrýt uživatele @{name}",
"account.mute_notifications": "Skrýt oznámení od uživatele @{name}",
- "account.muted": "Skryt/a",
+ "account.muted": "Uživatel skryt",
"account.never_active": "Nikdy",
"account.posts": "Tooty",
"account.posts_with_replies": "Tooty a odpovědi",
"account.report": "Nahlásit uživatele @{name}",
- "account.requested": "Čekám na schválení. Kliknutím zrušíte požadavek o sledování",
+ "account.requested": "Čeká na schválení. Kliknutím žádost o sledování zrušíte",
"account.share": "Sdílet profil uživatele @{name}",
"account.show_reblogs": "Zobrazit boosty od uživatele @{name}",
"account.unblock": "Odblokovat uživatele @{name}",
"account.unblock_domain": "Odkrýt doménu {domain}",
- "account.unendorse": "Nepředstavit na profilu",
+ "account.unendorse": "Nezvýrazňovat na profilu",
"account.unfollow": "Přestat sledovat",
"account.unmute": "Odkrýt uživatele @{name}",
"account.unmute_notifications": "Odkrýt oznámení od uživatele @{name}",
- "alert.rate_limited.message": "Prosím zkuste to znovu za {retry_time, time, medium}.",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Zkuste to prosím znovu za {retry_time, time, medium}.",
"alert.rate_limited.title": "Rychlost omezena",
"alert.unexpected.message": "Objevila se neočekávaná chyba.",
"alert.unexpected.title": "Jejda!",
+ "announcement.announcement": "Oznámení",
"autosuggest_hashtag.per_week": "{count} za týden",
"boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}",
- "bundle_column_error.body": "Při načítání tohoto komponentu se něco pokazilo.",
+ "bundle_column_error.body": "Při načítání této komponenty se něco pokazilo.",
"bundle_column_error.retry": "Zkuste to znovu",
"bundle_column_error.title": "Chyba sítě",
"bundle_modal_error.close": "Zavřít",
- "bundle_modal_error.message": "Při načítání tohoto komponentu se něco pokazilo.",
+ "bundle_modal_error.message": "Při načítání této komponenty se něco pokazilo.",
"bundle_modal_error.retry": "Zkusit znovu",
"column.blocks": "Blokovaní uživatelé",
+ "column.bookmarks": "Záložky",
"column.community": "Místní časová osa",
"column.direct": "Přímé zprávy",
"column.directory": "Prozkoumat profily",
"column.domain_blocks": "Skryté domény",
"column.favourites": "Oblíbené",
- "column.follow_requests": "Požadavky o sledování",
+ "column.follow_requests": "Žádosti o sledování",
"column.home": "Domů",
"column.lists": "Seznamy",
"column.mutes": "Skrytí uživatelé",
@@ -71,17 +81,21 @@
"column_header.show_settings": "Zobrazit nastavení",
"column_header.unpin": "Odepnout",
"column_subheading.settings": "Nastavení",
+ "community.column_settings.local_only": "Pouze místní",
"community.column_settings.media_only": "Pouze média",
+ "community.column_settings.remote_only": "Pouze vzdálené",
"compose_form.direct_message_warning": "Tento toot bude odeslán pouze zmíněným uživatelům.",
"compose_form.direct_message_warning_learn_more": "Zjistit více",
"compose_form.hashtag_warning": "Tento toot nebude zobrazen pod žádným hashtagem, neboť je neuvedený. Pouze veřejné tooty mohou být vyhledány podle hashtagu.",
- "compose_form.lock_disclaimer": "Váš účet není {locked}. Kdokoliv vás může sledovat a vidět vaše příspěvky pouze pro sledující.",
+ "compose_form.lock_disclaimer": "Váš účet není {locked}. Kdokoliv vás může sledovat a vidět vaše příspěvky učené pouze pro sledující.",
"compose_form.lock_disclaimer.lock": "uzamčen",
"compose_form.placeholder": "Co se vám honí hlavou?",
"compose_form.poll.add_option": "Přidat volbu",
- "compose_form.poll.duration": "Délka ankety",
+ "compose_form.poll.duration": "Doba trvání ankety",
"compose_form.poll.option_placeholder": "Volba {number}",
"compose_form.poll.remove_option": "Odstranit tuto volbu",
+ "compose_form.poll.switch_to_multiple": "Povolit u ankety výběr více možností",
+ "compose_form.poll.switch_to_single": "Povolit u ankety výběr jediné možnosti",
"compose_form.publish": "Tootnout",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Označit média jako citlivá",
@@ -93,30 +107,30 @@
"confirmation_modal.cancel": "Zrušit",
"confirmations.block.block_and_report": "Blokovat a nahlásit",
"confirmations.block.confirm": "Blokovat",
- "confirmations.block.message": "Jste si jistý/á, že chcete zablokovat uživatele {name}?",
+ "confirmations.block.message": "Opravdu chcete zablokovat uživatele {name}?",
"confirmations.delete.confirm": "Smazat",
- "confirmations.delete.message": "Jste si jistý/á, že chcete smazat tento toot?",
+ "confirmations.delete.message": "Opravdu chcete smazat tento toot?",
"confirmations.delete_list.confirm": "Smazat",
- "confirmations.delete_list.message": "Jste si jistý/á, že chcete tento seznam navždy smazat?",
+ "confirmations.delete_list.message": "Opravdu chcete tento seznam navždy smazat?",
"confirmations.domain_block.confirm": "Skrýt celou doménu",
- "confirmations.domain_block.message": "Jste si opravdu, opravdu jistý/á, že chcete blokovat celou doménu {domain}? Ve většině případů stačí zablokovat nebo skrýt pár konkrétních uživatelů, což se doporučuje. Z této domény neuvidíte obsah v žádné veřejné časové ose ani v oznámeních. Vaši sledující z této domény budou odstraněni.",
+ "confirmations.domain_block.message": "Opravdu chcete blokovat celou doménu {domain}? Ve většině případů stačí zablokovat nebo skrýt pár konkrétních uživatelů, což také doporučujeme. Z této domény neuvidíte obsah v žádné veřejné časové ose ani v oznámeních. Vaši sledující z této domény budou odstraněni.",
"confirmations.logout.confirm": "Odhlásit",
- "confirmations.logout.message": "Jste si jistý/á, že se chcete odhlásit?",
+ "confirmations.logout.message": "Opravdu se chcete odhlásit?",
"confirmations.mute.confirm": "Skrýt",
- "confirmations.mute.explanation": "Tohle skryje jeho příspěvky a příspěvky, které ho zmiňují, ale uživatel pořád bude moci vidět vaše příspěvky a sledovat vás.",
- "confirmations.mute.message": "Jste si jistý/á, že chcete skrýt uživatele {name}?",
+ "confirmations.mute.explanation": "Tohle skryje uživatelovi příspěvky a příspěvky, které ho zmiňují, ale uživatel stále uvidí vaše příspěvky a může vás sledovat.",
+ "confirmations.mute.message": "Opravdu chcete uživatele {name} skrýt?",
"confirmations.redraft.confirm": "Smazat a přepsat",
"confirmations.redraft.message": "Jste si jistý/á, že chcete smazat a přepsat tento toot? Oblíbení a boosty budou ztraceny a odpovědi na původní příspěvek budou opuštěny.",
"confirmations.reply.confirm": "Odpovědět",
- "confirmations.reply.message": "Odpovězením nyní přepíšete zprávu, kterou aktuálně píšete. Jste si jistý/á, že chcete pokračovat?",
+ "confirmations.reply.message": "Odpověď přepíše vaši rozepsanou zprávu. Opravdu chcete pokračovat?",
"confirmations.unfollow.confirm": "Přestat sledovat",
- "confirmations.unfollow.message": "jste si jistý/á, že chcete přestat sledovat uživatele {name}?",
+ "confirmations.unfollow.message": "Opravdu chcete uživatele {name} přestat sledovat?",
"conversation.delete": "Smazat konverzaci",
"conversation.mark_as_read": "Označit jako přečtenou",
"conversation.open": "Zobrazit konverzaci",
"conversation.with": "S {names}",
"directory.federated": "Ze známého fedivesmíru",
- "directory.local": "Pouze z {domain}",
+ "directory.local": "Pouze z domény {domain}",
"directory.new_arrivals": "Nově příchozí",
"directory.recently_active": "Nedávno aktivní",
"embed.instructions": "Pro přidání tootu na vaši webovou stránku zkopírujte níže uvedený kód.",
@@ -127,49 +141,51 @@
"emoji_button.food": "Jídla a nápoje",
"emoji_button.label": "Vložit emoji",
"emoji_button.nature": "Příroda",
- "emoji_button.not_found": "Žádná emoji!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.not_found": "Žádné emoji! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Předměty",
"emoji_button.people": "Lidé",
- "emoji_button.recent": "Často používaná",
+ "emoji_button.recent": "Často používané",
"emoji_button.search": "Hledat…",
"emoji_button.search_results": "Výsledky hledání",
"emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestování a místa",
- "empty_column.account_timeline": "Tady nejsou žádné tooty!",
+ "empty_column.account_timeline": "Nejsou tu žádné tooty!",
"empty_column.account_unavailable": "Profil nedostupný",
- "empty_column.blocks": "Ještě jste nezablokoval/a žádného uživatele.",
+ "empty_column.blocks": "Ještě jste nezablokovali žádného uživatele.",
+ "empty_column.bookmarked_statuses": "Ještě nemáte v záložkách žádné tooty. Pokud si do nich nějaký přidáte, zobrazí se zde.",
"empty_column.community": "Místní časová osa je prázdná. Napište něco veřejně a rozhýbejte to tu!",
"empty_column.direct": "Ještě nemáte žádné přímé zprávy. Pokud nějakou pošlete nebo dostanete, zobrazí se zde.",
- "empty_column.domain_blocks": "Ještě nejsou žádné skryté domény.",
+ "empty_column.domain_blocks": "Ještě nemáte žádné skryté domény.",
"empty_column.favourited_statuses": "Ještě nemáte žádné oblíbené tooty. Pokud si nějaký oblíbíte, zobrazí se zde.",
"empty_column.favourites": "Tento toot si ještě nikdo neoblíbil. Pokud to někdo udělá, zobrazí se zde.",
- "empty_column.follow_requests": "Ještě nemáte žádné požadavky o sledování. Pokud nějaký obdržíte, zobrazí se zde.",
+ "empty_column.follow_requests": "Ještě nemáte žádné žádosti o sledování. Pokud nějakou obdržíte, zobrazí se zde.",
"empty_column.hashtag": "Pod tímto hashtagem ještě nic není.",
- "empty_column.home": "Vaše domovská časová osa je prázdná! Začněte navštívením {public} nebo použijte hledání a seznamte se s dalšími uživateli.",
+ "empty_column.home": "Vaše domovská časová osa je prázdná! Začněte návštěvou {public} nebo použijte hledání a seznamte se s dalšími uživateli.",
"empty_column.home.public_timeline": "veřejné časové osy",
- "empty_column.list": "V tomto seznamu ještě nic není. Pokud budou členové tohoto seznamu psát nové tooty, objeví se zde.",
+ "empty_column.list": "V tomto seznamu ještě nic není. Pokud nějaký člen z tohoto seznamu napíše nový toot, objeví se zde.",
"empty_column.lists": "Ještě nemáte žádný seznam. Pokud nějaký vytvoříte, zobrazí se zde.",
- "empty_column.mutes": "Ještě jste neskryl/a žádné uživatele.",
- "empty_column.notifications": "Ještě nemáte žádná oznámení. Začněte konverzaci komunikováním s ostatními.",
+ "empty_column.mutes": "Ještě jste neskryli žádného uživatele.",
+ "empty_column.notifications": "Ještě nemáte žádná oznámení. Začněte s někým konverzaci.",
"empty_column.public": "Tady nic není! Napište něco veřejně, nebo začněte ručně sledovat uživatele z jiných serverů, aby tu něco přibylo",
"error.unexpected_crash.explanation": "Kvůli chybě v našem kódu nebo problému s kompatibilitou prohlížeče nemohla být tato stránka načtena správně.",
- "error.unexpected_crash.next_steps": "Zkuste obnovit stránku. Pokud to nepomůže, budete možná moci dále používat Mastodon pomocí jiného prohlížeče nebo nativní aplikace.",
+ "error.unexpected_crash.next_steps": "Zkuste stránku načíst znovu. Pokud to nepomůže, zkuste Mastodon používat pomocí jiného prohlížeče nebo nativní aplikace.",
"errors.unexpected_crash.copy_stacktrace": "Zkopírovat stacktrace do schránky",
"errors.unexpected_crash.report_issue": "Nahlásit problém",
"follow_request.authorize": "Autorizovat",
"follow_request.reject": "Odmítnout",
+ "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, {domain} si myslí, že budete chtít následující požadavky na sledování zkontrolovat ručně.",
"getting_started.developers": "Vývojáři",
"getting_started.directory": "Adresář profilů",
"getting_started.documentation": "Dokumentace",
"getting_started.heading": "Začínáme",
"getting_started.invite": "Pozvat lidi",
- "getting_started.open_source_notice": "Mastodon je otevřený software. Na GitHubu k němu můžete přispět nebo nahlásit chyby: {github}.",
+ "getting_started.open_source_notice": "Mastodon je otevřený software. Přispět do jeho vývoje nebo hlásit chyby můžete na GitHubu {github}.",
"getting_started.security": "Nastavení účtu",
"getting_started.terms": "Podmínky používání",
"hashtag.column_header.tag_mode.all": "a {additional}",
"hashtag.column_header.tag_mode.any": "nebo {additional}",
"hashtag.column_header.tag_mode.none": "bez {additional}",
- "hashtag.column_settings.select.no_options_message": "Žádné návrhy nenalezeny",
+ "hashtag.column_settings.select.no_options_message": "Nenalezeny žádné návrhy",
"hashtag.column_settings.select.placeholder": "Zadejte hashtagy…",
"hashtag.column_settings.tag_mode.all": "Všechny z těchto",
"hashtag.column_settings.tag_mode.any": "Jakékoliv z těchto",
@@ -178,14 +194,16 @@
"home.column_settings.basic": "Základní",
"home.column_settings.show_reblogs": "Zobrazit boosty",
"home.column_settings.show_replies": "Zobrazit odpovědi",
- "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dne} other {# dní}}",
- "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodiny} other {# hodin}}",
- "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minuty} other {# minut}}",
+ "home.hide_announcements": "Skrýt oznámení",
+ "home.show_announcements": "Zobrazit oznámení",
+ "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dní} other {# dní}}",
+ "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodin} other {# hodin}}",
+ "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}",
"introduction.federation.action": "Další",
"introduction.federation.federated.headline": "Federovaná",
"introduction.federation.federated.text": "Veřejné příspěvky z jiných serverů ve fedivesmíru se zobrazí na federované časové ose.",
"introduction.federation.home.headline": "Domů",
- "introduction.federation.home.text": "Příspěvky od lidí, které sledujete, se objeví ve vašem domovském proudu. Můžete sledovat kohokoliv na jakémkoliv serveru!",
+ "introduction.federation.home.text": "Příspěvky od lidí, které sledujete, se objeví ve vašem domovském kanálu. Můžete sledovat kohokoliv na jakémkoliv serveru!",
"introduction.federation.local.headline": "Místní",
"introduction.federation.local.text": "Veřejné příspěvky od lidí ze stejného serveru jako vy se zobrazí na místní časové ose.",
"introduction.interactions.action": "Dokončit tutoriál!",
@@ -197,39 +215,41 @@
"introduction.interactions.reply.text": "Můžete odpovídat na tooty jiných lidí i vaše vlastní, což je propojí do konverzace.",
"introduction.welcome.action": "Jdeme na to!",
"introduction.welcome.headline": "První kroky",
- "introduction.welcome.text": "Vítejte ve fedivesmíru! Za malou chvíli budete moci posílat zprávy a povídat si se svými přátely přes širokou škálu serverů. Tento server, {domain}, je však speciální—je na něm váš profil, proto si zapamatujte jeho jméno.",
- "keyboard_shortcuts.back": "k návratu zpět",
- "keyboard_shortcuts.blocked": "k otevření seznamu blokovaných uživatelů",
- "keyboard_shortcuts.boost": "k boostnutí",
- "keyboard_shortcuts.column": "k zaměření na toot v jednom ze sloupců",
- "keyboard_shortcuts.compose": "k zaměření na psací prostor",
+ "introduction.welcome.text": "Vítejte ve fedivesmíru! Za malou chvíli budete moci posílat zprávy a povídat si se svými přáteli z mnoha serverů. Tento server {domain}, je však speciální — je na něm váš profil a proto si zapamatujte jeho jméno.",
+ "keyboard_shortcuts.back": "návrat zpět",
+ "keyboard_shortcuts.blocked": "otevřít seznam blokovaných uživatelů",
+ "keyboard_shortcuts.boost": "boost",
+ "keyboard_shortcuts.column": "zaměření na toot v jednom ze sloupců",
+ "keyboard_shortcuts.compose": "zaměření na oblast pro psaní",
"keyboard_shortcuts.description": "Popis",
- "keyboard_shortcuts.direct": "k otevření sloupce s přímými zprávami",
- "keyboard_shortcuts.down": "k posunutí dolů v seznamu",
- "keyboard_shortcuts.enter": "k otevření tootu",
- "keyboard_shortcuts.favourite": "k oblíbení",
- "keyboard_shortcuts.favourites": "k otevření seznamu oblíbených",
- "keyboard_shortcuts.federated": "k otevření federované časové osy",
+ "keyboard_shortcuts.direct": "otevření sloupce s přímými zprávami",
+ "keyboard_shortcuts.down": "posunutí dolů v seznamu",
+ "keyboard_shortcuts.enter": "otevření tootu",
+ "keyboard_shortcuts.favourite": "oblíbení",
+ "keyboard_shortcuts.favourites": "otevření seznamu oblíbených",
+ "keyboard_shortcuts.federated": "otevření federované časové osy",
"keyboard_shortcuts.heading": "Klávesové zkratky",
- "keyboard_shortcuts.home": "k otevření domovské časové osy",
+ "keyboard_shortcuts.home": "otevření domovské časové osy",
"keyboard_shortcuts.hotkey": "Klávesová zkratka",
- "keyboard_shortcuts.legend": "k zobrazení této legendy",
- "keyboard_shortcuts.local": "k otevření místní časové osy",
- "keyboard_shortcuts.mention": "ke zmínění autora",
- "keyboard_shortcuts.muted": "k otevření seznamu skrytých uživatelů",
- "keyboard_shortcuts.my_profile": "k otevření vašeho profilu",
- "keyboard_shortcuts.notifications": "k otevření sloupce s oznámeními",
- "keyboard_shortcuts.pinned": "k otevření seznamu připnutých tootů",
- "keyboard_shortcuts.profile": "k otevření autorova profilu",
- "keyboard_shortcuts.reply": "k odpovězení",
- "keyboard_shortcuts.requests": "k otevření seznamu požadavků o sledování",
- "keyboard_shortcuts.search": "k zaměření na hledání",
- "keyboard_shortcuts.start": "k otevření sloupce „začínáme“",
- "keyboard_shortcuts.toggle_hidden": "k zobrazení/skrytí textu za varováním o obsahu",
- "keyboard_shortcuts.toggle_sensitivity": "k zobrazení/skrytí médií",
- "keyboard_shortcuts.toot": "k napsání úplně nového tootu",
- "keyboard_shortcuts.unfocus": "ke zrušení zaměření na psací prostor/hledání",
- "keyboard_shortcuts.up": "k posunutí nahoru v seznamu",
+ "keyboard_shortcuts.legend": "zobrazení této legendy",
+ "keyboard_shortcuts.local": "otevření místní časové osy",
+ "keyboard_shortcuts.mention": "zmínění autora",
+ "keyboard_shortcuts.muted": "otevření seznamu skrytých uživatelů",
+ "keyboard_shortcuts.my_profile": "otevření vašeho profilu",
+ "keyboard_shortcuts.notifications": "otevření sloupce s oznámeními",
+ "keyboard_shortcuts.open_media": "otevření médií",
+ "keyboard_shortcuts.pinned": "otevření seznamu připnutých tootů",
+ "keyboard_shortcuts.profile": "otevření autorova profilu",
+ "keyboard_shortcuts.reply": "odpovědět",
+ "keyboard_shortcuts.requests": "otevření seznamu požadavků o sledování",
+ "keyboard_shortcuts.search": "zaměření na hledání",
+ "keyboard_shortcuts.spoilers": "zobrazit/skrýt pole CW",
+ "keyboard_shortcuts.start": "otevření sloupce „začínáme“",
+ "keyboard_shortcuts.toggle_hidden": "zobrazení/skrytí textu za varováním o obsahu",
+ "keyboard_shortcuts.toggle_sensitivity": "zobrazení/skrytí médií",
+ "keyboard_shortcuts.toot": "napsání úplně nového tootu",
+ "keyboard_shortcuts.unfocus": "zrušení zaměření na psací prostor/hledání",
+ "keyboard_shortcuts.up": "posunutí nahoru v seznamu",
"lightbox.close": "Zavřít",
"lightbox.next": "Další",
"lightbox.previous": "Předchozí",
@@ -244,13 +264,14 @@
"lists.search": "Hledejte mezi lidmi, které sledujete",
"lists.subheading": "Vaše seznamy",
"load_pending": "{count, plural, one {# nová položka} few {# nové položky} many {# nových položek} other {# nových položek}}",
- "loading_indicator.label": "Načítám…",
- "media_gallery.toggle_visible": "Přepínat viditelnost",
+ "loading_indicator.label": "Načítání…",
+ "media_gallery.toggle_visible": "Přepnout viditelnost",
"missing_indicator.label": "Nenalezeno",
"missing_indicator.sublabel": "Tento zdroj se nepodařilo najít",
"mute_modal.hide_notifications": "Skrýt oznámení od tohoto uživatele?",
"navigation_bar.apps": "Mobilní aplikace",
"navigation_bar.blocks": "Blokovaní uživatelé",
+ "navigation_bar.bookmarks": "Záložky",
"navigation_bar.community_timeline": "Místní časová osa",
"navigation_bar.compose": "Vytvořit nový toot",
"navigation_bar.direct": "Přímé zprávy",
@@ -259,7 +280,7 @@
"navigation_bar.edit_profile": "Upravit profil",
"navigation_bar.favourites": "Oblíbené",
"navigation_bar.filters": "Skrytá slova",
- "navigation_bar.follow_requests": "Požadavky o sledování",
+ "navigation_bar.follow_requests": "Žádosti o sledování",
"navigation_bar.follows_and_followers": "Sledovaní a sledující",
"navigation_bar.info": "O tomto serveru",
"navigation_bar.keyboard_shortcuts": "Klávesové zkratky",
@@ -271,19 +292,22 @@
"navigation_bar.preferences": "Předvolby",
"navigation_bar.public_timeline": "Federovaná časová osa",
"navigation_bar.security": "Zabezpečení",
- "notification.favourite": "{name} si oblíbil/a váš toot",
- "notification.follow": "{name} vás začal/a sledovat",
- "notification.mention": "{name} vás zmínil/a",
- "notification.poll": "Anketa, ve které jste hlasoval/a, skončila",
- "notification.reblog": "{name} boostnul/a váš toot",
- "notifications.clear": "Vymazat oznámení",
- "notifications.clear_confirmation": "Jste si jistý/á, že chcete trvale vymazat všechna vaše oznámení?",
- "notifications.column_settings.alert": "Desktopová oznámení",
+ "notification.favourite": "Uživatel {name} si oblíbil váš toot",
+ "notification.follow": "Uživatel {name} vás začal sledovat",
+ "notification.follow_request": "Uživatel {name} požádal o povolení vás sledovat",
+ "notification.mention": "Uživatel {name} vás zmínil",
+ "notification.own_poll": "Vaše anketa skončila",
+ "notification.poll": "Anketa, ve které jste hlasovali, skončila",
+ "notification.reblog": "Uživatel {name} boostnul váš toot",
+ "notifications.clear": "Smazat oznámení",
+ "notifications.clear_confirmation": "Opravdu chcete trvale smazat všechna vaše oznámení?",
+ "notifications.column_settings.alert": "Oznámení na počítači",
"notifications.column_settings.favourite": "Oblíbení:",
"notifications.column_settings.filter_bar.advanced": "Zobrazit všechny kategorie",
"notifications.column_settings.filter_bar.category": "Panel rychlého filtrování",
"notifications.column_settings.filter_bar.show": "Zobrazit",
"notifications.column_settings.follow": "Noví sledující:",
+ "notifications.column_settings.follow_request": "Nové žádosti o sledování:",
"notifications.column_settings.mention": "Zmínky:",
"notifications.column_settings.poll": "Výsledky anket:",
"notifications.column_settings.push": "Push oznámení",
@@ -297,12 +321,12 @@
"notifications.filter.mentions": "Zmínky",
"notifications.filter.polls": "Výsledky anket",
"notifications.group": "{count} oznámení",
- "poll.closed": "Uzavřena",
+ "poll.closed": "Uzavřeno",
"poll.refresh": "Obnovit",
"poll.total_people": "{count, plural, one {# člověk} few {# lidé} many {# lidí} other {# lidí}}",
- "poll.total_votes": "{count, plural, one {# hlas} few {# hlasy} many {# hlasu} other {# hlasů}}",
+ "poll.total_votes": "{count, plural, one {# hlas} few {# hlasy} many {# hlasů} other {# hlasů}}",
"poll.vote": "Hlasovat",
- "poll.voted": "Pro tuto odpověď jste hlasoval/a",
+ "poll.voted": "Pro tuto odpověď jste hlasovali",
"poll_button.add_poll": "Přidat anketu",
"poll_button.remove_poll": "Odstranit anketu",
"privacy.change": "Změnit soukromí tootu",
@@ -312,26 +336,27 @@
"privacy.private.short": "Pouze pro sledující",
"privacy.public.long": "Odeslat na veřejné časové osy",
"privacy.public.short": "Veřejný",
- "privacy.unlisted.long": "Neodeslat na veřejné časové osy",
+ "privacy.unlisted.long": "Neodesílat na veřejné časové osy",
"privacy.unlisted.short": "Neuvedený",
"refresh": "Obnovit",
- "regeneration_indicator.label": "Načítám…",
- "regeneration_indicator.sublabel": "Váš domovský proud se připravuje!",
+ "regeneration_indicator.label": "Načítání…",
+ "regeneration_indicator.sublabel": "Váš domovský kanál se připravuje!",
"relative_time.days": "{number} d",
"relative_time.hours": "{number} h",
"relative_time.just_now": "teď",
"relative_time.minutes": "{number} m",
"relative_time.seconds": "{number} s",
+ "relative_time.today": "dnes",
"reply_indicator.cancel": "Zrušit",
"report.forward": "Přeposlat na {target}",
"report.forward_hint": "Tento účet je z jiného serveru. Chcete na něj také poslat anonymizovanou kopii?",
- "report.hint": "Nahlášení bude zasláno moderátorům vašeho serveru. Níže můžete uvést, proč tento účet nahlašujete:",
+ "report.hint": "Hlášení bude zasláno moderátorům vašeho serveru. Níže můžete uvést, proč tento účet nahlašujete:",
"report.placeholder": "Dodatečné komentáře",
"report.submit": "Odeslat",
"report.target": "Nahlášení uživatele {target}",
"search.placeholder": "Hledat",
"search_popout.search_format": "Pokročilé hledání",
- "search_popout.tips.full_text": "Jednoduchý text navrátí tooty, které jste napsal/a, oblíbil/a si, boostnul/a, nebo v nich byl/a zmíněn/a, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.",
+ "search_popout.tips.full_text": "Jednoduchý text navrátí tooty, které jste napsali, oblíbili si, boostnuli, nebo vás v nich někdo zmínil, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "toot",
"search_popout.tips.text": "Jednoduchý text navrátí odpovídající zobrazovaná jména, přezdívky a hashtagy",
@@ -340,16 +365,17 @@
"search_results.hashtags": "Hashtagy",
"search_results.statuses": "Tooty",
"search_results.statuses_fts_disabled": "Vyhledávání tootů podle jejich obsahu není na tomto serveru Mastodon povoleno.",
- "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledku} other {výsledků}}",
+ "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledků} other {výsledků}}",
"status.admin_account": "Otevřít moderátorské rozhraní pro uživatele @{name}",
"status.admin_status": "Otevřít tento toot v moderátorském rozhraní",
"status.block": "Zablokovat uživatele @{name}",
+ "status.bookmark": "Přidat do záložek",
"status.cancel_reblog_private": "Zrušit boost",
"status.cannot_reblog": "Tento příspěvek nemůže být boostnutý",
"status.copy": "Kopírovat odkaz k tootu",
"status.delete": "Smazat",
- "status.detailed_status": "Detailní zobrazení konverzace",
- "status.direct": "Poslat přímou zprávu uživateli @{name}",
+ "status.detailed_status": "Podrobné zobrazení konverzace",
+ "status.direct": "Poslat uživateli @{name} přímou zprávu",
"status.embed": "Vložit na web",
"status.favourite": "Oblíbit",
"status.filtered": "Filtrováno",
@@ -365,9 +391,10 @@
"status.read_more": "Číst více",
"status.reblog": "Boostnout",
"status.reblog_private": "Boostnout původnímu publiku",
- "status.reblogged_by": "{name} boostnul/a",
+ "status.reblogged_by": "Uživatel {name} boostnul",
"status.reblogs.empty": "Tento toot ještě nikdo neboostnul. Pokud to někdo udělá, zobrazí se zde.",
"status.redraft": "Smazat a přepsat",
+ "status.remove_bookmark": "Odstranit ze záložek",
"status.reply": "Odpovědět",
"status.replyAll": "Odpovědět na vlákno",
"status.report": "Nahlásit uživatele @{name}",
@@ -382,37 +409,44 @@
"status.unmute_conversation": "Odkrýt konverzaci",
"status.unpin": "Odepnout z profilu",
"suggestions.dismiss": "Odmítnout návrh",
- "suggestions.header": "Mohli by vás zajímat…",
+ "suggestions.header": "Mohlo by vás zajímat…",
"tabs_bar.federated_timeline": "Federovaná",
"tabs_bar.home": "Domů",
"tabs_bar.local_timeline": "Místní",
"tabs_bar.notifications": "Oznámení",
"tabs_bar.search": "Hledat",
- "time_remaining.days": "{number, plural, one {Zbývá # den} few {Zbývají # dny} many {Zbývá # dne} other {Zbývá # dní}}",
- "time_remaining.hours": "{number, plural, one {Zbývá # hodina} few {Zbývají # hodiny} many {Zbývá # hodiny} other {Zbývá # hodin}}",
- "time_remaining.minutes": "{number, plural, one {Zbývá # minuta} few {Zbývají # minuty} many {Zbývá # minuty} other {Zbývá # minut}}",
+ "time_remaining.days": "{number, plural, one {Zbývá # den} few {Zbývají # dny} many {Zbývá # dní} other {Zbývá # dní}}",
+ "time_remaining.hours": "{number, plural, one {Zbývá # hodina} few {Zbývají # hodiny} many {Zbývá # hodin} other {Zbývá # hodin}}",
+ "time_remaining.minutes": "{number, plural, one {Zbývá # minuta} few {Zbývají # minuty} many {Zbývá # minut} other {Zbývá # minut}}",
"time_remaining.moments": "Zbývá několik sekund",
- "time_remaining.seconds": "{number, plural, one {Zbývá # sekunda} few {Zbývají # sekundy} many {Zbývá # sekundy} other {Zbývá # sekund}}",
+ "time_remaining.seconds": "{number, plural, one {Zbývá # sekunda} few {Zbývají # sekundy} many {Zbývá # sekund} other {Zbývá # sekund}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} z jiných serveru se nezobrazuje.",
+ "timeline_hint.resources.followers": "Sledující",
+ "timeline_hint.resources.follows": "Sleduje",
+ "timeline_hint.resources.statuses": "Starší tooty",
"trends.count_by_accounts": "{count} {rawCount, plural, one {člověk} few {lidé} many {lidí} other {lidí}} hovoří",
"trends.trending_now": "Aktuální trendy",
- "ui.beforeunload": "Váš koncept se ztratí, pokud Mastodon opustíte.",
- "upload_area.title": "Přetažením nahrajete",
- "upload_button.label": "Přidat média (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "ui.beforeunload": "Pokud Mastodon opustíte, váš koncept se ztratí.",
+ "upload_area.title": "Nahrajte přetažením",
+ "upload_button.label": "Přidat média ({formats})",
"upload_error.limit": "Byl překročen limit nahraných souborů.",
- "upload_error.poll": "Nahrávání souborů není povoleno u anket.",
+ "upload_error.poll": "U anket není nahrávání souborů povoleno.",
+ "upload_form.audio_description": "Popis pro sluchově postižené",
"upload_form.description": "Popis pro zrakově postižené",
"upload_form.edit": "Upravit",
"upload_form.undo": "Smazat",
+ "upload_form.video_description": "Popis pro sluchově či zrakově postižené",
"upload_modal.analyzing_picture": "Analyzuji obrázek…",
"upload_modal.apply": "Použít",
"upload_modal.description_placeholder": "Příliš žluťoučký kůň úpěl ďábelské ódy",
"upload_modal.detect_text": "Detekovat text z obrázku",
"upload_modal.edit_media": "Upravit média",
- "upload_modal.hint": "Kliknutím na nebo přetáhnutím kruhu na náhledu vyberte bod soustředění, který bude vždy zobrazen na všech náhledech.",
+ "upload_modal.hint": "Kliknutím na nebo přetáhnutím kruhu na náhledu vyberte oblast, která bude na všech náhledech vždy zobrazen.",
"upload_modal.preview_label": "Náhled ({ratio})",
- "upload_progress.label": "Nahrávám…",
+ "upload_progress.label": "Nahrávání…",
"video.close": "Zavřít video",
- "video.exit_fullscreen": "Ukončit celou obrazovku",
+ "video.download": "Stáhnout soubor",
+ "video.exit_fullscreen": "Ukončit režim celé obrazovky",
"video.expand": "Otevřít video",
"video.fullscreen": "Celá obrazovka",
"video.hide": "Skrýt video",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 8c2e08bb3..5a1085389 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Ychwanegu neu Dileu o'r rhestrau",
"account.badges.bot": "Bot",
+ "account.badges.group": "Grŵp",
"account.block": "Blocio @{name}",
"account.block_domain": "Cuddio popeth rhag {domain}",
"account.blocked": "Blociwyd",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Canslo cais dilyn",
"account.direct": "Neges breifat @{name}",
"account.domain_blocked": "Parth wedi ei guddio",
@@ -38,10 +42,15 @@
"account.unfollow": "Dad-ddilyn",
"account.unmute": "Dad-dawelu @{name}",
"account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Ceisiwch eto ar ôl {retry_time, time, medium}.",
"alert.rate_limited.title": "Cyfradd gyfyngedig",
"alert.unexpected.message": "Digwyddodd gwall annisgwyl.",
"alert.unexpected.title": "Wps!",
+ "announcement.announcement": "Cyhoeddiad",
"autosuggest_hashtag.per_week": "{count} yr wythnos",
"boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa",
"bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
"bundle_modal_error.retry": "Ceiswich eto",
"column.blocks": "Defnyddwyr a flociwyd",
+ "column.bookmarks": "Tudalnodau",
"column.community": "Ffrwd lleol",
"column.direct": "Negeseuon preifat",
"column.directory": "Pori proffiliau",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Dangos gosodiadau",
"column_header.unpin": "Dadbinio",
"column_subheading.settings": "Gosodiadau",
+ "community.column_settings.local_only": "Lleol yn unig",
"community.column_settings.media_only": "Cyfryngau yn unig",
+ "community.column_settings.remote_only": "Anghysbell yn unig",
"compose_form.direct_message_warning": "Mi fydd y tŵt hwn ond yn cael ei anfon at y defnyddwyr sy'n cael eu crybwyll.",
"compose_form.direct_message_warning_learn_more": "Dysgu mwy",
"compose_form.hashtag_warning": "Ni fydd y tŵt hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond tŵtiau cyhoeddus gellid chwilota amdanynt drwy hashnod.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Cyfnod pleidlais",
"compose_form.poll.option_placeholder": "Dewisiad {number}",
"compose_form.poll.remove_option": "Tynnu'r dewisiad",
+ "compose_form.poll.switch_to_multiple": "Newid pleidlais i adael mwy nag un dewis",
+ "compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis",
"compose_form.publish": "Tŵt",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "Allgofnodi",
"confirmations.logout.message": "Ydych chi'n siŵr eich bod am allgofnodi?",
"confirmations.mute.confirm": "Tawelu",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Bydd hyn yn cuddio pyst oddi wrthynt a physt sydd yn sôn amdanynt, ond bydd hyn dal yn gadael iddyn nhw gweld eich pyst a'ch dilyn.",
"confirmations.mute.message": "Ydych chi'n sicr eich bod am ddistewi {name}?",
"confirmations.redraft.confirm": "Dileu & ailddrafftio",
"confirmations.redraft.message": "Ydych chi'n siwr eich bod eisiau dileu y tŵt hwn a'i ailddrafftio? Bydd ffefrynnau a bwstiau'n cael ei colli, a bydd ymatebion i'r tŵt gwreiddiol yn cael eu hamddifadu.",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Dim tŵtiau fama!",
"empty_column.account_unavailable": "Proffil ddim ar gael",
"empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.",
+ "empty_column.bookmarked_statuses": "Nid oes gennych unrhyw dwtiau tudalnodiedig eto. Pan y byddwch yn tudalnodi un, mi fydd yn ymddangos yma.",
"empty_column.community": "Mae'r ffrwd lleol yn wag. Ysgrifenwch rhywbeth yn gyhoeddus i gael dechrau arni!",
"empty_column.direct": "Nid oes gennych unrhyw negeseuon preifat eto. Pan y byddwch yn anfon neu derbyn un, mi fydd yn ymddangos yma.",
"empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.",
@@ -152,12 +167,13 @@
"empty_column.mutes": "Nid ydych wedi tawelu unrhyw ddefnyddwyr eto.",
"empty_column.notifications": "Nid oes gennych unrhyw hysbysiadau eto. Rhyngweithiwch ac eraill i ddechrau'r sgwrs.",
"empty_column.public": "Does dim byd yma! Ysgrifennwch rhywbeth yn gyhoeddus, neu dilynwch ddefnyddwyr o achosion eraill i'w lenwi",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "Oherwydd gwall yn ein cod neu oherwydd problem cysondeb porwr, nid oedd y dudalen hon gallu cael ei dangos yn gywir.",
+ "error.unexpected_crash.next_steps": "Ceisiwch ail-lwytho y dudalen. Os nad yw hyn yn eich helpu, efallai gallech defnyddio Mastodon trwy borwr neu ap brodorol gwahanol.",
+ "errors.unexpected_crash.copy_stacktrace": "Copïo'r olrhain stac i'r clipfwrdd",
+ "errors.unexpected_crash.report_issue": "Rhoi gwybod am broblem",
"follow_request.authorize": "Caniatau",
"follow_request.reject": "Gwrthod",
+ "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.",
"getting_started.developers": "Datblygwyr",
"getting_started.directory": "Cyfeiriadur proffil",
"getting_started.documentation": "Dogfennaeth",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Syml",
"home.column_settings.show_reblogs": "Dangos bŵstiau",
"home.column_settings.show_replies": "Dangos ymatebion",
+ "home.hide_announcements": "Cuddio cyhoeddiadau",
+ "home.show_announcements": "Dangos cyhoeddiadau",
"intervals.full.days": "{number, plural, one {# ddydd} other {# o ddyddiau}}",
"intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}",
"intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "i agor rhestr defnyddwyr a dawelwyd",
"keyboard_shortcuts.my_profile": "i agor eich proffil",
"keyboard_shortcuts.notifications": "i agor colofn hysbysiadau",
+ "keyboard_shortcuts.open_media": "i agor cyfryngau",
"keyboard_shortcuts.pinned": "i agor rhestr tŵtiau wedi'i pinio",
"keyboard_shortcuts.profile": "i agor proffil yr awdur",
"keyboard_shortcuts.reply": "i ateb",
"keyboard_shortcuts.requests": "i agor rhestr ceisiadau dilyn",
"keyboard_shortcuts.search": "i ffocysu chwilio",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "i agor colofn \"dechrau arni\"",
"keyboard_shortcuts.toggle_hidden": "i ddangos/cuddio testun tu ôl i CW",
"keyboard_shortcuts.toggle_sensitivity": "i ddangos/gyddio cyfryngau",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Cuddio hysbysiadau rhag y defnyddiwr hwn?",
"navigation_bar.apps": "Apiau symudol",
"navigation_bar.blocks": "Defnyddwyr wedi eu blocio",
+ "navigation_bar.bookmarks": "Tudalnodau",
"navigation_bar.community_timeline": "Ffrwd leol",
"navigation_bar.compose": "Cyfansoddi tŵt newydd",
"navigation_bar.direct": "Negeseuon preifat",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Diogelwch",
"notification.favourite": "hoffodd {name} eich tŵt",
"notification.follow": "dilynodd {name} chi",
+ "notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn",
"notification.mention": "Soniodd {name} amdanoch chi",
+ "notification.own_poll": "Mae eich pôl wedi diweddu",
"notification.poll": "Mae pleidlais rydych wedi pleidleisio ynddi wedi dod i ben",
"notification.reblog": "Hysbysebodd {name} eich tŵt",
"notifications.clear": "Clirio hysbysiadau",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Bar hidlo",
"notifications.column_settings.filter_bar.show": "Dangos",
"notifications.column_settings.follow": "Dilynwyr newydd:",
+ "notifications.column_settings.follow_request": "Ceisiadau dilyn newydd:",
"notifications.column_settings.mention": "Crybwylliadau:",
"notifications.column_settings.poll": "Canlyniadau pleidlais:",
"notifications.column_settings.push": "Hysbysiadau gwthiadwy",
@@ -299,10 +323,10 @@
"notifications.group": "{count} o hysbysiadau",
"poll.closed": "Ar gau",
"poll.refresh": "Adnewyddu",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, one {# berson} other {# o bobl}}",
"poll.total_votes": "{count, plural, one {# bleidlais} other {# o bleidleisiau}}",
"poll.vote": "Pleidleisio",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "Pleidleisioch chi am yr ateb hon",
"poll_button.add_poll": "Ychwanegu pleidlais",
"poll_button.remove_poll": "Tynnu pleidlais",
"privacy.change": "Addasu preifatrwdd y tŵt",
@@ -314,7 +338,7 @@
"privacy.public.short": "Cyhoeddus",
"privacy.unlisted.long": "Peidio a chyhoeddi i ffrydiau cyhoeddus",
"privacy.unlisted.short": "Heb ei restru",
- "refresh": "Refresh",
+ "refresh": "Adnewyddu",
"regeneration_indicator.label": "Llwytho…",
"regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!",
"relative_time.days": "{number}dydd",
@@ -322,6 +346,7 @@
"relative_time.just_now": "nawr",
"relative_time.minutes": "{number}munud",
"relative_time.seconds": "{number}eiliad",
+ "relative_time.today": "heddiw",
"reply_indicator.cancel": "Canslo",
"report.forward": "Ymlaen i {target}",
"report.forward_hint": "Mae'r cyfrif o weinydd arall. Anfon copi anhysbys o'r adroddiad yno hefyd?",
@@ -344,6 +369,7 @@
"status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}",
"status.admin_status": "Agor y tŵt yn y rhyngwyneb goruwchwylio",
"status.block": "Blocio @{name}",
+ "status.bookmark": "Tudalnodi",
"status.cancel_reblog_private": "Dadfŵstio",
"status.cannot_reblog": "Ni ellir sbarduno'r tŵt hwn",
"status.copy": "Copïo cysylltiad i'r tŵt",
@@ -368,6 +394,7 @@
"status.reblogged_by": "Bŵstio {name}",
"status.reblogs.empty": "Does neb wedi bŵstio'r tŵt yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.",
"status.redraft": "Dileu & ailddrafftio",
+ "status.remove_bookmark": "Tynnu'r tudalnod",
"status.reply": "Ateb",
"status.replyAll": "Ateb i edefyn",
"status.report": "Adrodd @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# funud} other {# o funudau}} ar ôl",
"time_remaining.moments": "Munudau ar ôl",
"time_remaining.seconds": "{number, plural, one {# eiliad} other {# o eiliadau}} ar ôl",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} yn siarad",
"trends.trending_now": "Yn tueddu nawr",
"ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Wedi mynd heibio'r uchafswm terfyn uwchlwytho.",
"upload_error.poll": "Nid oes modd uwchlwytho ffeiliau â phleidleisiau.",
+ "upload_form.audio_description": "Disgrifio ar gyfer pobl sydd â cholled clyw",
"upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg",
"upload_form.edit": "Golygu",
"upload_form.undo": "Dileu",
+ "upload_form.video_description": "Disgrifio ar gyfer pobl sydd â cholled clyw neu amhariad golwg",
"upload_modal.analyzing_picture": "Dadansoddi llun…",
"upload_modal.apply": "Gweithredu",
"upload_modal.description_placeholder": "Mae ei phen bach llawn jocs, 'run peth a fy nghot golff, rhai dyddiau",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Rhagolwg ({ratio})",
"upload_progress.label": "Uwchlwytho...",
"video.close": "Cau fideo",
+ "video.download": "Lawrlwytho ffeil",
"video.exit_fullscreen": "Gadael sgrîn llawn",
"video.expand": "Ymestyn fideo",
"video.fullscreen": "Sgrîn llawn",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 95e4fe503..9354308cc 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Tilføj eller fjern fra lister",
"account.badges.bot": "Robot",
+ "account.badges.group": "Gruppe",
"account.block": "Bloker @{name}",
"account.block_domain": "Skjul alt fra {domain}",
"account.blocked": "Blokeret",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Annullér følgeranmodning",
"account.direct": "Send en direkte besked til @{name}",
"account.domain_blocked": "Domænet er blevet skjult",
@@ -38,10 +42,15 @@
"account.unfollow": "Følg ikke længere",
"account.unmute": "Fjern dæmpningen af @{name}",
"account.unmute_notifications": "Fjern dæmpningen af notifikationer fra @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Prøv venligst igen efter {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "alert.rate_limited.title": "Gradsbegrænset",
"alert.unexpected.message": "Der opstod en uventet fejl.",
"alert.unexpected.title": "Ups!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per uge",
"boost_modal.combo": "Du kan trykke {combo} for at springe dette over næste gang",
"bundle_column_error.body": "Noget gik galt under indlæsningen af dette komponent.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Noget gik galt under indlæsningen af dette komponent.",
"bundle_modal_error.retry": "Prøv igen",
"column.blocks": "Blokerede brugere",
+ "column.bookmarks": "Bogmærker",
"column.community": "Lokal tidslinje",
"column.direct": "Direkte beskeder",
"column.directory": "Gennemse profiler",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Vis indstillinger",
"column_header.unpin": "Fastgør ikke længere",
"column_subheading.settings": "Indstillinger",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Kun medie",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "Dette trut vil kun blive sendt til de nævnte brugere.",
"compose_form.direct_message_warning_learn_more": "Lær mere",
"compose_form.hashtag_warning": "Dette trut vil ikke blive vist under noget hashtag da det ikke er listet. Kun offentlige trut kan blive vist under søgninger med hashtags.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Afstemningens varighed",
"compose_form.poll.option_placeholder": "Valgmulighed {number}",
"compose_form.poll.remove_option": "Fjern denne valgmulighed",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Trut",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Markér medie som følsomt",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "Log ud",
"confirmations.logout.message": "Er du sikker på du vil logge ud?",
"confirmations.mute.confirm": "Dæmp",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Dette vil skjule indlæg fra dem, samt andre indlæg der omtaler dem, men de vil stadig være i stand til at se dine indlæg og følge dig.",
"confirmations.mute.message": "Er du sikker på, du vil dæmpe {name}?",
"confirmations.redraft.confirm": "Slet & omskriv",
"confirmations.redraft.message": "Er du sikker på, du vil slette denne status og omskrive den? Favoritter og fremhævelser vil gå tabt og svar til det oprindelige opslag vil blive forældreløse.",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Ingen bidrag her!",
"empty_column.account_unavailable": "Profil utilgængelig",
"empty_column.blocks": "Du har ikke blokeret nogen endnu.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at starte lavinen!",
"empty_column.direct": "Du har endnu ingen direkte beskeder. Når du sender eller modtager en, vil den vises her.",
"empty_column.domain_blocks": "Der er endnu ikke nogle skjulte domæner.",
@@ -152,12 +167,13 @@
"empty_column.mutes": "Du har endnu ikke dæmpet nogen som helst bruger.",
"empty_column.notifications": "Du har endnu ingen notifikationer. Tag ud og bland dig med folkemængden for at starte samtalen.",
"empty_column.public": "Der er ikke noget at se her! Skriv noget offentligt eller start ud med manuelt at følge brugere fra andre server for at udfylde tomrummet",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "På grund af en fejl i vores kode, eller en browser kompatibilitetsfejl, så kunne siden ikke vises korrekt.",
+ "error.unexpected_crash.next_steps": "Prøv at genindlæs siden. Hvis dette ikke hjælper, så forsøg venligst, at tilgå Mastodon via en anden browser eller app.",
+ "errors.unexpected_crash.copy_stacktrace": "Kopiér stack trace til udklipsholderen",
+ "errors.unexpected_crash.report_issue": "Rapportér problem",
"follow_request.authorize": "Godkend",
"follow_request.reject": "Afvis",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Udviklere",
"getting_started.directory": "Profilliste",
"getting_started.documentation": "Dokumentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Grundlæggende",
"home.column_settings.show_reblogs": "Vis fremhævelser",
"home.column_settings.show_replies": "Vis svar",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# dag} other {# dage}}",
"intervals.full.hours": "{number, plural, one {# time} other {# timer}}",
"intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "for at åbne listen over dæmpede brugere",
"keyboard_shortcuts.my_profile": "for at åbne din profil",
"keyboard_shortcuts.notifications": "for at åbne notifikations kolonnen",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "for at åbne listen over fastgjorte trut",
"keyboard_shortcuts.profile": "til profil af åben forfatter",
"keyboard_shortcuts.reply": "for at svare",
"keyboard_shortcuts.requests": "for at åbne listen over følgeranmodninger",
"keyboard_shortcuts.search": "for at fokusere søgningen",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "for at åbne \"kom igen\" kolonnen",
"keyboard_shortcuts.toggle_hidden": "for at vise/skjule tekst bag CW",
"keyboard_shortcuts.toggle_sensitivity": "for at vise/skjule medier",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?",
"navigation_bar.apps": "Mobil apps",
"navigation_bar.blocks": "Blokerede brugere",
+ "navigation_bar.bookmarks": "Bogmærker",
"navigation_bar.community_timeline": "Lokal tidslinje",
"navigation_bar.compose": "Skriv nyt trut",
"navigation_bar.direct": "Direkte beskeder",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Sikkerhed",
"notification.favourite": "{name} favoriserede din status",
"notification.follow": "{name} fulgte dig",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} nævnte dig",
+ "notification.own_poll": "Din afstemning er afsluttet",
"notification.poll": "En afstemning, du stemte i, er slut",
"notification.reblog": "{name} boostede din status",
"notifications.clear": "Ryd notifikationer",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Hurtigfilter",
"notifications.column_settings.filter_bar.show": "Vis",
"notifications.column_settings.follow": "Nye følgere:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Statusser der nævner dig:",
"notifications.column_settings.poll": "Afstemningsresultat:",
"notifications.column_settings.push": "Pushnotifikationer",
@@ -299,10 +323,10 @@
"notifications.group": "{count} notifikationer",
"poll.closed": "Lukket",
"poll.refresh": "Opdatér",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, one {# person} other {# personer}}",
"poll.total_votes": "{count, plural, one {# stemme} other {# stemmer}}",
"poll.vote": "Stem",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "Du stemte for denne valgmulighed",
"poll_button.add_poll": "Tilføj en afstemning",
"poll_button.remove_poll": "Fjern afstemning",
"privacy.change": "Skift status visningsindstillinger",
@@ -314,7 +338,7 @@
"privacy.public.short": "Offentligt",
"privacy.unlisted.long": "Udgiv ikke på offentlige tidslinjer",
"privacy.unlisted.short": "Ikke listet",
- "refresh": "Refresh",
+ "refresh": "Opdatér",
"regeneration_indicator.label": "Indlæser…",
"regeneration_indicator.sublabel": "Din startside er ved at blive forberedt!",
"relative_time.days": "{number}d",
@@ -322,6 +346,7 @@
"relative_time.just_now": "nu",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "i dag",
"reply_indicator.cancel": "Annuller",
"report.forward": "Videresend til {target}",
"report.forward_hint": "Kontoen er fra en anden server. Vil du også sende en anonym kopi af anmeldelsen dertil?",
@@ -344,6 +369,7 @@
"status.admin_account": "Åben modereringsvisning for @{name}",
"status.admin_status": "Åben denne status i modereringsvisningen",
"status.block": "Bloker @{name}",
+ "status.bookmark": "Bogmærke",
"status.cancel_reblog_private": "Fjern boost",
"status.cannot_reblog": "Denne post kan ikke boostes",
"status.copy": "Kopiér link til status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} boostede",
"status.reblogs.empty": "Der er endnu ingen der har boostet dette trut. Når der er nogen der gør, vil det blive vist her.",
"status.redraft": "Slet og omskriv",
+ "status.remove_bookmark": "Fjern bogmærke",
"status.reply": "Besvar",
"status.replyAll": "Besvar samtale",
"status.report": "Anmeld @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minut} other {# minutter}} tilbage",
"time_remaining.moments": "Få øjeblikke tilbage",
"time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} tilbage",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {personer}} snakker",
"trends.trending_now": "Hot lige nu",
"ui.beforeunload": "Din kladde vil gå tabt hvis du forlader Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Tilføj medie (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Uploadgrænse overskredet.",
"upload_error.poll": "Filupload ikke tilladt sammen med afstemninger.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Beskriv for svagtseende",
"upload_form.edit": "Redigér",
"upload_form.undo": "Slet",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyserer billede…",
"upload_modal.apply": "Anvend",
"upload_modal.description_placeholder": "En hurtig brun ræv hopper over den dovne hund",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Forhåndsvisning ({ratio})",
"upload_progress.label": "Uploader...",
"video.close": "Luk video",
+ "video.download": "Hent fil",
"video.exit_fullscreen": "Forlad fuldskærm",
"video.expand": "Udvid video",
"video.fullscreen": "Fuldskærm",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 401e3fc15..57aa1769a 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Hinzufügen oder Entfernen von Listen",
"account.badges.bot": "Bot",
+ "account.badges.group": "Gruppe",
"account.block": "@{name} blockieren",
- "account.block_domain": "Alles von {domain} verstecken",
+ "account.block_domain": "Alles von {domain} blockieren",
"account.blocked": "Blockiert",
+ "account.browse_more_on_origin_server": "Mehr auf dem Originalprofil durchsuchen",
"account.cancel_follow_request": "Folgeanfrage abbrechen",
"account.direct": "Direktnachricht an @{name}",
"account.domain_blocked": "Domain versteckt",
@@ -33,15 +37,20 @@
"account.share": "Profil von @{name} teilen",
"account.show_reblogs": "Von @{name} geteilte Beiträge anzeigen",
"account.unblock": "@{name} entblocken",
- "account.unblock_domain": "{domain} wieder anzeigen",
+ "account.unblock_domain": "Blockieren von {domain} beenden",
"account.unendorse": "Nicht auf Profil hervorheben",
"account.unfollow": "Entfolgen",
"account.unmute": "@{name} nicht mehr stummschalten",
"account.unmute_notifications": "Benachrichtigungen von @{name} einschalten",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium}.",
"alert.rate_limited.title": "Anfragelimit überschritten",
"alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.",
"alert.unexpected.title": "Hoppla!",
+ "announcement.announcement": "Ankündigung",
"autosuggest_hashtag.per_week": "{count} pro Woche",
"boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen",
"bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.",
"bundle_modal_error.retry": "Erneut versuchen",
"column.blocks": "Blockierte Profile",
+ "column.bookmarks": "Lesezeichen",
"column.community": "Lokale Zeitleiste",
"column.direct": "Direktnachrichten",
"column.directory": "Profile durchsuchen",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Einstellungen anzeigen",
"column_header.unpin": "Lösen",
"column_subheading.settings": "Einstellungen",
+ "community.column_settings.local_only": "Nur lokal",
"community.column_settings.media_only": "Nur Medien",
+ "community.column_settings.remote_only": "Nur entfernt",
"compose_form.direct_message_warning": "Dieser Beitrag wird nur für die erwähnten Nutzer sichtbar sein.",
"compose_form.direct_message_warning_learn_more": "Mehr erfahren",
"compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Umfragedauer",
"compose_form.poll.option_placeholder": "Wahl {number}",
"compose_form.poll.remove_option": "Wahl entfernen",
+ "compose_form.poll.switch_to_multiple": "Umfrage ändern, um mehrere Optionen zu erlauben",
+ "compose_form.poll.switch_to_single": "Umfrage ändern, um eine einzige Wahl zu erlauben",
"compose_form.publish": "Tröt",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Medien als heikel markieren",
@@ -106,7 +120,7 @@
"confirmations.mute.explanation": "Dies wird Beiträge von dieser Person und Beiträge, die diese Person erwähnen, ausblenden, aber es wird der Person trotzdem erlauben, deine Beiträge zu sehen und dir zu folgen.",
"confirmations.mute.message": "Bist du dir sicher, dass du {name} stummschalten möchtest?",
"confirmations.redraft.confirm": "Löschen und neu erstellen",
- "confirmations.redraft.message": "Bist du dir sicher, dass du diesen Beitrag löschen und neu erstellen möchtest? Favorisierungen, geteilte Beiträge und Antworten werden verloren gehen.",
+ "confirmations.redraft.message": "Bist du dir sicher, dass du diesen Tröt löschen und neu erstellen möchtest? Favs, geteilte Beiträge und Antworten werden verloren gehen.",
"confirmations.reply.confirm": "Antworten",
"confirmations.reply.message": "Wenn du jetzt antwortest wird es die gesamte Nachricht verwerfen, die du gerade schreibst. Möchtest du wirklich fortfahren?",
"confirmations.unfollow.confirm": "Entfolgen",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Keine Beiträge!",
"empty_column.account_unavailable": "Konto nicht verfügbar",
"empty_column.blocks": "Du hast keine Profile blockiert.",
+ "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Lesezeichen gespeichert. Wenn du einen Beitrag als Lesezeichen speicherst wird er hier erscheinen.",
"empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!",
"empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Wenn du eine sendest oder empfängst, wird sie hier zu sehen sein.",
"empty_column.domain_blocks": "Es ist noch keine versteckten Domains.",
@@ -152,19 +167,20 @@
"empty_column.mutes": "Du hast keine Profile stummgeschaltet.",
"empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.",
"empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Servern, um die Zeitleiste aufzufüllen",
- "error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browsereinkompatibilität konnte diese Seite nicht korrekt angezeigt werden.",
+ "error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browser-Inkompatibilität konnte diese Seite nicht korrekt angezeigt werden.",
"error.unexpected_crash.next_steps": "Versuche die Seite zu aktualisieren. Wenn das nicht hilft, kannst du Mastodon über einen anderen Browser oder eine native App verwenden.",
"errors.unexpected_crash.copy_stacktrace": "Fehlerlog in die Zwischenablage kopieren",
"errors.unexpected_crash.report_issue": "Problem melden",
"follow_request.authorize": "Erlauben",
"follow_request.reject": "Ablehnen",
+ "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Mitarbeiter von {domain} gedacht, dass es besser wäre den Follow manuell zu bestätigen.",
"getting_started.developers": "Entwickler",
"getting_started.directory": "Profilverzeichnis",
"getting_started.documentation": "Dokumentation",
"getting_started.heading": "Erste Schritte",
"getting_started.invite": "Leute einladen",
"getting_started.open_source_notice": "Mastodon ist quelloffene Software. Du kannst auf GitHub unter {github} dazu beitragen oder Probleme melden.",
- "getting_started.security": "Sicherheit",
+ "getting_started.security": "Konto & Sicherheit",
"getting_started.terms": "Nutzungsbedingungen",
"hashtag.column_header.tag_mode.all": "und {additional}",
"hashtag.column_header.tag_mode.any": "oder {additional}",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Einfach",
"home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen",
"home.column_settings.show_replies": "Antworten anzeigen",
+ "home.hide_announcements": "Verstecke Ankündigungen",
+ "home.show_announcements": "Zeige Ankündigungen",
"intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}",
"intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}",
"intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "Liste stummgeschalteter Profile öffnen",
"keyboard_shortcuts.my_profile": "Dein Profil öffnen",
"keyboard_shortcuts.notifications": "Benachrichtigungsspalte öffnen",
+ "keyboard_shortcuts.open_media": "um Medien zu öffnen",
"keyboard_shortcuts.pinned": "Liste angehefteter Beiträge öffnen",
"keyboard_shortcuts.profile": "Profil des Autors öffnen",
"keyboard_shortcuts.reply": "antworten",
"keyboard_shortcuts.requests": "Liste der Folge-Anfragen öffnen",
"keyboard_shortcuts.search": "Suche fokussieren",
+ "keyboard_shortcuts.spoilers": "um CW-Feld anzuzeigen/auszublenden",
"keyboard_shortcuts.start": "\"Erste Schritte\"-Spalte öffnen",
"keyboard_shortcuts.toggle_hidden": "Text hinter einer Inhaltswarnung verstecken/anzeigen",
"keyboard_shortcuts.toggle_sensitivity": "Medien hinter einer Inhaltswarnung verstecken/anzeigen",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Benachrichtigungen von diesem Account verbergen?",
"navigation_bar.apps": "Mobile Apps",
"navigation_bar.blocks": "Blockierte Profile",
+ "navigation_bar.bookmarks": "Lesezeichen",
"navigation_bar.community_timeline": "Lokale Zeitleiste",
"navigation_bar.compose": "Neuen Beitrag verfassen",
"navigation_bar.direct": "Direktnachrichten",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Sicherheit",
"notification.favourite": "{name} hat deinen Beitrag favorisiert",
"notification.follow": "{name} folgt dir",
+ "notification.follow_request": "{name} möchte dir folgen",
"notification.mention": "{name} hat dich erwähnt",
+ "notification.own_poll": "Deine Umfrage ist beendet",
"notification.poll": "Eine Umfrage in der du abgestimmt hast ist vorbei",
"notification.reblog": "{name} hat deinen Beitrag geteilt",
"notifications.clear": "Mitteilungen löschen",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Schnellfilterleiste",
"notifications.column_settings.filter_bar.show": "Anzeigen",
"notifications.column_settings.follow": "Neue Folgende:",
+ "notifications.column_settings.follow_request": "Neue Folgeanfragen:",
"notifications.column_settings.mention": "Erwähnungen:",
"notifications.column_settings.poll": "Ergebnisse von Umfragen:",
"notifications.column_settings.push": "Push-Benachrichtigungen",
@@ -308,7 +332,7 @@
"privacy.change": "Sichtbarkeit des Beitrags anpassen",
"privacy.direct.long": "Wird an erwähnte Profile gesendet",
"privacy.direct.short": "Direktnachricht",
- "privacy.private.long": "Wird nur für deine Folgende sichtbar sein",
+ "privacy.private.long": "Beitrag nur an Folgende",
"privacy.private.short": "Nur für Folgende",
"privacy.public.long": "Wird in öffentlichen Zeitleisten erscheinen",
"privacy.public.short": "Öffentlich",
@@ -322,6 +346,7 @@
"relative_time.just_now": "jetzt",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "heute",
"reply_indicator.cancel": "Abbrechen",
"report.forward": "An {target} weiterleiten",
"report.forward_hint": "Dieses Konto ist von einem anderen Server. Soll eine anonymisierte Kopie des Berichts auch dorthin geschickt werden?",
@@ -331,7 +356,7 @@
"report.target": "{target} melden",
"search.placeholder": "Suche",
"search_popout.search_format": "Fortgeschrittenes Suchformat",
- "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.",
+ "search_popout.tips.full_text": "Einfache Texteingabe gibt Tröts, die du geschrieben, gefavt und geteilt hast zurück. Außerdem auch Tröts, in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen, oder Hashtags.",
"search_popout.tips.hashtag": "Hashtag",
"search_popout.tips.status": "Beitrag",
"search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück",
@@ -344,6 +369,7 @@
"status.admin_account": "Öffne Moderationsoberfläche für @{name}",
"status.admin_status": "Öffne Beitrag in der Moderationsoberfläche",
"status.block": "Blockiere @{name}",
+ "status.bookmark": "Lesezeichen",
"status.cancel_reblog_private": "Nicht mehr teilen",
"status.cannot_reblog": "Dieser Beitrag kann nicht geteilt werden",
"status.copy": "Kopiere Link zum Beitrag",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} teilte",
"status.reblogs.empty": "Diesen Beitrag hat noch niemand geteilt. Sobald es jemand tut, wird diese Person hier angezeigt.",
"status.redraft": "Löschen und neu erstellen",
+ "status.remove_bookmark": "Lesezeichen entfernen",
"status.reply": "Antworten",
"status.replyAll": "Allen antworten",
"status.report": "@{name} melden",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# Minute} other {# Minuten}} verbleibend",
"time_remaining.moments": "Schließt in Kürze",
"time_remaining.seconds": "{number, plural, one {# Sekunde} other {# Sekunden}} verbleibend",
+ "timeline_hint.remote_resource_not_displayed": "{resource} von anderen Servern werden nicht angezeigt.",
+ "timeline_hint.resources.followers": "Follower",
+ "timeline_hint.resources.follows": "Folgt",
+ "timeline_hint.resources.statuses": "Ältere Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, eine {Person} other {Personen}} reden darüber",
"trends.trending_now": "In den Trends",
"ui.beforeunload": "Dein Entwurf geht verloren, wenn du Mastodon verlässt.",
@@ -400,18 +431,21 @@
"upload_button.label": "Mediendatei hinzufügen ({formats})",
"upload_error.limit": "Dateiupload-Limit erreicht.",
"upload_error.poll": "Dateiuploads sind in Kombination mit Umfragen nicht erlaubt.",
+ "upload_form.audio_description": "Beschreibe die Audiodatei für Menschen mit Hörschädigungen",
"upload_form.description": "Für Menschen mit Sehbehinderung beschreiben",
"upload_form.edit": "Bearbeiten",
"upload_form.undo": "Löschen",
+ "upload_form.video_description": "Beschreibe das Video für Menschen mit einer Hör- oder Sehbehinderung",
"upload_modal.analyzing_picture": "Analysiere Bild…",
"upload_modal.apply": "Übernehmen",
- "upload_modal.description_placeholder": "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern",
+ "upload_modal.description_placeholder": "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste",
"upload_modal.detect_text": "Text aus Bild erkennen",
"upload_modal.edit_media": "Medien bearbeiten",
"upload_modal.hint": "Klicke oder ziehe den Kreis auf die Vorschau, um den Brennpunkt auszuwählen, der immer auf allen Vorschaubilder angezeigt wird.",
"upload_modal.preview_label": "Vorschau ({ratio})",
"upload_progress.label": "Wird hochgeladen …",
"video.close": "Video schließen",
+ "video.download": "Datei herunterladen",
"video.exit_fullscreen": "Vollbild verlassen",
"video.expand": "Video vergrößern",
"video.fullscreen": "Vollbild",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index 8ab40ce3c..0aeefecab 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -142,7 +142,7 @@
{
"descriptors": [
{
- "defaultMessage": "Unhide {domain}",
+ "defaultMessage": "Unblock domain {domain}",
"id": "account.unblock_domain"
}
],
@@ -217,7 +217,7 @@
{
"descriptors": [
{
- "defaultMessage": "Toggle visibility",
+ "defaultMessage": "Hide {number, plural, one {image} other {images}}",
"id": "media_gallery.toggle_visible"
},
{
@@ -293,6 +293,10 @@
},
{
"descriptors": [
+ {
+ "defaultMessage": "today",
+ "id": "relative_time.today"
+ },
{
"defaultMessage": "now",
"id": "relative_time.just_now"
@@ -398,6 +402,14 @@
"defaultMessage": "Favourite",
"id": "status.favourite"
},
+ {
+ "defaultMessage": "Bookmark",
+ "id": "status.bookmark"
+ },
+ {
+ "defaultMessage": "Remove bookmark",
+ "id": "status.remove_bookmark"
+ },
{
"defaultMessage": "Expand this status",
"id": "status.open"
@@ -437,12 +449,32 @@
{
"defaultMessage": "Copy link to status",
"id": "status.copy"
+ },
+ {
+ "defaultMessage": "Block domain {domain}",
+ "id": "account.block_domain"
+ },
+ {
+ "defaultMessage": "Unblock domain {domain}",
+ "id": "account.unblock_domain"
+ },
+ {
+ "defaultMessage": "Unmute @{name}",
+ "id": "account.unmute"
+ },
+ {
+ "defaultMessage": "Unblock @{name}",
+ "id": "account.unblock"
}
],
"path": "app/javascript/mastodon/components/status_action_bar.json"
},
{
"descriptors": [
+ {
+ "defaultMessage": "Show thread",
+ "id": "status.show_thread"
+ },
{
"defaultMessage": "Read more",
"id": "status.read_more"
@@ -460,6 +492,22 @@
},
{
"descriptors": [
+ {
+ "defaultMessage": "Public",
+ "id": "privacy.public.short"
+ },
+ {
+ "defaultMessage": "Unlisted",
+ "id": "privacy.unlisted.short"
+ },
+ {
+ "defaultMessage": "Followers-only",
+ "id": "privacy.private.short"
+ },
+ {
+ "defaultMessage": "Direct",
+ "id": "privacy.direct.short"
+ },
{
"defaultMessage": "Filtered",
"id": "status.filtered"
@@ -471,13 +519,22 @@
{
"defaultMessage": "{name} boosted",
"id": "status.reblogged_by"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/status.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "{resource} from other servers are not displayed.",
+ "id": "timeline_hint.remote_resource_not_displayed"
},
{
- "defaultMessage": "Show thread",
- "id": "status.show_thread"
+ "defaultMessage": "Browse more on the original profile",
+ "id": "account.browse_more_on_origin_server"
}
],
- "path": "app/javascript/mastodon/components/status.json"
+ "path": "app/javascript/mastodon/components/timeline_hint.json"
},
{
"descriptors": [
@@ -495,7 +552,7 @@
{
"descriptors": [
{
- "defaultMessage": "Hide entire domain",
+ "defaultMessage": "Block entire domain",
"id": "confirmations.domain_block.confirm"
},
{
@@ -530,6 +587,14 @@
{
"defaultMessage": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
"id": "confirmations.reply.message"
+ },
+ {
+ "defaultMessage": "Hide entire domain",
+ "id": "confirmations.domain_block.confirm"
+ },
+ {
+ "defaultMessage": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "id": "confirmations.domain_block.message"
}
],
"path": "app/javascript/mastodon/containers/status_container.json"
@@ -583,6 +648,10 @@
},
{
"descriptors": [
+ {
+ "defaultMessage": "Older toots",
+ "id": "timeline_hint.resources.statuses"
+ },
{
"defaultMessage": "Profile unavailable",
"id": "empty_column.account_unavailable"
@@ -594,6 +663,23 @@
],
"path": "app/javascript/mastodon/features/account_timeline/index.json"
},
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Click to add a note",
+ "id": "account_note.placeholder"
+ },
+ {
+ "defaultMessage": "Saved",
+ "id": "generic.saved"
+ },
+ {
+ "defaultMessage": "Note",
+ "id": "account.account_note_header"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/account/components/account_note.json"
+ },
{
"descriptors": [
{
@@ -661,11 +747,11 @@
"id": "account.media"
},
{
- "defaultMessage": "Hide everything from {domain}",
+ "defaultMessage": "Block domain {domain}",
"id": "account.block_domain"
},
{
- "defaultMessage": "Unhide {domain}",
+ "defaultMessage": "Unblock domain {domain}",
"id": "account.unblock_domain"
},
{
@@ -701,7 +787,7 @@
"id": "navigation_bar.blocks"
},
{
- "defaultMessage": "Hidden domains",
+ "defaultMessage": "Blocked domains",
"id": "navigation_bar.domain_blocks"
},
{
@@ -737,13 +823,17 @@
"id": "account.muted"
},
{
- "defaultMessage": "Domain hidden",
+ "defaultMessage": "Domain blocked",
"id": "account.domain_blocked"
},
{
"defaultMessage": "Bot",
"id": "account.badges.bot"
},
+ {
+ "defaultMessage": "Group",
+ "id": "account.badges.group"
+ },
{
"defaultMessage": "Toots",
"id": "account.posts"
@@ -776,6 +866,10 @@
{
"defaultMessage": "Unmute sound",
"id": "video.unmute"
+ },
+ {
+ "defaultMessage": "Download file",
+ "id": "video.download"
}
],
"path": "app/javascript/mastodon/features/audio/index.json"
@@ -793,6 +887,19 @@
],
"path": "app/javascript/mastodon/features/blocks/index.json"
},
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Bookmarks",
+ "id": "column.bookmarks"
+ },
+ {
+ "defaultMessage": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "id": "empty_column.bookmarked_statuses"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/bookmarked_statuses/index.json"
+ },
{
"descriptors": [
{
@@ -860,6 +967,10 @@
{
"defaultMessage": "Logout",
"id": "navigation_bar.logout"
+ },
+ {
+ "defaultMessage": "Bookmarks",
+ "id": "navigation_bar.bookmarks"
}
],
"path": "app/javascript/mastodon/features/compose/components/action_bar.json"
@@ -986,6 +1097,14 @@
"defaultMessage": "Poll duration",
"id": "compose_form.poll.duration"
},
+ {
+ "defaultMessage": "Change poll to allow multiple choices",
+ "id": "compose_form.poll.switch_to_multiple"
+ },
+ {
+ "defaultMessage": "Change poll to allow for a single choice",
+ "id": "compose_form.poll.switch_to_single"
+ },
{
"defaultMessage": "{number, plural, one {# minute} other {# minutes}}",
"id": "intervals.full.minutes"
@@ -1008,7 +1127,7 @@
"id": "privacy.public.short"
},
{
- "defaultMessage": "Post to public timelines",
+ "defaultMessage": "Visible for all, shown in public timelines",
"id": "privacy.public.long"
},
{
@@ -1016,7 +1135,7 @@
"id": "privacy.unlisted.short"
},
{
- "defaultMessage": "Do not show in public timelines",
+ "defaultMessage": "Visible for all, but not in public timelines",
"id": "privacy.unlisted.long"
},
{
@@ -1024,7 +1143,7 @@
"id": "privacy.private.short"
},
{
- "defaultMessage": "Post to followers only",
+ "defaultMessage": "Visible for followers only",
"id": "privacy.private.long"
},
{
@@ -1032,7 +1151,7 @@
"id": "privacy.direct.short"
},
{
- "defaultMessage": "Post to mentioned users only",
+ "defaultMessage": "Visible for mentioned users only",
"id": "privacy.direct.long"
},
{
@@ -1120,7 +1239,7 @@
{
"descriptors": [
{
- "defaultMessage": "Add media ({formats})",
+ "defaultMessage": "Add images, a video or an audio file",
"id": "upload_button.label"
}
],
@@ -1346,6 +1465,10 @@
"defaultMessage": "Unmute @{name}",
"id": "account.unmute"
},
+ {
+ "defaultMessage": "Unfollow",
+ "id": "confirmations.unfollow.confirm"
+ },
{
"defaultMessage": "Are you sure you want to unfollow {name}?",
"id": "confirmations.unfollow.message"
@@ -1397,15 +1520,15 @@
{
"descriptors": [
{
- "defaultMessage": "Hidden domains",
+ "defaultMessage": "Blocked domains",
"id": "column.domain_blocks"
},
{
- "defaultMessage": "Unhide {domain}",
+ "defaultMessage": "Unblock domain {domain}",
"id": "account.unblock_domain"
},
{
- "defaultMessage": "There are no hidden domains yet.",
+ "defaultMessage": "There are no blocked domains yet.",
"id": "empty_column.domain_blocks"
}
],
@@ -1459,12 +1582,20 @@
{
"defaultMessage": "You don't have any follow requests yet. When you receive one, it will show up here.",
"id": "empty_column.follow_requests"
+ },
+ {
+ "defaultMessage": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "id": "follow_requests.unlocked_explanation"
}
],
"path": "app/javascript/mastodon/features/follow_requests/index.json"
},
{
"descriptors": [
+ {
+ "defaultMessage": "Followers",
+ "id": "timeline_hint.resources.followers"
+ },
{
"defaultMessage": "Profile unavailable",
"id": "empty_column.account_unavailable"
@@ -1478,6 +1609,10 @@
},
{
"descriptors": [
+ {
+ "defaultMessage": "Follows",
+ "id": "timeline_hint.resources.follows"
+ },
{
"defaultMessage": "Profile unavailable",
"id": "empty_column.account_unavailable"
@@ -1489,6 +1624,27 @@
],
"path": "app/javascript/mastodon/features/following/index.json"
},
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Close",
+ "id": "lightbox.close"
+ },
+ {
+ "defaultMessage": "Previous",
+ "id": "lightbox.previous"
+ },
+ {
+ "defaultMessage": "Next",
+ "id": "lightbox.next"
+ },
+ {
+ "defaultMessage": "Announcement",
+ "id": "announcement.announcement"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/getting_started/components/announcements.json"
+ },
{
"descriptors": [
{
@@ -1524,6 +1680,10 @@
"defaultMessage": "Direct messages",
"id": "navigation_bar.direct"
},
+ {
+ "defaultMessage": "Bookmarks",
+ "id": "navigation_bar.bookmarks"
+ },
{
"defaultMessage": "Preferences",
"id": "navigation_bar.preferences"
@@ -1604,6 +1764,10 @@
{
"defaultMessage": "Include additional tags in this column",
"id": "hashtag.column_settings.tag_toggle"
+ },
+ {
+ "defaultMessage": "Local only",
+ "id": "community.column_settings.local_only"
}
],
"path": "app/javascript/mastodon/features/hashtag_timeline/components/column_settings.json"
@@ -1652,6 +1816,14 @@
"defaultMessage": "Home",
"id": "column.home"
},
+ {
+ "defaultMessage": "Show announcements",
+ "id": "home.show_announcements"
+ },
+ {
+ "defaultMessage": "Hide announcements",
+ "id": "home.hide_announcements"
+ },
{
"defaultMessage": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
"id": "empty_column.home"
@@ -1774,6 +1946,10 @@
"defaultMessage": "to open status",
"id": "keyboard_shortcuts.enter"
},
+ {
+ "defaultMessage": "to open media",
+ "id": "keyboard_shortcuts.open_media"
+ },
{
"defaultMessage": "to show/hide text behind CW",
"id": "keyboard_shortcuts.toggle_hidden"
@@ -1802,6 +1978,10 @@
"defaultMessage": "to start a brand new toot",
"id": "keyboard_shortcuts.toot"
},
+ {
+ "defaultMessage": "to show/hide CW field",
+ "id": "keyboard_shortcuts.spoilers"
+ },
{
"defaultMessage": "to navigate back",
"id": "keyboard_shortcuts.back"
@@ -2024,6 +2204,10 @@
"defaultMessage": "New followers:",
"id": "notifications.column_settings.follow"
},
+ {
+ "defaultMessage": "New follow requests:",
+ "id": "notifications.column_settings.follow_request"
+ },
{
"defaultMessage": "Favourites:",
"id": "notifications.column_settings.favourite"
@@ -2075,20 +2259,41 @@
{
"descriptors": [
{
- "defaultMessage": "{name} followed you",
- "id": "notification.follow"
+ "defaultMessage": "Authorize",
+ "id": "follow_request.authorize"
},
+ {
+ "defaultMessage": "Reject",
+ "id": "follow_request.reject"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/notifications/components/follow_request.json"
+ },
+ {
+ "descriptors": [
{
"defaultMessage": "{name} favourited your status",
"id": "notification.favourite"
},
{
- "defaultMessage": "{name} boosted your status",
- "id": "notification.reblog"
+ "defaultMessage": "{name} followed you",
+ "id": "notification.follow"
+ },
+ {
+ "defaultMessage": "Your poll has ended",
+ "id": "notification.own_poll"
},
{
"defaultMessage": "A poll you have voted in has ended",
"id": "notification.poll"
+ },
+ {
+ "defaultMessage": "{name} boosted your status",
+ "id": "notification.reblog"
+ },
+ {
+ "defaultMessage": "{name} has requested to follow you",
+ "id": "notification.follow_request"
}
],
"path": "app/javascript/mastodon/features/notifications/components/notification.json"
@@ -2128,6 +2333,19 @@
],
"path": "app/javascript/mastodon/features/pinned_statuses/index.json"
},
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Media only",
+ "id": "community.column_settings.media_only"
+ },
+ {
+ "defaultMessage": "Remote only",
+ "id": "community.column_settings.remote_only"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/public_timeline/components/column_settings.json"
+ },
{
"descriptors": [
{
@@ -2196,6 +2414,14 @@
"defaultMessage": "Favourite",
"id": "status.favourite"
},
+ {
+ "defaultMessage": "Bookmark",
+ "id": "status.bookmark"
+ },
+ {
+ "defaultMessage": "More",
+ "id": "status.more"
+ },
{
"defaultMessage": "Mute @{name}",
"id": "status.mute"
@@ -2243,10 +2469,56 @@
{
"defaultMessage": "Copy link to status",
"id": "status.copy"
+ },
+ {
+ "defaultMessage": "Block domain {domain}",
+ "id": "account.block_domain"
+ },
+ {
+ "defaultMessage": "Unblock domain {domain}",
+ "id": "account.unblock_domain"
+ },
+ {
+ "defaultMessage": "Unmute @{name}",
+ "id": "account.unmute"
+ },
+ {
+ "defaultMessage": "Unblock @{name}",
+ "id": "account.unblock"
}
],
"path": "app/javascript/mastodon/features/status/components/action_bar.json"
},
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Sensitive content",
+ "id": "status.sensitive_warning"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/status/components/card.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Public",
+ "id": "privacy.public.short"
+ },
+ {
+ "defaultMessage": "Unlisted",
+ "id": "privacy.unlisted.short"
+ },
+ {
+ "defaultMessage": "Followers-only",
+ "id": "privacy.private.short"
+ },
+ {
+ "defaultMessage": "Direct",
+ "id": "privacy.direct.short"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/status/components/detailed_status.json"
+ },
{
"descriptors": [
{
@@ -2313,6 +2585,14 @@
{
"defaultMessage": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
"id": "confirmations.reply.message"
+ },
+ {
+ "defaultMessage": "Hide entire domain",
+ "id": "confirmations.domain_block.confirm"
+ },
+ {
+ "defaultMessage": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "id": "confirmations.domain_block.message"
}
],
"path": "app/javascript/mastodon/features/status/index.json"
@@ -2452,17 +2732,25 @@
"id": "upload_modal.description_placeholder"
},
{
- "defaultMessage": "Edit media",
- "id": "upload_modal.edit_media"
+ "defaultMessage": "Describe for people with hearing loss",
+ "id": "upload_form.audio_description"
},
{
- "defaultMessage": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "id": "upload_modal.hint"
+ "defaultMessage": "Describe for people with hearing loss or visual impairment",
+ "id": "upload_form.video_description"
},
{
"defaultMessage": "Describe for the visually impaired",
"id": "upload_form.description"
},
+ {
+ "defaultMessage": "Edit media",
+ "id": "upload_modal.edit_media"
+ },
+ {
+ "defaultMessage": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "id": "upload_modal.hint"
+ },
{
"defaultMessage": "Analyzing picture…",
"id": "upload_modal.analyzing_picture"
@@ -2612,6 +2900,10 @@
"defaultMessage": "Favourites",
"id": "navigation_bar.favourites"
},
+ {
+ "defaultMessage": "Bookmarks",
+ "id": "navigation_bar.bookmarks"
+ },
{
"defaultMessage": "Lists",
"id": "navigation_bar.lists"
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index ab000fa8d..f6e3c07c4 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Προσθήκη ή Αφαίρεση από λίστες",
"account.badges.bot": "Μποτ",
+ "account.badges.group": "Ομάδα",
"account.block": "Αποκλεισμός @{name}",
- "account.block_domain": "Απόκρυψε τα πάντα από το {domain}",
+ "account.block_domain": "Απόκρυψη όλων από {domain}",
"account.blocked": "Αποκλεισμένος/η",
+ "account.browse_more_on_origin_server": "Δες περισσότερα στο αρχικό προφίλ",
"account.cancel_follow_request": "Ακύρωση αιτήματος παρακολούθησης",
"account.direct": "Προσωπικό μήνυμα προς @{name}",
"account.domain_blocked": "Κρυμμένος τομέας",
@@ -38,10 +42,15 @@
"account.unfollow": "Διακοπή παρακολούθησης",
"account.unmute": "Διακοπή αποσιώπησης @{name}",
"account.unmute_notifications": "Διακοπή αποσιώπησης ειδοποιήσεων του/της @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Παρακαλούμε δοκίμασε ξανά αφού περάσει η {retry_time, time, medium}.",
"alert.rate_limited.title": "Περιορισμός συχνότητας",
"alert.unexpected.message": "Προέκυψε απροσδόκητο σφάλμα.",
"alert.unexpected.title": "Εεπ!",
+ "announcement.announcement": "Ανακοίνωση",
"autosuggest_hashtag.per_week": "{count} ανα εβδομάδα",
"boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά",
"bundle_column_error.body": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Κάτι πήγε στραβά κατά τη φόρτωση του στοιχείου.",
"bundle_modal_error.retry": "Δοκίμασε ξανά",
"column.blocks": "Αποκλεισμένοι χρήστες",
+ "column.bookmarks": "Σελιδοδείκτες",
"column.community": "Τοπική ροή",
"column.direct": "Προσωπικά μηνύματα",
"column.directory": "Δες προφίλ",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Εμφάνιση ρυθμίσεων",
"column_header.unpin": "Ξεκαρφίτσωμα",
"column_subheading.settings": "Ρυθμίσεις",
+ "community.column_settings.local_only": "Τοπικά μόνο",
"community.column_settings.media_only": "Μόνο πολυμέσα",
+ "community.column_settings.remote_only": "Απομακρυσμένα μόνο",
"compose_form.direct_message_warning": "Αυτό το τουτ θα σταλεί μόνο στους αναφερόμενους χρήστες.",
"compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα",
"compose_form.hashtag_warning": "Αυτό το τουτ δεν θα εμφανίζεται κάτω από κανένα hashtag καθώς είναι αφανές. Μόνο τα δημόσια τουτ μπορούν να αναζητηθούν ανά hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Διάρκεια δημοσκόπησης",
"compose_form.poll.option_placeholder": "Επιλογή {number}",
"compose_form.poll.remove_option": "Αφαίρεση επιλογής",
+ "compose_form.poll.switch_to_multiple": "Ενημέρωση δημοσκόπησης με πολλαπλές επιλογές",
+ "compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή",
"compose_form.publish": "Τουτ",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Σημείωσε τα πολυμέσα ως ευαίσθητα",
@@ -138,13 +152,14 @@
"empty_column.account_timeline": "Δεν έχει τουτ εδώ!",
"empty_column.account_unavailable": "Μη διαθέσιμο προφίλ",
"empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.",
+ "empty_column.bookmarked_statuses": "Δεν έχεις κανένα αποθηκευμένο τουτ ακόμα. Μόλις αποθηκεύσεις κάποιο, θα εμφανιστεί εδώ.",
"empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσιο παραμύθι ν' αρχινίσει!",
"empty_column.direct": "Δεν έχεις προσωπικά μηνύματα ακόμα. Όταν στείλεις ή λάβεις κανένα, θα εμφανιστεί εδώ.",
"empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.",
"empty_column.favourited_statuses": "Δεν έχεις κανένα αγαπημένο τουτ ακόμα. Μόλις αγαπήσεις κάποιο, θα εμφανιστεί εδώ.",
"empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.",
"empty_column.follow_requests": "Δεν έχεις κανένα αίτημα παρακολούθησης ακόμα. Μόλις λάβεις κάποιο, θα εμφανιστεί εδώ.",
- "empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ταμπέλα.",
+ "empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ετικέτα.",
"empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.",
"empty_column.home.public_timeline": "η δημόσια ροή",
"empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Αναφορά προβλήματος",
"follow_request.authorize": "Ενέκρινε",
"follow_request.reject": "Απέρριψε",
+ "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.",
"getting_started.developers": "Ανάπτυξη",
"getting_started.directory": "Κατάλογος λογαριασμών",
"getting_started.documentation": "Τεκμηρίωση",
@@ -170,7 +186,7 @@
"hashtag.column_header.tag_mode.any": "ή {additional}",
"hashtag.column_header.tag_mode.none": "χωρίς {additional}",
"hashtag.column_settings.select.no_options_message": "Δεν βρέθηκαν προτάσεις",
- "hashtag.column_settings.select.placeholder": "Γράψε μερικές ταμπέλες…",
+ "hashtag.column_settings.select.placeholder": "Γράψε μερικές ετικέτες…",
"hashtag.column_settings.tag_mode.all": "Όλα αυτά",
"hashtag.column_settings.tag_mode.any": "Οποιοδήποτε από αυτά",
"hashtag.column_settings.tag_mode.none": "Κανένα από αυτά",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Βασικές ρυθμίσεις",
"home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων",
"home.column_settings.show_replies": "Εμφάνιση απαντήσεων",
+ "home.hide_announcements": "Απόκρυψη ανακοινώσεων",
+ "home.show_announcements": "Εμφάνιση ανακοινώσεων",
"intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}",
"intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}",
"intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "άνοιγμα λίστας αποσιωπημενων χρηστών",
"keyboard_shortcuts.my_profile": "άνοιγμα του προφίλ σου",
"keyboard_shortcuts.notifications": "άνοιγμα στήλης ειδοποιήσεων",
+ "keyboard_shortcuts.open_media": "εμφάνιση πολυμέσου",
"keyboard_shortcuts.pinned": "άνοιγμα λίστας καρφιτσωμένων τουτ",
"keyboard_shortcuts.profile": "άνοιγμα προφίλ συγγραφέα",
"keyboard_shortcuts.reply": "απάντηση",
"keyboard_shortcuts.requests": "άνοιγμα λίστας αιτημάτων παρακολούθησης",
"keyboard_shortcuts.search": "εστίαση αναζήτησης",
+ "keyboard_shortcuts.spoilers": "εμφάνιση/απόκρυψη πεδίου CW",
"keyboard_shortcuts.start": "άνοιγμα κολώνας \"Ξεκινώντας\"",
"keyboard_shortcuts.toggle_hidden": "εμφάνιση/απόκρυψη κειμένου πίσω από την προειδοποίηση",
"keyboard_shortcuts.toggle_sensitivity": "εμφάνιση/απόκρυψη πολυμέσων",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;",
"navigation_bar.apps": "Εφαρμογές φορητών συσκευών",
"navigation_bar.blocks": "Αποκλεισμένοι χρήστες",
+ "navigation_bar.bookmarks": "Σελιδοδείκτες",
"navigation_bar.community_timeline": "Τοπική ροή",
"navigation_bar.compose": "Γράψε νέο τουτ",
"navigation_bar.direct": "Προσωπικά μηνύματα",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Ασφάλεια",
"notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου",
"notification.follow": "Ο/Η {name} σε ακολούθησε",
+ "notification.follow_request": "Ο/H {name} ζήτησε να σε παρακολουθεί",
"notification.mention": "Ο/Η {name} σε ανέφερε",
+ "notification.own_poll": "Η ψηφοφορία σου έληξε",
"notification.poll": "Τελείωσε μια από τις ψηφοφορίες που συμμετείχες",
"notification.reblog": "Ο/Η {name} προώθησε την κατάστασή σου",
"notifications.clear": "Καθαρισμός ειδοποιήσεων",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου",
"notifications.column_settings.filter_bar.show": "Εμφάνιση",
"notifications.column_settings.follow": "Νέοι ακόλουθοι:",
+ "notifications.column_settings.follow_request": "Νέο αίτημα παρακολούθησης:",
"notifications.column_settings.mention": "Αναφορές:",
"notifications.column_settings.poll": "Αποτελέσματα ψηφοφορίας:",
"notifications.column_settings.push": "Άμεσες ειδοποιήσεις",
@@ -322,6 +346,7 @@
"relative_time.just_now": "τώρα",
"relative_time.minutes": "{number}λ",
"relative_time.seconds": "{number}δ",
+ "relative_time.today": "σήμερα",
"reply_indicator.cancel": "Άκυρο",
"report.forward": "Προώθηση προς {target}",
"report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της καταγγελίας κι εκεί;",
@@ -331,19 +356,20 @@
"report.target": "Καταγγελία {target}",
"search.placeholder": "Αναζήτηση",
"search_popout.search_format": "Προχωρημένη αναζήτηση",
- "search_popout.tips.full_text": "Απλό κείμενο που επιστρέφει καταστάσεις που έχεις γράψει, σημειώσει ως αγαπημένες, προωθήσει ή έχεις αναφερθεί σε αυτές, καθώς και όσα ονόματα χρηστών και ταμπέλες ταιριάζουν.",
- "search_popout.tips.hashtag": "ταμπέλα",
+ "search_popout.tips.full_text": "Απλό κείμενο που επιστρέφει καταστάσεις που έχεις γράψει, έχεις σημειώσει ως αγαπημένες, έχεις προωθήσει ή έχεις αναφερθεί σε αυτές, καθώς και όσα ονόματα χρηστών και ετικέτες ταιριάζουν.",
+ "search_popout.tips.hashtag": "ετικέτα",
"search_popout.tips.status": "κατάσταση",
- "search_popout.tips.text": "Απλό κείμενο που επιστρέφει ονόματα και ταμπέλες που ταιριάζουν",
+ "search_popout.tips.text": "Απλό κείμενο που επιστρέφει ονόματα και ετικέτες που ταιριάζουν",
"search_popout.tips.user": "χρήστης",
"search_results.accounts": "Άνθρωποι",
- "search_results.hashtags": "Ταμπέλες",
+ "search_results.hashtags": "Ετικέτες",
"search_results.statuses": "Τουτ",
"search_results.statuses_fts_disabled": "Η αναζήτηση τουτ βάσει του περιεχόμενού τους δεν είναι ενεργοποιημένη σε αυτό τον κόμβο.",
"search_results.total": "{count, number} {count, plural, zero {αποτελέσματα} one {αποτέλεσμα} other {αποτελέσματα}}",
"status.admin_account": "Άνοιγμα λειτουργίας διαμεσολάβησης για τον/την @{name}",
"status.admin_status": "Άνοιγμα αυτής της δημοσίευσης στη λειτουργία διαμεσολάβησης",
"status.block": "Αποκλεισμός @{name}",
+ "status.bookmark": "Σελιδοδείκτης",
"status.cancel_reblog_private": "Ακύρωσε την προώθηση",
"status.cannot_reblog": "Αυτή η δημοσίευση δεν μπορεί να προωθηθεί",
"status.copy": "Αντιγραφή συνδέσμου της δημοσίευσης",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} προώθησε",
"status.reblogs.empty": "Κανείς δεν προώθησε αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.",
"status.redraft": "Σβήσε & ξαναγράψε",
+ "status.remove_bookmark": "Αφαίρεση σελιδοδείκτη",
"status.reply": "Απάντησε",
"status.replyAll": "Απάντησε στην συζήτηση",
"status.report": "Κατάγγειλε @{name}",
@@ -393,16 +420,22 @@
"time_remaining.minutes": "απομένουν {number, plural, one {# λεπτό} other {# λεπτά}}",
"time_remaining.moments": "Απομένουν στιγμές",
"time_remaining.seconds": "απομένουν {number, plural, one {# δευτερόλεπτο} other {# δευτερόλεπτα}}",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} μιλάνε",
+ "timeline_hint.remote_resource_not_displayed": "{resource} από άλλους διακομιστές δεν εμφανίζονται.",
+ "timeline_hint.resources.followers": "Ακόλουθοι",
+ "timeline_hint.resources.follows": "Ακολουθεί",
+ "timeline_hint.resources.statuses": "Παλαιότερα τουτ",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {άτομο μιλάει} other {άτομα μιλάνε}}",
"trends.trending_now": "Δημοφιλή τώρα",
"ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Mastodon.",
"upload_area.title": "Drag & drop για να ανεβάσεις",
"upload_button.label": "Πρόσθεσε πολυμέσα ({formats})",
"upload_error.limit": "Υπέρβαση ορίου μεγέθους ανεβασμένων αρχείων.",
"upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.",
+ "upload_form.audio_description": "Περιγραφή για άτομα με προβλήματα ακοής",
"upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης",
"upload_form.edit": "Ενημέρωση",
"upload_form.undo": "Διαγραφή",
+ "upload_form.video_description": "Περιγραφή για άτομα με προβλήματα ακοής ή όρασης",
"upload_modal.analyzing_picture": "Ανάλυση εικόνας…",
"upload_modal.apply": "Εφαρμογή",
"upload_modal.description_placeholder": "Λύκος μαύρος και ισχνός του πατέρα του καημός",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Προεπισκόπηση ({ratio})",
"upload_progress.label": "Ανεβαίνει...",
"video.close": "Κλείσε το βίντεο",
+ "video.download": "Λήψη αρχείου",
"video.exit_fullscreen": "Έξοδος από πλήρη οθόνη",
"video.expand": "Επέκταση βίντεο",
"video.fullscreen": "Πλήρης οθόνη",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index f4b6d0797..2e1bb8b05 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -1,12 +1,15 @@
{
+ "account.account_note_header": "Note",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
+ "account.badges.group": "Group",
"account.block": "Block @{name}",
- "account.block_domain": "Hide everything from {domain}",
+ "account.block_domain": "Block domain {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct message @{name}",
- "account.domain_blocked": "Domain hidden",
+ "account.domain_blocked": "Domain blocked",
"account.edit_profile": "Edit profile",
"account.endorse": "Feature on profile",
"account.follow": "Follow",
@@ -33,15 +36,17 @@
"account.share": "Share @{name}'s profile",
"account.show_reblogs": "Show boosts from @{name}",
"account.unblock": "Unblock @{name}",
- "account.unblock_domain": "Unhide {domain}",
+ "account.unblock_domain": "Unblock domain {domain}",
"account.unendorse": "Don't feature on profile",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.placeholder": "Click to add note",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
@@ -51,10 +56,11 @@
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Blocked users",
+ "column.bookmarks": "Bookmarks",
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
- "column.domain_blocks": "Hidden domains",
+ "column.domain_blocks": "Blocked domains",
"column.favourites": "Favourites",
"column.follow_requests": "Follow requests",
"column.home": "Home",
@@ -72,7 +78,9 @@
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.settings": "Settings",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media Only",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be sent to the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -83,6 +91,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -96,10 +106,10 @@
"confirmations.block.confirm": "Block",
"confirmations.block.message": "Are you sure you want to block {name}?",
"confirmations.delete.confirm": "Delete",
- "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete.message": "Are you sure you want to delete this toot?",
"confirmations.delete_list.confirm": "Delete",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
- "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.confirm": "Block entire domain",
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
"confirmations.logout.confirm": "Log out",
"confirmations.logout.message": "Are you sure you want to log out?",
@@ -107,7 +117,7 @@
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.message": "Are you sure you want to mute {name}?",
"confirmations.redraft.confirm": "Delete & redraft",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+ "confirmations.redraft.message": "Are you sure you want to delete this toot and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
"confirmations.reply.confirm": "Reply",
"confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
"confirmations.unfollow.confirm": "Unfollow",
@@ -120,7 +130,7 @@
"directory.local": "From {domain} only",
"directory.new_arrivals": "New arrivals",
"directory.recently_active": "Recently active",
- "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.instructions": "Embed this toot on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
@@ -139,16 +149,17 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.domain_blocks": "There are no blocked domains yet.",
"empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
"empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
"empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "There is nothing in this hashtag yet.",
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
"empty_column.home.public_timeline": "the public timeline",
- "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new toots, they will appear here.",
"empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
"empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
@@ -159,6 +170,8 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "generic.saved": "Saved",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -179,6 +192,8 @@
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -202,12 +217,12 @@
"keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "to boost",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.column": "to focus a toot in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
- "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.enter": "to open toot",
"keyboard_shortcuts.favourite": "to favourite",
"keyboard_shortcuts.favourites": "to open favourites list",
"keyboard_shortcuts.federated": "to open federated timeline",
@@ -220,11 +235,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -246,17 +263,18 @@
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.domain_blocks": "Blocked domains",
"navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
@@ -272,11 +290,13 @@
"navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
- "notification.favourite": "{name} favourited your status",
+ "notification.favourite": "{name} favourited your toot",
"notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
- "notification.reblog": "{name} boosted your status",
+ "notification.reblog": "{name} boosted your toot",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications",
@@ -285,6 +305,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
@@ -306,14 +327,14 @@
"poll.voted": "You voted for this answer",
"poll_button.add_poll": "Add a poll",
"poll_button.remove_poll": "Remove poll",
- "privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
+ "privacy.change": "Adjust toot privacy",
+ "privacy.direct.long": "Visible for mentioned users only",
"privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
+ "privacy.private.long": "Visible for followers only",
"privacy.private.short": "Followers-only",
- "privacy.public.long": "Post to public timelines",
+ "privacy.public.long": "Visible for all, shown in public timelines",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Do not post to public timelines",
+ "privacy.unlisted.long": "Visible for all, but not in public timelines",
"privacy.unlisted.short": "Unlisted",
"refresh": "Refresh",
"regeneration_indicator.label": "Loading…",
@@ -323,6 +344,7 @@
"relative_time.just_now": "now",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Cancel",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -332,9 +354,9 @@
"report.target": "Reporting {target}",
"search.placeholder": "Search",
"search_popout.search_format": "Advanced search format",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.full_text": "Simple text returns toots you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "status",
+ "search_popout.tips.status": "toot",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
@@ -343,11 +365,12 @@
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
+ "status.admin_status": "Open this toot in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
- "status.copy": "Copy link to status",
+ "status.copy": "Copy link to toot",
"status.delete": "Delete",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
@@ -360,7 +383,7 @@
"status.more": "More",
"status.mute": "Mute @{name}",
"status.mute_conversation": "Mute conversation",
- "status.open": "Expand this status",
+ "status.open": "Expand this toot",
"status.pin": "Pin on profile",
"status.pinned": "Pinned toot",
"status.read_more": "Read more",
@@ -369,6 +392,7 @@
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
@@ -394,16 +418,22 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
"upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -413,6 +443,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading...",
"video.close": "Close video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 0070cdb5c..9f902c522 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Aldoni al aŭ forigi el listoj",
"account.badges.bot": "Roboto",
+ "account.badges.group": "Grupo",
"account.block": "Bloki @{name}",
"account.block_domain": "Kaŝi ĉion de {domain}",
"account.blocked": "Blokita",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Nuligi peton de sekvado",
"account.direct": "Rekte mesaĝi @{name}",
"account.domain_blocked": "Domajno kaŝita",
@@ -38,10 +42,15 @@
"account.unfollow": "Ne plu sekvi",
"account.unmute": "Malsilentigi @{name}",
"account.unmute_notifications": "Malsilentigi sciigojn de @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Bonvolu reprovi post {retry_time, time, medium}.",
"alert.rate_limited.title": "Mesaĝkvante limigita",
"alert.unexpected.message": "Neatendita eraro okazis.",
"alert.unexpected.title": "Ups!",
+ "announcement.announcement": "Anonco",
"autosuggest_hashtag.per_week": "{count} semajne",
"boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje",
"bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Io misfunkciis en la ŝargado de ĉi tiu elemento.",
"bundle_modal_error.retry": "Bonvolu reprovi",
"column.blocks": "Blokitaj uzantoj",
+ "column.bookmarks": "Legosignoj",
"column.community": "Loka tempolinio",
"column.direct": "Rektaj mesaĝoj",
"column.directory": "Trarigardi profilojn",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Montri agordojn",
"column_header.unpin": "Depingli",
"column_subheading.settings": "Agordado",
+ "community.column_settings.local_only": "Nur loka",
"community.column_settings.media_only": "Nur aŭdovidaĵoj",
+ "community.column_settings.remote_only": "Nur malproksima",
"compose_form.direct_message_warning": "Tiu mesaĝo estos sendita nur al menciitaj uzantoj.",
"compose_form.direct_message_warning_learn_more": "Lerni pli",
"compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Balotenketa daŭro",
"compose_form.poll.option_placeholder": "Elekteblo {number}",
"compose_form.poll.remove_option": "Forigi ĉi tiu elekteblon",
+ "compose_form.poll.switch_to_multiple": "Ŝanĝi la balotenketon por permesi multajn elektojn",
+ "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton",
"compose_form.publish": "Hup",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Marki la aŭdovidaĵojn kiel tiklaj",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "Elsaluti",
"confirmations.logout.message": "Ĉu vi certas ke vi volas elsaluti?",
"confirmations.mute.confirm": "Silentigi",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Ĉi-tio kaŝos mesaĝojn el ili kaj mesaĝojn kiuj mencias ilin, sed ili ankoraŭ rajtos vidi viajn mesaĝojn kaj sekvi vin.",
"confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?",
"confirmations.redraft.confirm": "Forigi kaj reskribi",
"confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi tiun mesaĝon kaj reskribi ĝin? Ĉiuj diskonigoj kaj stelumoj estos perditaj, kaj respondoj al la originala mesaĝo estos senparentaj.",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Neniu mesaĝo ĉi tie!",
"empty_column.account_unavailable": "Profilo ne disponebla",
"empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.",
+ "empty_column.bookmarked_statuses": "Vi ankoraŭ ne aldonis mesaĝon al viaj legosignoj. Kiam vi aldonos iun, tiu aperos ĉi tie.",
"empty_column.community": "La loka tempolinio estas malplena. Skribu ion por plenigi ĝin!",
"empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.",
"empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.",
@@ -152,12 +167,13 @@
"empty_column.mutes": "Vi ne ankoraŭ silentigis iun uzanton.",
"empty_column.notifications": "Vi ankoraŭ ne havas sciigojn. Interagu kun aliaj por komenci konversacion.",
"empty_column.public": "Estas nenio ĉi tie! Publike skribu ion, aŭ mane sekvu uzantojn de aliaj serviloj por plenigi la publikan tempolinion",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "error.unexpected_crash.explanation": "Pro eraro en nia kodo, aŭ problemo de kongruo en via retumilo, ĉi tiu paĝo ne povis esti montrata ĝuste.",
+ "error.unexpected_crash.next_steps": "Provu refreŝigi la paĝon. Se tio ne helpas, vi ankoraŭ povus uzi Mastodon per malsama retumilo aŭ operaciuma aplikajo.",
+ "errors.unexpected_crash.copy_stacktrace": "Kopii stakspuron en tondujo",
"errors.unexpected_crash.report_issue": "Raporti problemon",
"follow_request.authorize": "Rajtigi",
"follow_request.reject": "Rifuzi",
+ "follow_requests.unlocked_explanation": "137/5000\nKvankam via konto ne estas ŝlosita, la dungitaro de {domain} opiniis, ke vi eble volus revizii petojn de sekvadon el ĉi tiuj kontoj permane.",
"getting_started.developers": "Programistoj",
"getting_started.directory": "Profilujo",
"getting_started.documentation": "Dokumentado",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Bazaj agordoj",
"home.column_settings.show_reblogs": "Montri diskonigojn",
"home.column_settings.show_replies": "Montri respondojn",
+ "home.hide_announcements": "Kaŝi anoncojn",
+ "home.show_announcements": "Montri anoncojn",
"intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}",
"intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}",
@@ -198,38 +216,40 @@
"introduction.welcome.action": "Ek!",
"introduction.welcome.headline": "Unuaj paŝoj",
"introduction.welcome.text": "Bonvenon en Fediverse! Tre baldaŭ, vi povos disdoni mesaĝojn kaj paroli al viaj amikoj tra granda servila diverseco. Sed ĉi tiu servilo, {domain}, estas speciala: ĝi enhavas vian profilon, do memoru ĝian nomon.",
- "keyboard_shortcuts.back": "por reveni",
- "keyboard_shortcuts.blocked": "por malfermi la liston de blokitaj uzantoj",
- "keyboard_shortcuts.boost": "por diskonigi",
- "keyboard_shortcuts.column": "por fokusigi mesaĝon en unu el la kolumnoj",
- "keyboard_shortcuts.compose": "por fokusigi la tekstujon",
+ "keyboard_shortcuts.back": "reveni",
+ "keyboard_shortcuts.blocked": "malfermi la liston de blokitaj uzantoj",
+ "keyboard_shortcuts.boost": "diskonigi",
+ "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj",
+ "keyboard_shortcuts.compose": "enfokusigi la tekstujon",
"keyboard_shortcuts.description": "Priskribo",
- "keyboard_shortcuts.direct": "por malfermi la kolumnon de rektaj mesaĝoj",
- "keyboard_shortcuts.down": "por iri suben en la listo",
- "keyboard_shortcuts.enter": "por malfermi mesaĝon",
- "keyboard_shortcuts.favourite": "por stelumi",
- "keyboard_shortcuts.favourites": "por malfermi la liston de stelumoj",
- "keyboard_shortcuts.federated": "por malfermi la frataran tempolinion",
+ "keyboard_shortcuts.direct": "malfermi la kolumnon de rektaj mesaĝoj",
+ "keyboard_shortcuts.down": "iri suben en la listo",
+ "keyboard_shortcuts.enter": "malfermi mesaĝon",
+ "keyboard_shortcuts.favourite": "stelumi",
+ "keyboard_shortcuts.favourites": "malfermi la liston de stelumoj",
+ "keyboard_shortcuts.federated": "malfermi la frataran tempolinion",
"keyboard_shortcuts.heading": "Klavaraj mallongigoj",
- "keyboard_shortcuts.home": "por malfermi la hejman tempolinion",
+ "keyboard_shortcuts.home": "malfermi la hejman tempolinion",
"keyboard_shortcuts.hotkey": "Rapidklavo",
- "keyboard_shortcuts.legend": "por montri ĉi tiun noton",
- "keyboard_shortcuts.local": "por malfermi la lokan tempolinion",
+ "keyboard_shortcuts.legend": "montri ĉi tiun noton",
+ "keyboard_shortcuts.local": "malfermi la lokan tempolinion",
"keyboard_shortcuts.mention": "por mencii la aŭtoron",
- "keyboard_shortcuts.muted": "por malfermi la liston de silentigitaj uzantoj",
- "keyboard_shortcuts.my_profile": "por malfermi vian profilon",
- "keyboard_shortcuts.notifications": "por malfermi la kolumnon de sciigoj",
- "keyboard_shortcuts.pinned": "por malfermi la liston de alpinglitaj mesaĝoj",
- "keyboard_shortcuts.profile": "por malfermi la profilon de la aŭtoro",
- "keyboard_shortcuts.reply": "por respondi",
- "keyboard_shortcuts.requests": "por malfermi la liston de petoj de sekvado",
- "keyboard_shortcuts.search": "por fokusigi la serĉilon",
- "keyboard_shortcuts.start": "por malfermi la kolumnon «por komenci»",
- "keyboard_shortcuts.toggle_hidden": "por montri/kaŝi tekston malantaŭ enhava averto",
- "keyboard_shortcuts.toggle_sensitivity": "por montri/kaŝi aŭdovidaĵojn",
- "keyboard_shortcuts.toot": "por komenci tute novan mesaĝon",
- "keyboard_shortcuts.unfocus": "por malfokusigi la tekstujon aŭ la serĉilon",
- "keyboard_shortcuts.up": "por iri supren en la listo",
+ "keyboard_shortcuts.muted": "malfermi la liston de silentigitaj uzantoj",
+ "keyboard_shortcuts.my_profile": "malfermi vian profilon",
+ "keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj",
+ "keyboard_shortcuts.open_media": "malfermi aŭdovidaĵon",
+ "keyboard_shortcuts.pinned": "malfermi la liston de alpinglitaj mesaĝoj",
+ "keyboard_shortcuts.profile": "malfermi la profilon de la aŭtoro",
+ "keyboard_shortcuts.reply": "respondi",
+ "keyboard_shortcuts.requests": "malfermi la liston de petoj de sekvado",
+ "keyboard_shortcuts.search": "enfokusigi la serĉilon",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»",
+ "keyboard_shortcuts.toggle_hidden": "montri/kaŝi tekston malantaŭ enhava averto",
+ "keyboard_shortcuts.toggle_sensitivity": "montri/kaŝi aŭdovidaĵojn",
+ "keyboard_shortcuts.toot": "komenci tute novan mesaĝon",
+ "keyboard_shortcuts.unfocus": "malenfokusigi la tekstujon aŭ la serĉilon",
+ "keyboard_shortcuts.up": "iri supren en la listo",
"lightbox.close": "Fermi",
"lightbox.next": "Sekva",
"lightbox.previous": "Antaŭa",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?",
"navigation_bar.apps": "Telefonaj aplikaĵoj",
"navigation_bar.blocks": "Blokitaj uzantoj",
+ "navigation_bar.bookmarks": "Legosignoj",
"navigation_bar.community_timeline": "Loka tempolinio",
"navigation_bar.compose": "Skribi novan mesaĝon",
"navigation_bar.direct": "Rektaj mesaĝoj",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Sekureco",
"notification.favourite": "{name} stelumis vian mesaĝon",
"notification.follow": "{name} eksekvis vin",
+ "notification.follow_request": "{name} petis sekvi vin",
"notification.mention": "{name} menciis vin",
+ "notification.own_poll": "Via balotenketo finiĝitis",
"notification.poll": "Partoprenita balotenketo finiĝis",
"notification.reblog": "{name} diskonigis vian mesaĝon",
"notifications.clear": "Forviŝi sciigojn",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Rapida filtra breto",
"notifications.column_settings.filter_bar.show": "Montri",
"notifications.column_settings.follow": "Novaj sekvantoj:",
+ "notifications.column_settings.follow_request": "Novaj petoj de sekvado:",
"notifications.column_settings.mention": "Mencioj:",
"notifications.column_settings.poll": "Balotenketaj rezultoj:",
"notifications.column_settings.push": "Puŝsciigoj",
@@ -322,6 +346,7 @@
"relative_time.just_now": "nun",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "hodiaŭ",
"reply_indicator.cancel": "Nuligi",
"report.forward": "Plusendi al {target}",
"report.forward_hint": "La konto estas en alia servilo. Ĉu sendi sennomigitan kopion de la signalo ankaŭ tien?",
@@ -344,6 +369,7 @@
"status.admin_account": "Malfermi la kontrolan interfacon por @{name}",
"status.admin_status": "Malfermi ĉi tiun mesaĝon en la kontrola interfaco",
"status.block": "Bloki @{name}",
+ "status.bookmark": "Aldoni al la legosignoj",
"status.cancel_reblog_private": "Ne plu diskonigi",
"status.cannot_reblog": "Ĉi tiu mesaĝo ne diskonigeblas",
"status.copy": "Kopii la ligilon al la mesaĝo",
@@ -359,7 +385,7 @@
"status.more": "Pli",
"status.mute": "Silentigi @{name}",
"status.mute_conversation": "Silentigi konversacion",
- "status.open": "Grandigi",
+ "status.open": "Grandigi ĉi tiun mesaĝon",
"status.pin": "Alpingli profile",
"status.pinned": "Alpinglita mesaĝo",
"status.read_more": "Legi pli",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} diskonigis",
"status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.",
"status.redraft": "Forigi kaj reskribi",
+ "status.remove_bookmark": "Forigi legosignon",
"status.reply": "Respondi",
"status.replyAll": "Respondi al la fadeno",
"status.report": "Signali @{name}",
@@ -376,7 +403,7 @@
"status.show_less": "Malgrandigi",
"status.show_less_all": "Malgrandigi ĉiujn",
"status.show_more": "Grandigi",
- "status.show_more_all": "Grandigi ĉiujn",
+ "status.show_more_all": "Malfoldi ĉiun",
"status.show_thread": "Montri la fadenon",
"status.uncached_media_warning": "Nedisponebla",
"status.unmute_conversation": "Malsilentigi la konversacion",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minuto} other {# minutoj}} restas",
"time_remaining.moments": "Momenteto restas",
"time_remaining.seconds": "{number, plural, one {# sekundo} other {# sekundoj}} restas",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {persono} other {personoj}} parolas",
"trends.trending_now": "Nunaj furoraĵoj",
"ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Aldoni aŭdovidaĵon (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Limo de dosiera alŝutado transpasita.",
"upload_error.poll": "Alŝuto de dosiero ne permesita kun balotenketo.",
+ "upload_form.audio_description": "Priskribi por homoj kiuj malfacile aŭdi",
"upload_form.description": "Priskribi por misvidantaj homoj",
"upload_form.edit": "Redakti",
"upload_form.undo": "Forigi",
+ "upload_form.video_description": "Priskribi por homoj kiuj malfacile aŭdi aŭ vidi",
"upload_modal.analyzing_picture": "Bilda analizado…",
"upload_modal.apply": "Apliki",
"upload_modal.description_placeholder": "Laŭ Ludoviko Zamenhof bongustas freŝa ĉeĥa manĝaĵo kun spicoj",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Antaŭvido ({ratio})",
"upload_progress.label": "Alŝutado…",
"video.close": "Fermi la videon",
+ "video.download": "Elŝuti dosieron",
"video.exit_fullscreen": "Eksigi plenekrana",
"video.expand": "Grandigi la videon",
"video.fullscreen": "Igi plenekrana",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index d46063b18..c94e15878 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Agregar o quitar de las listas",
"account.badges.bot": "Bot",
+ "account.badges.group": "Grupo",
"account.block": "Bloquear a @{name}",
"account.block_domain": "Ocultar todo de {domain}",
"account.blocked": "Bloqueado",
+ "account.browse_more_on_origin_server": "Explorar más en el perfil original",
"account.cancel_follow_request": "Cancelar la solicitud de seguimiento",
"account.direct": "Mensaje directo a @{name}",
"account.domain_blocked": "Dominio oculto",
@@ -38,10 +42,15 @@
"account.unfollow": "Dejar de seguir",
"account.unmute": "Dejar de silenciar a @{name}",
"account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Por favor, reintentá después de las {retry_time, time, medium}.",
"alert.rate_limited.title": "Tarifa limitada",
- "alert.unexpected.message": "Ocurrió un error inesperado.",
+ "alert.unexpected.message": "Ocurrió un error.",
"alert.unexpected.title": "¡Epa!",
+ "announcement.announcement": "Anuncio",
"autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez",
"bundle_column_error.body": "Algo salió mal al cargar este componente.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Algo salió mal al cargar este componente.",
"bundle_modal_error.retry": "Intentá de nuevo",
"column.blocks": "Usuarios bloqueados",
+ "column.bookmarks": "Marcadores",
"column.community": "Línea temporal local",
"column.direct": "Mensajes directos",
"column.directory": "Explorar perfiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Mostrar configuración",
"column_header.unpin": "Dejar de fijar",
"column_subheading.settings": "Configuración",
+ "community.column_settings.local_only": "Sólo local",
"community.column_settings.media_only": "Sólo medios",
+ "community.column_settings.remote_only": "Sólo remoto",
"compose_form.direct_message_warning": "Este toot sólo será enviado a los usuarios mencionados.",
"compose_form.direct_message_warning_learn_more": "Aprendé más",
"compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Duración de la encuesta",
"compose_form.poll.option_placeholder": "Opción {number}",
"compose_form.poll.remove_option": "Quitá esta opción",
+ "compose_form.poll.switch_to_multiple": "Cambiar encuesta para permitir opciones múltiples",
+ "compose_form.poll.switch_to_single": "Cambiar encuesta para permitir una sola opción",
"compose_form.publish": "Tootear",
"compose_form.publish_loud": "¡{publish}!",
"compose_form.sensitive.hide": "Marcar medio como sensible",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "Cerrar sesión",
"confirmations.logout.message": "¿Estás seguro que querés cerrar la sesión?",
"confirmations.mute.confirm": "Silenciar",
- "confirmations.mute.explanation": "Esto ocultará mensajes de ellos y mensajes que los mencionen, pero todavía les permitirá ver tus mensajes o seguirte.",
+ "confirmations.mute.explanation": "Se ocultarán los mensajes de esta cuenta y los mensajes de otras cuentas que mencionen a ésta, pero todavía esta cuenta podrá ver tus mensajes o seguirte.",
"confirmations.mute.message": "¿Estás seguro que querés silenciar a {name}?",
"confirmations.redraft.confirm": "Eliminar toot original y editarlo",
"confirmations.redraft.message": "¿Estás seguro que querés eliminar este estado y volver a editarlo? Se perderán las veces marcadas como favoritos y los retoots, y las respuestas a la publicación original quedarán huérfanas.",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "¡No hay toots aquí!",
"empty_column.account_unavailable": "Perfil no disponible",
"empty_column.blocks": "Todavía no bloqueaste a ningún usuario.",
+ "empty_column.bookmarked_statuses": "Todavía no tenés toots guardados en marcadores. Cuando guardés uno en marcadores, se mostrará acá.",
"empty_column.community": "La línea temporal local está vacía. ¡Escribí algo en modo público para que se empiece a correr la bola!",
"empty_column.direct": "Todavía no tenés ningún mensaje directo. Cuando enviés o recibás uno, se mostrará acá.",
"empty_column.domain_blocks": "Todavía no hay dominios ocultos.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Informar problema",
"follow_request.authorize": "Autorizar",
"follow_request.reject": "Rechazar",
+ "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no está bloqueada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.",
"getting_started.developers": "Desarrolladores",
"getting_started.directory": "Directorio de perfiles",
"getting_started.documentation": "Documentación",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar retoots",
"home.column_settings.show_replies": "Mostrar respuestas",
+ "home.hide_announcements": "Ocultar anuncios",
+ "home.show_announcements": "Mostrar anuncios",
"intervals.full.days": "{number, plural, one {# día} other {# días}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -185,7 +203,7 @@
"introduction.federation.federated.headline": "Federado",
"introduction.federation.federated.text": "Los toots públicos de otros servidores del fediverso aparecerán en la línea temporal federada.",
"introduction.federation.home.headline": "Principal",
- "introduction.federation.home.text": "Los toots de las personas que seguíss aparecerán en tu línea temporal principal. ¡Podés seguir a cualquiera en cualquier servidor!",
+ "introduction.federation.home.text": "Los toots de las personas que seguís aparecerán en tu línea temporal principal. ¡Podés seguir a cualquiera en cualquier servidor!",
"introduction.federation.local.headline": "Local",
"introduction.federation.local.text": "Los toots públicos de las personas en el mismo servidor aparecerán en la línea temporal local.",
"introduction.interactions.action": "¡Terminar tutorial!",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "abrir la lista de usuarios silenciados",
"keyboard_shortcuts.my_profile": "para abrir tu perfil",
"keyboard_shortcuts.notifications": "para abrir la columna de notificaciones",
+ "keyboard_shortcuts.open_media": "para abrir archivos de medios",
"keyboard_shortcuts.pinned": "para abrir lista de toots fijados",
"keyboard_shortcuts.profile": "para abrir el perfil del autor",
"keyboard_shortcuts.reply": "para responder",
"keyboard_shortcuts.requests": "para abrir la lista de solicitudes de seguimiento",
"keyboard_shortcuts.search": "para enfocar la búsqueda",
+ "keyboard_shortcuts.spoilers": "para mostrar/ocultar el campo \"CW\"",
"keyboard_shortcuts.start": "para abrir la columna \"Introducción\"",
"keyboard_shortcuts.toggle_hidden": "para mostrar/ocultar el texto detrás de la advertencia de contenido",
"keyboard_shortcuts.toggle_sensitivity": "para mostrar/ocultar los medios",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "¿Querés ocultar las notificaciones de este usuario?",
"navigation_bar.apps": "Aplicaciones móviles",
"navigation_bar.blocks": "Usuarios bloqueados",
+ "navigation_bar.bookmarks": "Marcadores",
"navigation_bar.community_timeline": "Línea temporal local",
"navigation_bar.compose": "Redactar un nuevo toot",
"navigation_bar.direct": "Mensajes directos",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Seguridad",
"notification.favourite": "{name} marcó tu estado como favorito",
"notification.follow": "{name} te empezó a seguir",
+ "notification.follow_request": "{name} solicitó seguirte",
"notification.mention": "{name} te mencionó",
+ "notification.own_poll": "Tu encuesta finalizó",
"notification.poll": "Finalizó una encuesta en la que votaste",
"notification.reblog": "{name} retooteó tu estado",
"notifications.clear": "Limpiar notificaciones",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Barra de filtrado rápido",
"notifications.column_settings.filter_bar.show": "Mostrar",
"notifications.column_settings.follow": "Nuevos seguidores:",
+ "notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:",
"notifications.column_settings.mention": "Menciones:",
"notifications.column_settings.poll": "Resultados de la encuesta:",
"notifications.column_settings.push": "Notificaciones push",
@@ -322,6 +346,7 @@
"relative_time.just_now": "recién",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "hoy",
"reply_indicator.cancel": "Cancelar",
"report.forward": "Reenviar a {target}",
"report.forward_hint": "La cuenta es de otro servidor. ¿Querés enviar una copia anonimizada del informe también ahí?",
@@ -344,6 +369,7 @@
"status.admin_account": "Abrir interface de moderación para @{name}",
"status.admin_status": "Abrir este estado en la interface de moderación",
"status.block": "Bloquear a @{name}",
+ "status.bookmark": "Marcador",
"status.cancel_reblog_private": "Quitar retoot",
"status.cannot_reblog": "No se puede retootear este toot",
"status.copy": "Copiar enlace al estado",
@@ -360,14 +386,15 @@
"status.mute": "Silenciar a @{name}",
"status.mute_conversation": "Silenciar conversación",
"status.open": "Expandir este estado",
- "status.pin": "Pin en el perfil",
+ "status.pin": "Fijar en el perfil",
"status.pinned": "Toot fijado",
"status.read_more": "Leer más",
"status.reblog": "Retootear",
"status.reblog_private": "Retootear a la audiencia original",
- "status.reblogged_by": "Retooteado por {name}",
+ "status.reblogged_by": "{name} retooteó",
"status.reblogs.empty": "Todavía nadie retooteó este toot. Cuando alguien lo haga, se mostrará acá.",
"status.redraft": "Eliminar toot original y editarlo",
+ "status.remove_bookmark": "Quitar marcador",
"status.reply": "Responder",
"status.replyAll": "Responder al hilo",
"status.report": "Denunciar a @{name}",
@@ -380,7 +407,7 @@
"status.show_thread": "Mostrar hilo",
"status.uncached_media_warning": "No disponible",
"status.unmute_conversation": "Dejar de silenciar conversación",
- "status.unpin": "Desmarcar del perfil",
+ "status.unpin": "Dejar de fijar",
"suggestions.dismiss": "Descartar sugerencia",
"suggestions.header": "Es posible que te interese…",
"tabs_bar.federated_timeline": "Federado",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural,one {queda # minuto} other {quedan # minutos}}",
"time_remaining.moments": "Momentos restantes",
"time_remaining.seconds": "{number, plural,one {queda # segundo} other {quedan # segundos}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} de otros servidores no se muestran.",
+ "timeline_hint.resources.followers": "Seguidores",
+ "timeline_hint.resources.follows": "Siguiendo",
+ "timeline_hint.resources.statuses": "Toots antiguos",
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {personas}} hablando",
"trends.trending_now": "Tendencia ahora",
"ui.beforeunload": "Tu borrador se perderá si abandonás Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Agregar medios ({formats})",
"upload_error.limit": "Se excedió el límite de subida de archivos.",
"upload_error.poll": "No se permite la subida de archivos en encuestas.",
+ "upload_form.audio_description": "Describir para personas con problemas auditivos",
"upload_form.description": "Agregar descripción para los usuarios con dificultades visuales",
"upload_form.edit": "Editar",
"upload_form.undo": "Eliminar",
+ "upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
"upload_modal.analyzing_picture": "Analizando imagen…",
"upload_modal.apply": "Aplicar",
"upload_modal.description_placeholder": "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Previsualización ({ratio})",
"upload_progress.label": "Subiendo…",
"video.close": "Cerrar video",
+ "video.download": "Descargar archivo",
"video.exit_fullscreen": "Salir de pantalla completa",
"video.expand": "Expandir vídeo",
"video.fullscreen": "Pantalla completa",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index c213a03e1..f46dd6092 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Agregar o eliminar de listas",
"account.badges.bot": "Bot",
+ "account.badges.group": "Grupo",
"account.block": "Bloquear a @{name}",
"account.block_domain": "Ocultar todo de {domain}",
"account.blocked": "Bloqueado",
+ "account.browse_more_on_origin_server": "Ver más en el perfil original",
"account.cancel_follow_request": "Cancelar la solicitud de seguimiento",
"account.direct": "Mensaje directo a @{name}",
"account.domain_blocked": "Dominio oculto",
@@ -38,10 +42,15 @@
"account.unfollow": "Dejar de seguir",
"account.unmute": "Dejar de silenciar a @{name}",
"account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Por favor reintente después de {retry_time, time, medium}.",
"alert.rate_limited.title": "Tarifa limitada",
"alert.unexpected.message": "Hubo un error inesperado.",
"alert.unexpected.title": "¡Ups!",
+ "announcement.announcement": "Anuncio",
"autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez",
"bundle_column_error.body": "Algo salió mal al cargar este componente.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Algo salió mal al cargar este componente.",
"bundle_modal_error.retry": "Inténtalo de nuevo",
"column.blocks": "Usuarios bloqueados",
+ "column.bookmarks": "Marcadores",
"column.community": "Línea de tiempo local",
"column.direct": "Mensajes directos",
"column.directory": "Buscar perfiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Mostrar ajustes",
"column_header.unpin": "Dejar de fijar",
"column_subheading.settings": "Ajustes",
+ "community.column_settings.local_only": "Solo local",
"community.column_settings.media_only": "Solo media",
+ "community.column_settings.remote_only": "Solo remoto",
"compose_form.direct_message_warning": "Este toot solo será enviado a los usuarios mencionados.",
"compose_form.direct_message_warning_learn_more": "Aprender mas",
"compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Duración de la encuesta",
"compose_form.poll.option_placeholder": "Elección {number}",
"compose_form.poll.remove_option": "Eliminar esta opción",
+ "compose_form.poll.switch_to_multiple": "Modificar encuesta para permitir múltiples opciones",
+ "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción",
"compose_form.publish": "Tootear",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Marcar multimedia como sensible",
@@ -127,7 +141,7 @@
"emoji_button.food": "Comida y bebida",
"emoji_button.label": "Insertar emoji",
"emoji_button.nature": "Naturaleza",
- "emoji_button.not_found": "No hay emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.not_found": "No hay emojis!! ¯\\_(ツ)_/¯",
"emoji_button.objects": "Objetos",
"emoji_button.people": "Gente",
"emoji_button.recent": "Usados frecuentemente",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "¡No hay toots aquí!",
"empty_column.account_unavailable": "Perfil no disponible",
"empty_column.blocks": "Aún no has bloqueado a ningún usuario.",
+ "empty_column.bookmarked_statuses": "Aún no tienes ningún toot guardado como marcador. Cuando guardes uno, se mostrará aquí.",
"empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!",
"empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.",
"empty_column.domain_blocks": "Todavía no hay dominios ocultos.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Informar de un problema/error",
"follow_request.authorize": "Autorizar",
"follow_request.reject": "Rechazar",
+ "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.",
"getting_started.developers": "Desarrolladores",
"getting_started.directory": "Directorio de perfil",
"getting_started.documentation": "Documentación",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar retoots",
"home.column_settings.show_replies": "Mostrar respuestas",
+ "home.hide_announcements": "Ocultar anuncios",
+ "home.show_announcements": "Mostrar anuncios",
"intervals.full.days": "{number, plural, one {# día} other {# días}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "abrir la lista de usuarios silenciados",
"keyboard_shortcuts.my_profile": "abrir tu perfil",
"keyboard_shortcuts.notifications": "abrir la columna de notificaciones",
+ "keyboard_shortcuts.open_media": "para abrir archivos multimedia",
"keyboard_shortcuts.pinned": "abrir la lista de toots destacados",
"keyboard_shortcuts.profile": "abrir el perfil del autor",
"keyboard_shortcuts.reply": "para responder",
"keyboard_shortcuts.requests": "abrir la lista de peticiones de seguidores",
"keyboard_shortcuts.search": "para poner el foco en la búsqueda",
+ "keyboard_shortcuts.spoilers": "para mostrar/ocultar el campo CW",
"keyboard_shortcuts.start": "abrir la columna \"comenzar\"",
"keyboard_shortcuts.toggle_hidden": "mostrar/ocultar texto tras aviso de contenido (CW)",
"keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar medios",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?",
"navigation_bar.apps": "Aplicaciones móviles",
"navigation_bar.blocks": "Usuarios bloqueados",
+ "navigation_bar.bookmarks": "Marcadores",
"navigation_bar.community_timeline": "Historia local",
"navigation_bar.compose": "Escribir un nuevo toot",
"navigation_bar.direct": "Mensajes directos",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Seguridad",
"notification.favourite": "{name} marcó tu estado como favorito",
"notification.follow": "{name} te empezó a seguir",
+ "notification.follow_request": "{name} ha solicitado seguirte",
"notification.mention": "{name} te ha mencionado",
+ "notification.own_poll": "Tu encuesta ha terminado",
"notification.poll": "Una encuesta en la que has votado ha terminado",
"notification.reblog": "{name} ha retooteado tu estado",
"notifications.clear": "Limpiar notificaciones",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Barra de filtrado rápido",
"notifications.column_settings.filter_bar.show": "Mostrar",
"notifications.column_settings.follow": "Nuevos seguidores:",
+ "notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:",
"notifications.column_settings.mention": "Menciones:",
"notifications.column_settings.poll": "Resultados de la votación:",
"notifications.column_settings.push": "Notificaciones push",
@@ -322,6 +346,7 @@
"relative_time.just_now": "ahora",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "hoy",
"reply_indicator.cancel": "Cancelar",
"report.forward": "Reenviar a {target}",
"report.forward_hint": "Esta cuenta es de otro servidor. ¿Enviar una copia anonimizada del informe allí también?",
@@ -344,6 +369,7 @@
"status.admin_account": "Abrir interfaz de moderación para @{name}",
"status.admin_status": "Abrir este estado en la interfaz de moderación",
"status.block": "Bloquear a @{name}",
+ "status.bookmark": "Marcador",
"status.cancel_reblog_private": "Des-impulsar",
"status.cannot_reblog": "Este toot no puede retootearse",
"status.copy": "Copiar enlace al estado",
@@ -368,6 +394,7 @@
"status.reblogged_by": "Retooteado por {name}",
"status.reblogs.empty": "Nadie impulsó este toot todavía. Cuando alguien lo haga, aparecerá aqui.",
"status.redraft": "Borrar y volver a borrador",
+ "status.remove_bookmark": "Eliminar marcador",
"status.reply": "Responder",
"status.replyAll": "Responder al hilo",
"status.report": "Reportar",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minuto restante} other {# minutos restantes}}",
"time_remaining.moments": "Momentos restantes",
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} de otros servidores no se muestran.",
+ "timeline_hint.resources.followers": "Seguidores",
+ "timeline_hint.resources.follows": "Seguidos",
+ "timeline_hint.resources.statuses": "Toots más antiguos",
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {personas}} hablando",
"trends.trending_now": "Tendencia ahora",
"ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Subir multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Límite de subida de archivos excedido.",
"upload_error.poll": "Subida de archivos no permitida con encuestas.",
+ "upload_form.audio_description": "Describir para personas con problemas auditivos",
"upload_form.description": "Describir para los usuarios con dificultad visual",
"upload_form.edit": "Editar",
"upload_form.undo": "Borrar",
+ "upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
"upload_modal.analyzing_picture": "Analizando imagen…",
"upload_modal.apply": "Aplicar",
"upload_modal.description_placeholder": "Un rápido zorro marrón salta sobre el perro perezoso",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Vista previa ({ratio})",
"upload_progress.label": "Subiendo…",
"video.close": "Cerrar video",
+ "video.download": "Descargar archivo",
"video.exit_fullscreen": "Salir de pantalla completa",
"video.expand": "Expandir vídeo",
"video.fullscreen": "Pantalla completa",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index db60dab54..7328b2474 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -1,10 +1,14 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Lisa või Eemalda nimekirjadest",
"account.badges.bot": "Robot",
+ "account.badges.group": "Grupp",
"account.block": "Blokeeri @{name}",
"account.block_domain": "Peida kõik domeenist {domain}",
"account.blocked": "Blokeeritud",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Tühista jälgimistaotlus",
"account.direct": "Otsesõnum @{name}",
"account.domain_blocked": "Domeen peidetud",
"account.edit_profile": "Muuda profiili",
@@ -14,18 +18,18 @@
"account.followers.empty": "Keegi ei jälgi seda kasutajat veel.",
"account.follows": "Jälgib",
"account.follows.empty": "See kasutaja ei jälgi veel kedagi.",
- "account.follows_you": "Jälgib sind",
+ "account.follows_you": "Jälgib Teid",
"account.hide_reblogs": "Peida upitused kasutajalt @{name}",
- "account.last_status": "Last active",
+ "account.last_status": "Viimati aktiivne",
"account.link_verified_on": "Selle lingi autorsust kontrolliti {date}",
- "account.locked_info": "Selle konto privaatsus on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.",
+ "account.locked_info": "Selle konto privaatsussätteks on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.",
"account.media": "Meedia",
"account.mention": "Maini @{name}",
"account.moved_to": "{name} on kolinud:",
"account.mute": "Vaigista @{name}",
"account.mute_notifications": "Vaigista teated kasutajalt @{name}",
"account.muted": "Vaigistatud",
- "account.never_active": "Never",
+ "account.never_active": "Mitte kunagi",
"account.posts": "Tuututused",
"account.posts_with_replies": "Tuututused ja vastused",
"account.report": "Raporteeri @{name}",
@@ -38,22 +42,28 @@
"account.unfollow": "Ära jälgi",
"account.unmute": "Ära vaigista @{name}",
"account.unmute_notifications": "Ära vaigista teateid kasutajalt @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Palun proovi uuesti pärast {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Piiratud",
"alert.unexpected.message": "Tekkis ootamatu viga.",
"alert.unexpected.title": "Oih!",
- "autosuggest_hashtag.per_week": "{count} per week",
- "boost_modal.combo": "Saad vajutada {combo}, et see järgmine kord vahele jätta",
- "bundle_column_error.body": "Mindagi läks valesti selle komponendi laadimisel.",
+ "announcement.announcement": "Teadaanne",
+ "autosuggest_hashtag.per_week": "{count} nädalas",
+ "boost_modal.combo": "Võite vajutada {combo}, et see järgmine kord vahele jätta",
+ "bundle_column_error.body": "Midagi läks valesti selle komponendi laadimisel.",
"bundle_column_error.retry": "Proovi uuesti",
"bundle_column_error.title": "Võrgu viga",
"bundle_modal_error.close": "Sulge",
"bundle_modal_error.message": "Selle komponendi laadimisel läks midagi viltu.",
"bundle_modal_error.retry": "Proovi uuesti",
"column.blocks": "Blokeeritud kasutajad",
+ "column.bookmarks": "Järjehoidjad",
"column.community": "Kohalik ajajoon",
"column.direct": "Otsesõnumid",
- "column.directory": "Browse profiles",
+ "column.directory": "Sirvi profiile",
"column.domain_blocks": "Peidetud domeenid",
"column.favourites": "Lemmikud",
"column.follow_requests": "Jälgimistaotlused",
@@ -61,7 +71,7 @@
"column.lists": "Nimekirjad",
"column.mutes": "Vaigistatud kasutajad",
"column.notifications": "Teated",
- "column.pins": "Kinnitatud upitused",
+ "column.pins": "Kinnitatud tuututused",
"column.public": "Föderatiivne ajajoon",
"column_back_button.label": "Tagasi",
"column_header.hide_settings": "Peida sätted",
@@ -71,17 +81,21 @@
"column_header.show_settings": "Näita sätteid",
"column_header.unpin": "Eemalda kinnitus",
"column_subheading.settings": "Sätted",
+ "community.column_settings.local_only": "Ainult kohalik",
"community.column_settings.media_only": "Ainult meedia",
+ "community.column_settings.remote_only": "Ainult kaug",
"compose_form.direct_message_warning": "See tuut saadetakse ainult mainitud kasutajatele.",
"compose_form.direct_message_warning_learn_more": "Vaata veel",
"compose_form.hashtag_warning": "Seda tuuti ei kuvata ühegi sildi all, sest see on kirjendamata. Ainult avalikud tuutid on sildi järgi otsitavad.",
- "compose_form.lock_disclaimer": "Sinu konto ei ole {locked}. Igaüks saab sind jälgida ja näha su ainult-jälgijatele postitusi.",
+ "compose_form.lock_disclaimer": "Teie konto ei ole {locked}. Igaüks saab Teid jälgida ja näha Teie ainult-jälgijatele postitusi.",
"compose_form.lock_disclaimer.lock": "lukus",
- "compose_form.placeholder": "Millest mõtled?",
+ "compose_form.placeholder": "Millest mõtlete?",
"compose_form.poll.add_option": "Lisa valik",
"compose_form.poll.duration": "Küsitluse kestus",
"compose_form.poll.option_placeholder": "Valik {number}",
"compose_form.poll.remove_option": "Eemalda see valik",
+ "compose_form.poll.switch_to_multiple": "Muuda küsitlust lubamaks mitut valikut",
+ "compose_form.poll.switch_to_single": "Muuda küsitlust lubamaks ainult ühte valikut",
"compose_form.publish": "Tuut",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Märgista meedia tundlikuks",
@@ -89,36 +103,36 @@
"compose_form.sensitive.unmarked": "Meedia ei ole sensitiivseks märgitud",
"compose_form.spoiler.marked": "Tekst on hoiatuse taha peidetud",
"compose_form.spoiler.unmarked": "Tekst ei ole peidetud",
- "compose_form.spoiler_placeholder": "Kirjuta oma hoiatus siia",
+ "compose_form.spoiler_placeholder": "Kirjutage oma hoiatus siia",
"confirmation_modal.cancel": "Katkesta",
"confirmations.block.block_and_report": "Blokeeri & Teata",
"confirmations.block.confirm": "Blokeeri",
- "confirmations.block.message": "Oled kindel, et soovid blokkida {name}?",
+ "confirmations.block.message": "Olete kindel, et soovite blokeerida {name}?",
"confirmations.delete.confirm": "Kustuta",
- "confirmations.delete.message": "Oled kindel, et soovid selle staatuse kustutada?",
+ "confirmations.delete.message": "Olete kindel, et soovite selle staatuse kustutada?",
"confirmations.delete_list.confirm": "Kustuta",
- "confirmations.delete_list.message": "Oled kindel, et soovid selle nimekirja püsivalt kustutada?",
+ "confirmations.delete_list.message": "Olete kindel, et soovite selle nimekirja püsivalt kustutada?",
"confirmations.domain_block.confirm": "Peida terve domeen",
- "confirmations.domain_block.message": "Oled ikka päris kindel, et soovid blokeerida terve {domain}? Enamikul juhtudel piisab mõnest sihitud blokist või vaigistusest, mis on eelistatav. Sa ei näe selle domeeni sisu üheski avalikus ajajoones või teadetes. Sinu jälgijad sellest domeenist eemaldatakse.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.domain_block.message": "Olete ikka päris kindel, et soovite blokeerida terve {domain}? Enamikul juhtudel piisab mõnest sihitud blokist või vaigistusest, mis on eelistatav. Te ei näe selle domeeni sisu üheski avalikus ajajoones või teadetes. Teie jälgijad sellest domeenist eemaldatakse.",
+ "confirmations.logout.confirm": "Välju",
+ "confirmations.logout.message": "Kas olete kindel, et soovite välja logida?",
"confirmations.mute.confirm": "Vaigista",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
- "confirmations.mute.message": "Oled kindel, et soovid {name} vaigistada?",
+ "confirmations.mute.explanation": "See peidab postitusi temalt ning postitusi, kus mainitakse neid, kuid see lubab neil ikka näha Teie postitusi ning Teid jälgida.",
+ "confirmations.mute.message": "Olete kindel, et soovite {name} vaigistada?",
"confirmations.redraft.confirm": "Kustuta & taasalusta",
- "confirmations.redraft.message": "Oled kindel, et soovid selle staatuse kustutada ja alustada uuesti? Lemmikud ja upitused lähevad kaotsi ja vastused originaaalpostitusele jäävad orvuks.",
+ "confirmations.redraft.message": "Olete kindel, et soovite selle staatuse kustutada ja alustada uuesti? Lemmikud ja upitused lähevad kaotsi ja vastused originaaalpostitusele jäävad orvuks.",
"confirmations.reply.confirm": "Vasta",
- "confirmations.reply.message": "Kohene vastamine kirjutab üle sõnumi, mida hetkel koostad. Oled kindel, et soovid jätkata?",
+ "confirmations.reply.message": "Praegu vastamine kirjutab üle sõnumi, mida hetkel koostate. Olete kindel, et soovite jätkata?",
"confirmations.unfollow.confirm": "Ära jälgi",
- "confirmations.unfollow.message": "Oled kindel, et ei soovi jälgida {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
+ "confirmations.unfollow.message": "Olete kindel, et ei soovi rohkem jälgida kasutajat {name}?",
+ "conversation.delete": "Kustuta vestlus",
+ "conversation.mark_as_read": "Märgi loetuks",
+ "conversation.open": "Vaata vestlust",
+ "conversation.with": "Koos {names}",
+ "directory.federated": "Teatud fediversumist",
+ "directory.local": "Ainult domeenilt {domain}",
+ "directory.new_arrivals": "Uustulijad",
+ "directory.recently_active": "Hiljuti aktiivne",
"embed.instructions": "Manusta see staatus oma veebilehele, kopeerides alloleva koodi.",
"embed.preview": "Nii näeb see välja:",
"emoji_button.activity": "Tegevus",
@@ -138,32 +152,34 @@
"empty_column.account_timeline": "Siin tuute ei ole!",
"empty_column.account_unavailable": "Profiil pole saadaval",
"empty_column.blocks": "Sa ei ole veel ühtegi kasutajat blokeerinud.",
- "empty_column.community": "Kohalik ajajoon on tühi. Kirjuta midagi avalikult, et pall veerema saada!",
- "empty_column.direct": "Sul ei veel otsesõnumeid. Kui saadad või võtad mõne vastu, ilmuvad nad siia.",
+ "empty_column.bookmarked_statuses": "Teil pole veel järjehoidjatesse lisatud tuututusi. Kui lisate mõne, näete neid siin.",
+ "empty_column.community": "Kohalik ajajoon on tühi. Kirjutage midagi avalikult, et pall veerema ajada!",
+ "empty_column.direct": "Teil ei ole veel otsesõnumeid. Kui saadate või võtate mõne vastu, ilmuvad nad siia.",
"empty_column.domain_blocks": "Siin ei ole veel peidetud domeene.",
- "empty_column.favourited_statuses": "Sul pole veel lemmikuid tuute. Kui märgid mõne, näed neid siin.",
+ "empty_column.favourited_statuses": "Teil pole veel lemmikuid tuute. Kui märgite mõne, näete neid siin.",
"empty_column.favourites": "Keegi pole veel seda tuuti lemmikuks märkinud. Kui seegi seda teeb, näed seda siin.",
- "empty_column.follow_requests": "Sul pole veel ühtegi jälgimise taotlust. Kui saad mõne, näed seda siin.",
+ "empty_column.follow_requests": "Teil pole veel ühtegi jälgimise taotlust. Kui saate mõne, näete neid siin.",
"empty_column.hashtag": "Selle sildiga pole veel midagi.",
- "empty_column.home": "Sinu kodu ajajoon on tühi! Külasta {public} või kasuta otsingut alustamaks ja kohtamaks teisi kasutajaid.",
+ "empty_column.home": "Teie kodu ajajoon on tühi! Külastage {public} või kasutage otsingut alustamaks ja kohtamaks teisi kasutajaid.",
"empty_column.home.public_timeline": "avalik ajajoon",
"empty_column.list": "Siin nimstus pole veel midagi. Kui selle nimistu liikmed postitavad uusi staatusi, näed neid siin.",
- "empty_column.lists": "Sul ei ole veel ühtegi nimekirja. Kui lood mõne, näed seda siin.",
- "empty_column.mutes": "Sa pole veel ühtegi kasutajat vaigistanud.",
- "empty_column.notifications": "Sul ei ole veel teateid. Suhtle teistega alustamaks vestlust.",
+ "empty_column.lists": "Teil ei ole veel ühtegi nimekirja. Kui loote mõne, näete neid siin.",
+ "empty_column.mutes": "Te pole veel ühtegi kasutajat vaigistanud.",
+ "empty_column.notifications": "Teil ei ole veel teateid. Suhelge teistega alustamaks vestlust.",
"empty_column.public": "Siin pole midagi! Kirjuta midagi avalikut või jälgi ise kasutajaid täitmaks seda ruumi",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "Meie poolse probleemi või veebilehitseja ühilduvus probleemi tõttu ei suutnud me Teile seda lehekülge korrektselt näidata.",
+ "error.unexpected_crash.next_steps": "Proovige lehekülge uuesti avada. Kui see ei aita, võite proovida kasutada Mastodoni mõne muu veebilehitseja või äppi kaudu.",
+ "errors.unexpected_crash.copy_stacktrace": "Kopeeri stacktrace lõikelauale",
+ "errors.unexpected_crash.report_issue": "Teavita veast",
"follow_request.authorize": "Autoriseeri",
"follow_request.reject": "Hülga",
+ "follow_requests.unlocked_explanation": "Kuigi Teie konto pole lukustatud, soovitab {domain} personal siiski manuaalselt üle vaadata jälgimistaotlused nendelt kontodelt.",
"getting_started.developers": "Arendajad",
"getting_started.directory": "Profiili kataloog",
"getting_started.documentation": "Dokumentatsioon",
"getting_started.heading": "Alustamine",
"getting_started.invite": "Kutsu inimesi",
- "getting_started.open_source_notice": "Mastodon on avatud lähtekoodiga tarkvara. Saad panustada või teatada probleemidest GitHubis {github}.",
+ "getting_started.open_source_notice": "Mastodon on avatud lähtekoodiga tarkvara. Saate panustada või teatada probleemidest GitHubis {github}.",
"getting_started.security": "Turvalisus",
"getting_started.terms": "Kasutustingimused",
"hashtag.column_header.tag_mode.all": "ja {additional}",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Peamine",
"home.column_settings.show_reblogs": "Näita upitusi",
"home.column_settings.show_replies": "Näita vastuseid",
+ "home.hide_announcements": "Peida teadaanded",
+ "home.show_announcements": "Kuva teadaandeid",
"intervals.full.days": "{number, plural, one {# päev} other {# päevad}}",
"intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}",
"intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}",
@@ -185,19 +203,19 @@
"introduction.federation.federated.headline": "Föderatiivne",
"introduction.federation.federated.text": "Avalikud postitused teistest föderatsiooni serveritest kuvatakse föderatiivsel ajajoonel.",
"introduction.federation.home.headline": "Kodu",
- "introduction.federation.home.text": "Inimest postitused keda jälgid kuvatakse sinu koduajajoonel. Saad jälgida igaüht igas serveris!",
+ "introduction.federation.home.text": "Inimeste, keda jälgite, postitused kuvatakse Teie koduajajoonel. Saate jälgida igaüht igas serveris!",
"introduction.federation.local.headline": "Kohalik",
"introduction.federation.local.text": "Samas serveris olevate inimeste postitused kuvatakse kohalikul ajajoonel.",
"introduction.interactions.action": "Välju õpetusest!",
"introduction.interactions.favourite.headline": "Lemmik",
- "introduction.interactions.favourite.text": "Saad tuuti salvestada ja anda autorile teada, et meeldis märkides selle lemmikuks.",
+ "introduction.interactions.favourite.text": "Saate tuuti salvestada ja anda autorile teada, et see meeldis Teile, märkides selle lemmikuks.",
"introduction.interactions.reblog.headline": "Upita",
- "introduction.interactions.reblog.text": "Saad jagada teiste inimeste tuute oma jälgijatega upitades neid.",
+ "introduction.interactions.reblog.text": "Saate jagada teiste inimeste tuute oma jälgijatega neid upitades.",
"introduction.interactions.reply.headline": "Vasta",
- "introduction.interactions.reply.text": "Saad vastata teiste ja enda tuutidele, mis ühendab nad kokku aruteluks.",
+ "introduction.interactions.reply.text": "Saate vastata teiste ja enda tuutidele, mis ühendab nad kokku aruteluks.",
"introduction.welcome.action": "Lähme!",
"introduction.welcome.headline": "Esimesed sammud",
- "introduction.welcome.text": "Teretulemast fediversumisse! Mõne aja pärast saad avaldada sõnumeid ja rääkida oma sõpradega läbi laia valiku serverite. Aga see server, {domain}, on eriline—ta majutab sinu profiili. Seega jäta ta nimi meelde.",
+ "introduction.welcome.text": "Teretulemast fediversumisse! Mõne aja pärast saate avaldada sõnumeid ja rääkida oma sõpradega läbi laia valiku serverite. Aga see server, {domain}, on eriline—see majutab sinu profiili. Seega jäta selle nimi meelde.",
"keyboard_shortcuts.back": "tagasiminekuks",
"keyboard_shortcuts.blocked": "avamaks blokeeritud kasutajate nimistut",
"keyboard_shortcuts.boost": "upitamiseks",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "avamaks vaigistatud kasutajate nimistut",
"keyboard_shortcuts.my_profile": "avamaks profiili",
"keyboard_shortcuts.notifications": "avamaks teadete tulpa",
+ "keyboard_shortcuts.open_media": "et avada meedia",
"keyboard_shortcuts.pinned": "avamaks kinnitatud tuutide nimistut",
"keyboard_shortcuts.profile": "avamaks autori profiili",
"keyboard_shortcuts.reply": "vastamiseks",
"keyboard_shortcuts.requests": "avamaks jälgimistaotluste nimistut",
"keyboard_shortcuts.search": "otsingu fokuseerimiseks",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "avamaks \"Alusta\" tulpa",
"keyboard_shortcuts.toggle_hidden": "näitamaks/peitmaks teksti CW taga",
"keyboard_shortcuts.toggle_sensitivity": "et peita/näidata meediat",
@@ -241,8 +261,8 @@
"lists.edit.submit": "Muuda pealkiri",
"lists.new.create": "Lisa nimistu",
"lists.new.title_placeholder": "Uus nimistu pealkiri",
- "lists.search": "Otsi sinu poolt jälgitavate inimese hulgast",
- "lists.subheading": "Sinu nimistud",
+ "lists.search": "Otsi Teie poolt jälgitavate inimese hulgast",
+ "lists.subheading": "Teie nimistud",
"load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}",
"loading_indicator.label": "Laeb..",
"media_gallery.toggle_visible": "Lülita nähtavus",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Kas peita teated sellelt kasutajalt?",
"navigation_bar.apps": "Mobiilrakendused",
"navigation_bar.blocks": "Blokeeritud kasutajad",
+ "navigation_bar.bookmarks": "Järjehoidjad",
"navigation_bar.community_timeline": "Kohalik ajajoon",
"navigation_bar.compose": "Koosta uus tuut",
"navigation_bar.direct": "Otsesõnumid",
@@ -271,19 +292,22 @@
"navigation_bar.preferences": "Eelistused",
"navigation_bar.public_timeline": "Föderatiivne ajajoon",
"navigation_bar.security": "Turvalisus",
- "notification.favourite": "{name} märkis su staatuse lemmikuks",
- "notification.follow": "{name} jälgib sind",
- "notification.mention": "{name} mainis sind",
- "notification.poll": "Küsitlus, milles osalesid, on lõppenud",
- "notification.reblog": "{name} upitas su staatust",
+ "notification.favourite": "{name} märkis Teie staatuse lemmikuks",
+ "notification.follow": "{name} jälgib nüüd Teid",
+ "notification.follow_request": "{name} soovib Teid jälgida",
+ "notification.mention": "{name} mainis Teid",
+ "notification.own_poll": "Teie küsitlus on lõppenud",
+ "notification.poll": "Küsitlus, milles osalesite, on lõppenud",
+ "notification.reblog": "{name} upitas Teie staatust",
"notifications.clear": "Puhasta teated",
- "notifications.clear_confirmation": "Oled kindel, et soovid püsivalt kõik oma teated puhastada?",
+ "notifications.clear_confirmation": "Olete kindel, et soovite püsivalt kõik oma teated eemaldada?",
"notifications.column_settings.alert": "Töölauateated",
"notifications.column_settings.favourite": "Lemmikud:",
"notifications.column_settings.filter_bar.advanced": "Kuva kõik kategooriad",
"notifications.column_settings.filter_bar.category": "Kiirfiltri riba",
"notifications.column_settings.filter_bar.show": "Kuva",
"notifications.column_settings.follow": "Uued jälgijad:",
+ "notifications.column_settings.follow_request": "Uued jälgimistaotlused:",
"notifications.column_settings.mention": "Mainimised:",
"notifications.column_settings.poll": "Küsitluse tulemused:",
"notifications.column_settings.push": "Push teated",
@@ -299,10 +323,10 @@
"notifications.group": "{count} teated",
"poll.closed": "Suletud",
"poll.refresh": "Värskenda",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural,one {# inimene} other {# inimest}}",
"poll.total_votes": "{count, plural, one {# hääl} other {# hääli}}",
"poll.vote": "Hääleta",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "Teie hääletasite selle poolt",
"poll_button.add_poll": "Lisa küsitlus",
"poll_button.remove_poll": "Eemalda küsitlus",
"privacy.change": "Muuda staatuse privaatsust",
@@ -314,18 +338,19 @@
"privacy.public.short": "Avalik",
"privacy.unlisted.long": "Ära postita avalikele ajajoontele",
"privacy.unlisted.short": "Määramata",
- "refresh": "Refresh",
+ "refresh": "Värskenda",
"regeneration_indicator.label": "Laeb…",
- "regeneration_indicator.sublabel": "Sinu kodu voog on ettevalmistamisel!",
+ "regeneration_indicator.sublabel": "Teie kodu voog on ettevalmistamisel!",
"relative_time.days": "{number}p",
"relative_time.hours": "{number}t",
"relative_time.just_now": "nüüd",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "täna",
"reply_indicator.cancel": "Tühista",
"report.forward": "Edasta kasutajale {target}",
"report.forward_hint": "See kasutaja on teisest serverist. Kas saadan anonümiseeritud koopia sellest teatest sinna ka?",
- "report.hint": "See teade saadetakse sinu serveri moderaatoritele. Te saate lisada selgituse selle kohta, miks selle kasutaja kohta teate esitasite, siin:",
+ "report.hint": "See teade saadetakse Teie serveri moderaatoritele. Te saate lisada selgituse selle kohta, miks selle kasutaja kohta teate esitasite, siin:",
"report.placeholder": "Lisaks kommentaarid",
"report.submit": "Saada",
"report.target": "Teatamine {target} kohta",
@@ -344,6 +369,7 @@
"status.admin_account": "Ava moderaatoriliides kasutajale @{name}",
"status.admin_status": "Ava see staatus moderaatoriliites",
"status.block": "Blokeeri @{name}",
+ "status.bookmark": "Järjehoidja",
"status.cancel_reblog_private": "Äraupita",
"status.cannot_reblog": "Seda postitust ei saa upitada",
"status.copy": "Kopeeri link staatusesse",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} upitatud",
"status.reblogs.empty": "Keegi pole seda tuuti veel upitanud. Kui keegi upitab, näed seda siin.",
"status.redraft": "Kustuta & alga uuesti",
+ "status.remove_bookmark": "Eemalda järjehoidja",
"status.reply": "Vasta",
"status.replyAll": "Vasta lõimele",
"status.report": "Raport @{name}",
@@ -378,11 +405,11 @@
"status.show_more": "Näita veel",
"status.show_more_all": "Näita enam kõigile",
"status.show_thread": "Kuva lõim",
- "status.uncached_media_warning": "Not available",
+ "status.uncached_media_warning": "Pole saadaval",
"status.unmute_conversation": "Ära vaigista vestlust",
"status.unpin": "Kinnita profiililt lahti",
"suggestions.dismiss": "Eira soovitust",
- "suggestions.header": "Sind võib huvitada…",
+ "suggestions.header": "Teid võib huvitada…",
"tabs_bar.federated_timeline": "Föderatiivne",
"tabs_bar.home": "Kodu",
"tabs_bar.local_timeline": "Kohalik",
@@ -393,25 +420,32 @@
"time_remaining.minutes": "{number, plural, one {# minut} other {# minutit}} left",
"time_remaining.moments": "Hetked jäänud",
"time_remaining.seconds": "{number, plural, one {# sekund} other {# sekundit}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {inimene} other {inimesed}} talking",
- "trends.trending_now": "Trending now",
- "ui.beforeunload": "Sinu mustand läheb kaotsi, kui lahkud Mastodonist.",
+ "trends.trending_now": "Praegu populaarne",
+ "ui.beforeunload": "Teie mustand läheb kaotsi, kui lahkute Mastodonist.",
"upload_area.title": "Lohista & aseta üleslaadimiseks",
"upload_button.label": "Lisa meedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Faili üleslaadimise limiit ületatud.",
"upload_error.poll": "Küsitlustes pole faili üleslaadimine lubatud.",
+ "upload_form.audio_description": "Kirjelda kuulmispuudega inimeste jaoks",
"upload_form.description": "Kirjelda vaegnägijatele",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "Redigeeri",
"upload_form.undo": "Kustuta",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_form.video_description": "Kirjelda kuulmis- või nägemispuudega inimeste jaoks",
+ "upload_modal.analyzing_picture": "Analüüsime pilti…",
+ "upload_modal.apply": "Rakenda",
+ "upload_modal.description_placeholder": "Kiire pruun rebane hüppab üle laisa koera",
+ "upload_modal.detect_text": "Tuvasta teksti pildilt",
+ "upload_modal.edit_media": "Muuda meediat",
+ "upload_modal.hint": "Vajuta või tõmba ringi eelvaatel, et valida fookuspunkti, mis on alati nähtaval kõikidel eelvaadetel.",
+ "upload_modal.preview_label": "Eelvaade ({ratio})",
"upload_progress.label": "Laeb üles....",
"video.close": "Sulge video",
+ "video.download": "Faili allalaadimine",
"video.exit_fullscreen": "Välju täisekraanist",
"video.expand": "Suurenda video",
"video.fullscreen": "Täisekraan",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index f89901ab0..f122cb2a6 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Gehitu edo kendu zerrendetatik",
"account.badges.bot": "Bot-a",
+ "account.badges.group": "Taldea",
"account.block": "Blokeatu @{name}",
"account.block_domain": "Ezkutatu {domain} domeinuko guztia",
"account.blocked": "Blokeatuta",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Ezeztatu jarraitzeko eskaria",
"account.direct": "Mezu zuzena @{name}(r)i",
"account.domain_blocked": "Ezkutatutako domeinua",
@@ -26,8 +30,8 @@
"account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak",
"account.muted": "Mutututa",
"account.never_active": "Inoiz ez",
- "account.posts": "Tootak",
- "account.posts_with_replies": "Toot-ak eta erantzunak",
+ "account.posts": "Toot",
+ "account.posts_with_replies": "Tootak eta erantzunak",
"account.report": "Salatu @{name}",
"account.requested": "Onarpenaren zain. Klikatu jarraitzeko eskaera ezeztatzeko",
"account.share": "@{name}(e)ren profila elkarbanatu",
@@ -38,10 +42,15 @@
"account.unfollow": "Utzi jarraitzeari",
"account.unmute": "Desmututu @{name}",
"account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Saiatu {retry_time, time, medium} barru.",
- "alert.rate_limited.title": "Rate limited",
+ "alert.rate_limited.title": "Abiadura mugatua",
"alert.unexpected.message": "Ustekabeko errore bat gertatu da.",
"alert.unexpected.title": "Ene!",
+ "announcement.announcement": "Iragarpena",
"autosuggest_hashtag.per_week": "{count} asteko",
"boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko",
"bundle_column_error.body": "Zerbait okerra gertatu da osagai hau kargatzean.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.",
"bundle_modal_error.retry": "Saiatu berriro",
"column.blocks": "Blokeatutako erabiltzaileak",
+ "column.bookmarks": "Laster-markak",
"column.community": "Denbora-lerro lokala",
"column.direct": "Mezu zuzenak",
"column.directory": "Arakatu profilak",
@@ -61,7 +71,7 @@
"column.lists": "Zerrendak",
"column.mutes": "Mutututako erabiltzaileak",
"column.notifications": "Jakinarazpenak",
- "column.pins": "Finkatutako toot-ak",
+ "column.pins": "Finkatutako tootak",
"column.public": "Federatutako denbora-lerroa",
"column_back_button.label": "Atzera",
"column_header.hide_settings": "Ezkutatu ezarpenak",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Erakutsi ezarpenak",
"column_header.unpin": "Desfinkatu",
"column_subheading.settings": "Ezarpenak",
+ "community.column_settings.local_only": "Lokala soilik",
"community.column_settings.media_only": "Multimedia besterik ez",
+ "community.column_settings.remote_only": "Urrunekoa soilik",
"compose_form.direct_message_warning": "Toot hau aipatutako erabiltzaileei besterik ez zaie bidaliko.",
"compose_form.direct_message_warning_learn_more": "Ikasi gehiago",
"compose_form.hashtag_warning": "Toot hau ez da traoletan agertuko zerrendatu gabekoa baita. Traoletan toot publikoak besterik ez dira agertzen.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Inkestaren iraupena",
"compose_form.poll.option_placeholder": "{number}. aukera",
"compose_form.poll.remove_option": "Kendu aukera hau",
+ "compose_form.poll.switch_to_multiple": "Aldatu inkesta hainbat aukera onartzeko",
+ "compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Markatu multimedia hunkigarri gisa",
@@ -135,9 +149,10 @@
"emoji_button.search_results": "Bilaketaren emaitzak",
"emoji_button.symbols": "Sinboloak",
"emoji_button.travel": "Bidaiak eta tokiak",
- "empty_column.account_timeline": "Ez dago toot-ik hemen!",
+ "empty_column.account_timeline": "Ez dago tootik hemen!",
"empty_column.account_unavailable": "Profila ez dago eskuragarri",
"empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.",
+ "empty_column.bookmarked_statuses": "Oraindik ez dituzu toot laster-markatutarik. Bat laster-markatzerakoan, hemen agertuko da.",
"empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!",
"empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.",
"empty_column.domain_blocks": "Ez dago ezkutatutako domeinurik oraindik.",
@@ -154,10 +169,11 @@
"empty_column.public": "Ez dago ezer hemen! Idatzi zerbait publikoki edo jarraitu eskuz beste zerbitzari batzuetako erabiltzaileak hau betetzen joateko",
"error.unexpected_crash.explanation": "Gure kodean arazoren bat dela eta, edo nabigatzailearekin bateragarritasun arazoren bat dela eta, orri hau ezin izan da ongi bistaratu.",
"error.unexpected_crash.next_steps": "Saiatu orria berritzen. Horrek ez badu laguntzen, agian Mastodon erabiltzeko aukera duzu oraindik ere beste nabigatzaile bat edo aplikazio natibo bat erabilita.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "errors.unexpected_crash.copy_stacktrace": "Kopiatu irteera arbelera",
"errors.unexpected_crash.report_issue": "Eman arazoaren berri",
"follow_request.authorize": "Baimendu",
"follow_request.reject": "Ukatu",
+ "follow_requests.unlocked_explanation": "Zure kontua blokeatuta ez badago ere, {domain} domeinuko arduradunek uste dute kontu hauetako jarraipen eskariak agian eskuz begiratu nahiko dituzula.",
"getting_started.developers": "Garatzaileak",
"getting_started.directory": "Profil-direktorioa",
"getting_started.documentation": "Dokumentazioa",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Oinarrizkoa",
"home.column_settings.show_reblogs": "Erakutsi bultzadak",
"home.column_settings.show_replies": "Erakutsi erantzunak",
+ "home.hide_announcements": "Ezkutatu iragarpenak",
+ "home.show_announcements": "Erakutsi iragarpenak",
"intervals.full.days": "{number, plural, one {egun #} other {# egun}}",
"intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}",
"intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "mutututako erabiltzaileen zerrenda irekitzeko",
"keyboard_shortcuts.my_profile": "zure profila irekitzeko",
"keyboard_shortcuts.notifications": "jakinarazpenen zutabea irekitzeko",
- "keyboard_shortcuts.pinned": "finkatutako toot-en zerrenda irekitzeko",
+ "keyboard_shortcuts.open_media": "media zabaltzeko",
+ "keyboard_shortcuts.pinned": "finkatutako tooten zerrenda irekitzeko",
"keyboard_shortcuts.profile": "egilearen profila irekitzeko",
"keyboard_shortcuts.reply": "erantzutea",
"keyboard_shortcuts.requests": "jarraitzeko eskarien zerrenda irekitzeko",
"keyboard_shortcuts.search": "bilaketan fokua jartzea",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "\"Menua\" zutabea irekitzeko",
"keyboard_shortcuts.toggle_hidden": "testua erakustea/ezkutatzea abisu baten atzean",
"keyboard_shortcuts.toggle_sensitivity": "multimedia erakutsi/ezkutatzeko",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Ezkutatu erabiltzaile honen jakinarazpenak?",
"navigation_bar.apps": "Mugikorrerako aplikazioak",
"navigation_bar.blocks": "Blokeatutako erabiltzaileak",
+ "navigation_bar.bookmarks": "Laster-markak",
"navigation_bar.community_timeline": "Denbora-lerro lokala",
"navigation_bar.compose": "Idatzi toot berria",
"navigation_bar.direct": "Mezu zuzenak",
@@ -267,13 +288,15 @@
"navigation_bar.logout": "Amaitu saioa",
"navigation_bar.mutes": "Mutututako erabiltzaileak",
"navigation_bar.personal": "Pertsonala",
- "navigation_bar.pins": "Finkatutako toot-ak",
+ "navigation_bar.pins": "Finkatutako tootak",
"navigation_bar.preferences": "Hobespenak",
"navigation_bar.public_timeline": "Federatutako denbora-lerroa",
"navigation_bar.security": "Segurtasuna",
"notification.favourite": "{name}(e)k zure mezua gogoko du",
"notification.follow": "{name}(e)k jarraitzen zaitu",
+ "notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du",
"notification.mention": "{name}(e)k aipatu zaitu",
+ "notification.own_poll": "Zure inkesta amaitu da",
"notification.poll": "Zuk erantzun duzun inkesta bat bukatu da",
"notification.reblog": "{name}(e)k bultzada eman dio zure mezuari",
"notifications.clear": "Garbitu jakinarazpenak",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Iragazki azkarraren barra",
"notifications.column_settings.filter_bar.show": "Erakutsi",
"notifications.column_settings.follow": "Jarraitzaile berriak:",
+ "notifications.column_settings.follow_request": "Jarraitzeko eskaera berriak:",
"notifications.column_settings.mention": "Aipamenak:",
"notifications.column_settings.poll": "Inkestaren emaitzak:",
"notifications.column_settings.push": "Push jakinarazpenak",
@@ -318,10 +342,11 @@
"regeneration_indicator.label": "Kargatzen…",
"regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!",
"relative_time.days": "{number}e",
- "relative_time.hours": "{number}o",
+ "relative_time.hours": "{number}h",
"relative_time.just_now": "orain",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "gaur",
"reply_indicator.cancel": "Utzi",
"report.forward": "Birbidali hona: {target}",
"report.forward_hint": "Kontu hau beste zerbitzari batekoa da. Bidali txostenaren kopia anonimo hara ere?",
@@ -338,12 +363,13 @@
"search_popout.tips.user": "erabiltzailea",
"search_results.accounts": "Jendea",
"search_results.hashtags": "Traolak",
- "search_results.statuses": "Toot-ak",
- "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du Toot-en edukiaren bilaketa gaitu.",
- "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitzak}}",
+ "search_results.statuses": "Tootak",
+ "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du tooten edukiaren bilaketa gaitu.",
+ "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitza}}",
"status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea",
"status.admin_status": "Ireki mezu hau moderazio interfazean",
"status.block": "Blokeatu @{name}",
+ "status.bookmark": "Laster-marka",
"status.cancel_reblog_private": "Kendu bultzada",
"status.cannot_reblog": "Mezu honi ezin zaio bultzada eman",
"status.copy": "Kopiatu mezuaren esteka",
@@ -361,13 +387,14 @@
"status.mute_conversation": "Mututu elkarrizketa",
"status.open": "Hedatu mezu hau",
"status.pin": "Finkatu profilean",
- "status.pinned": "Finkatutako toot-a",
+ "status.pinned": "Finkatutako toota",
"status.read_more": "Irakurri gehiago",
"status.reblog": "Bultzada",
"status.reblog_private": "Bultzada jatorrizko hartzaileei",
"status.reblogged_by": "{name}(r)en bultzada",
"status.reblogs.empty": "Ez dio inork bultzada eman toot honi oraindik. Inork egiten duenean, hemen agertuko dira.",
"status.redraft": "Ezabatu eta berridatzi",
+ "status.remove_bookmark": "Kendu laster-marka",
"status.reply": "Erantzun",
"status.replyAll": "Erantzun harian",
"status.report": "Salatu @{name}",
@@ -393,25 +420,32 @@
"time_remaining.minutes": "{number, plural, one {minutu #} other {# minutu}} amaitzeko",
"time_remaining.moments": "Amaitzekotan",
"time_remaining.seconds": "{number, plural, one {segundo #} other {# segundo}} amaitzeko",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} hitz egiten",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {pertsona} other {pertsona}} hitz egiten",
"trends.trending_now": "Joera orain",
"ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.",
"upload_area.title": "Arrastatu eta jaregin igotzeko",
"upload_button.label": "Gehitu multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Fitxategi igoera muga gaindituta.",
"upload_error.poll": "Ez da inkestetan fitxategiak igotzea onartzen.",
+ "upload_form.audio_description": "Deskribatu entzumen galera duten pertsonentzat",
"upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat",
"upload_form.edit": "Editatu",
"upload_form.undo": "Ezabatu",
+ "upload_form.video_description": "Deskribatu entzumen galera edo ikusmen urritasuna duten pertsonentzat",
"upload_modal.analyzing_picture": "Irudia aztertzen…",
"upload_modal.apply": "Aplikatu",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Antzeman irudiko testua",
- "upload_modal.edit_media": "Editatu multimedia",
+ "upload_modal.description_placeholder": "Vaudeville itxurako filmean yogi ñaño bat jipoitzen dute Quebec-en whiski truk",
+ "upload_modal.detect_text": "Antzeman testua iruditik",
+ "upload_modal.edit_media": "Editatu media",
"upload_modal.hint": "Sakatu eta jaregin aurrebistako zirkulua iruditxoetan beti ikusgai egongo den puntu fokala hautatzeko.",
- "upload_modal.preview_label": "Aurreikusi({ratio})",
+ "upload_modal.preview_label": "Aurreikusi ({ratio})",
"upload_progress.label": "Igotzen...",
"video.close": "Itxi bideoa",
+ "video.download": "Deskargatu fitxategia",
"video.exit_fullscreen": "Irten pantaila osotik",
"video.expand": "Hedatu bideoa",
"video.fullscreen": "Pantaila osoa",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index b651edd32..91236538e 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -1,47 +1,56 @@
{
- "account.add_or_remove_from_list": "افزودن یا برداشتن از فهرست",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "افزودن یا برداشتن از فهرستها",
"account.badges.bot": "ربات",
+ "account.badges.group": "گروه",
"account.block": "مسدودسازی @{name}",
- "account.block_domain": "پنهانسازی همه چیز از سرور {domain}",
- "account.blocked": "مسدود شده",
+ "account.block_domain": "نهفتن همه چیز از {domain}",
+ "account.blocked": "مسدود",
+ "account.browse_more_on_origin_server": "مرور بیشتر روی نمایهٔ اصلی",
"account.cancel_follow_request": "لغو درخواست پیگیری",
- "account.direct": "پیغام خصوصی به @{name}",
- "account.domain_blocked": "دامین پنهانشده",
+ "account.direct": "پیام خصوصی به @{name}",
+ "account.domain_blocked": "دامنهٔ نهفته",
"account.edit_profile": "ویرایش نمایه",
- "account.endorse": "نمایش در نمایه",
+ "account.endorse": "معرّفی در نمایه",
"account.follow": "پی بگیرید",
- "account.followers": "پیگیران",
- "account.followers.empty": "هنوز هیچ کسی پیگیر این کاربر نیست.",
+ "account.followers": "پیگیران",
+ "account.followers.empty": "هنوز کسی پیگیر این کاربر نیست.",
"account.follows": "پی میگیرد",
- "account.follows.empty": "این کاربر هنوز هیچ کسی را پی نمیگیرد.",
+ "account.follows.empty": "این کاربر هنوز پیگیر کسی نیست.",
"account.follows_you": "پیگیر شماست",
- "account.hide_reblogs": "پنهان کردن بازبوقهای @{name}",
+ "account.hide_reblogs": "نهفتن بازبوقهای @{name}",
"account.last_status": "آخرین فعالیت",
- "account.link_verified_on": "مالکیت این نشانی در تاریخ {date} بررسی شد",
- "account.locked_info": "این حساب خصوصی است. صاحب این حساب تصمیم میگیرد که چه کسی میتواند پیگیرش باشد.",
- "account.media": "عکس و ویدیو",
+ "account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد",
+ "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم میگیرد که چه کسی بتواند پیگیرش باشد.",
+ "account.media": "رسانه",
"account.mention": "نامبردن از @{name}",
- "account.moved_to": "{name} منتقل شده است به:",
- "account.mute": "بیصدا کردن @{name}",
- "account.mute_notifications": "بیصداکردن اعلانها از طرف @{name}",
- "account.muted": "بیصداشده",
+ "account.moved_to": "{name} منتقل شده به:",
+ "account.mute": "خموشاندن @{name}",
+ "account.mute_notifications": "خموشاندن اعلانها از @{name}",
+ "account.muted": "خموش",
"account.never_active": "هرگز",
- "account.posts": "نوشتهها",
+ "account.posts": "بوق",
"account.posts_with_replies": "نوشتهها و پاسخها",
"account.report": "گزارش @{name}",
- "account.requested": "در انتظار پذیرش",
+ "account.requested": "منتظر پذیرش. برای لغو درخواست پیگیری کلیک کنید",
"account.share": "همرسانی نمایهٔ @{name}",
- "account.show_reblogs": "نشاندادن بازبوقهای @{name}",
+ "account.show_reblogs": "نمایش بازبوقهای @{name}",
"account.unblock": "رفع انسداد @{name}",
- "account.unblock_domain": "رفع پنهانسازی از {domain}",
- "account.unendorse": "نهفتن از نمایه",
+ "account.unblock_domain": "رفع نهفتن {domain}",
+ "account.unendorse": "معرّفی نکردن در نمایه",
"account.unfollow": "پایان پیگیری",
- "account.unmute": "باصدا کردن @{name}",
- "account.unmute_notifications": "باصداکردن اعلانها از طرف @{name}",
- "alert.rate_limited.message": "لطفاً پس از {retry_time, time, medium} دوباره تلاش کنید.",
+ "account.unmute": "رفع خموشی @{name}",
+ "account.unmute_notifications": "رفع خموشی اعلانها از @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "لطفاً پس از {retry_time, time, medium} دوباره بیازمایید.",
"alert.rate_limited.title": "محدودیت تعداد",
- "alert.unexpected.message": "خطای پیشبینینشدهای رخ داد.",
+ "alert.unexpected.message": "خطایی غیرمنتظره رخ داد.",
"alert.unexpected.title": "ای وای!",
+ "announcement.announcement": "اعلامیه",
"autosuggest_hashtag.per_week": "{count} در هفته",
"boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید",
"bundle_column_error.body": "هنگام بازکردن این بخش خطایی رخ داد.",
@@ -50,18 +59,19 @@
"bundle_modal_error.close": "بستن",
"bundle_modal_error.message": "هنگام بازکردن این بخش خطایی رخ داد.",
"bundle_modal_error.retry": "تلاش دوباره",
- "column.blocks": "کاربران مسدودشده",
+ "column.blocks": "کاربران مسدود",
+ "column.bookmarks": "نشانکها",
"column.community": "نوشتههای محلی",
- "column.direct": "پیغامهای خصوصی",
+ "column.direct": "پیامهای خصوصی",
"column.directory": "مرور نمایهها",
- "column.domain_blocks": "دامینهای پنهانشده",
+ "column.domain_blocks": "دامنههای نهفته",
"column.favourites": "پسندیدهها",
"column.follow_requests": "درخواستهای پیگیری",
"column.home": "خانه",
"column.lists": "فهرستها",
- "column.mutes": "کاربران بیصداشده",
+ "column.mutes": "کاربران خموش",
"column.notifications": "اعلانها",
- "column.pins": "نوشتههای ثابت",
+ "column.pins": "بوقهای ثابت",
"column.public": "نوشتههای همهجا",
"column_back_button.label": "بازگشت",
"column_header.hide_settings": "نهفتن تنظیمات",
@@ -71,56 +81,60 @@
"column_header.show_settings": "نمایش تنظیمات",
"column_header.unpin": "رهاکردن",
"column_subheading.settings": "تنظیمات",
- "community.column_settings.media_only": "فقط عکس و ویدیو",
+ "community.column_settings.local_only": "تنها محلّی",
+ "community.column_settings.media_only": "فقط رسانه",
+ "community.column_settings.remote_only": "تنها دوردست",
"compose_form.direct_message_warning": "این بوق تنها به کاربرانی که از آنها نام برده شده فرستاده خواهد شد.",
"compose_form.direct_message_warning_learn_more": "بیشتر بدانید",
- "compose_form.hashtag_warning": "از آنجا که این بوق فهرستنشده است، در نتایج جستجوی هشتگها پیدا نخواهد شد. تنها بوقهای عمومی را میتوان با جستجوی هشتگ پیدا کرد.",
- "compose_form.lock_disclaimer": "حساب شما {locked} نیست. هر کسی میتواند پیگیر شما شود و نوشتههای ویژهٔ پیگیران شما را ببیند.",
+ "compose_form.hashtag_warning": "از آنجا که این بوق فهرستنشده است، در نتایج جستوجوی هشتگها پیدا نخواهد شد. تنها بوقهای عمومی را میتوان با جستوجوی هشتگ یافت.",
+ "compose_form.lock_disclaimer": "حسابتان {locked} نیست. هر کسی میتواند پیگیرتان شده و فرستههای ویژهٔ پیگیرانتان را ببیند.",
"compose_form.lock_disclaimer.lock": "قفل",
"compose_form.placeholder": "تازه چه خبر؟",
"compose_form.poll.add_option": "افزودن گزینه",
"compose_form.poll.duration": "مدت نظرسنجی",
"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_single": "تبدیل به نظرسنجی تکگزینهای",
"compose_form.publish": "بوق",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "علامتگذاری به عنوان حساس",
- "compose_form.sensitive.marked": "این تصویر به عنوان حساس علامتگذاری شده",
- "compose_form.sensitive.unmarked": "این تصویر به عنوان حساس علامتگذاری نشده",
- "compose_form.spoiler.marked": "نوشته پشت هشدار محتوا پنهان است",
+ "compose_form.sensitive.marked": "رسانه به عنوان حساس علامتگذاری شده",
+ "compose_form.sensitive.unmarked": "رسانه به عنوان حساس علامتگذاری نشده",
+ "compose_form.spoiler.marked": "نوشته پشت هشدار پنهان است",
"compose_form.spoiler.unmarked": "نوشته پنهان نیست",
- "compose_form.spoiler_placeholder": "هشدار محتوا",
+ "compose_form.spoiler_placeholder": "هشدارتان را اینجا بنویسید",
"confirmation_modal.cancel": "بیخیال",
"confirmations.block.block_and_report": "مسدودسازی و گزارش",
"confirmations.block.confirm": "مسدود کن",
- "confirmations.block.message": "آیا واقعاً میخواهید {name} را مسدود کنید؟",
+ "confirmations.block.message": "مطمئنید که میخواهید {name} را مسدود کنید؟",
"confirmations.delete.confirm": "پاک کن",
- "confirmations.delete.message": "آیا واقعاً میخواهید این نوشته را پاک کنید؟",
+ "confirmations.delete.message": "آیا مطمئنید که میخواهید این بوق را پاک کنید؟",
"confirmations.delete_list.confirm": "پاک کن",
- "confirmations.delete_list.message": "آیا واقعاً میخواهید این فهرست را برای همیشه پاک کنید؟",
- "confirmations.domain_block.confirm": "پنهانسازی کل دامین",
- "confirmations.domain_block.message": "آیا جدی جدی میخواهید کل دامین {domain} را مسدود کنید؟ بیشتر وقتها مسدودکردن یا بیصداکردن چند حساب کاربری خاص کافی است و توصیه میشود. پس از این کار شما هیچ نوشتهای را از این دامین در فهرست نوشتههای عمومی یا اعلانهایتان نخواهید دید. پیگیران شما از این دامین هم حذف خواهد شد.",
- "confirmations.logout.confirm": "خروج",
- "confirmations.logout.message": "آیا مطمئنید که میخواهید خارج شوید؟",
- "confirmations.mute.confirm": "بیصدا کن",
- "confirmations.mute.explanation": "این کار نوشتههای آنها و نوشتههایی را که از آنها نام برده پنهان میکند، ولی آنها همچنان اجازه دارند نوشتههای شما را ببینند و شما را پی بگیرند.",
- "confirmations.mute.message": "آیا واقعاً میخواهید {name} را بیصدا کنید؟",
+ "confirmations.delete_list.message": "مطمئنید میخواهید این فهرست را برای همیشه پاک کنید؟",
+ "confirmations.domain_block.confirm": "نهفتن تمام دامنه",
+ "confirmations.domain_block.message": "آیا جدی جدی میخواهید تمام دامنهٔ {domain} را مسدود کنید؟ در بیشتر موارد مسدودسازی یا خموشاندن چند حساب خاص کافی است و توصیه میشود. پس از این کار شما هیچ نوشتهای را از این دامنه در فهرست نوشتههای عمومی یا اعلانهایتان نخواهید دید. پیگیرانتان از این دامنه هم حذف خواهند شد.",
+ "confirmations.logout.confirm": "خروج از حساب",
+ "confirmations.logout.message": "مطمئنید میخواهید خارج شوید؟",
+ "confirmations.mute.confirm": "خموشاندن",
+ "confirmations.mute.explanation": "این کار فرستههای آنها و فرستههایی را که از آنها نام برده پنهان میکند، ولی آنها همچنان اجازه دارند فرستههای شما را ببینند و شما را پی بگیرند.",
+ "confirmations.mute.message": "مطمئنید میخواهید {name} را بخموشانید؟",
"confirmations.redraft.confirm": "پاککردن و بازنویسی",
- "confirmations.redraft.message": "آیا واقعاً میخواهید این نوشته را پاک کنید و آن را از نو بنویسید؟ با این کار بازبوقها و پسندیدهشدنهای آن از دست میرود و پاسخها به آن بیمرجع میشود.",
+ "confirmations.redraft.message": "مطمئنید که میخواهید این بوق را پاک کنید و از نو بنویسید؟ با این کار بازبوقها و پسندهای آن از دست میرود و پاسخها به آن بیمرجع میشود.",
"confirmations.reply.confirm": "پاسخ",
- "confirmations.reply.message": "اگر الان پاسخ دهید، چیزی که در حال نوشتنش بودید پاک خواهد شد. آیا همین را میخواهید؟",
- "confirmations.unfollow.confirm": "لغو پیگیری",
- "confirmations.unfollow.message": "آیا واقعاً میخواهید به پیگیری از {name} پایان دهید؟",
+ "confirmations.reply.message": "اگر الان پاسخ دهید، چیزی که در حال نوشتنش بودید پاک خواهد شد. میخواهید ادامه دهید؟",
+ "confirmations.unfollow.confirm": "پایان پیگیری",
+ "confirmations.unfollow.message": "مطمئنید که میخواهید به پیگیری از {name} پایان دهید؟",
"conversation.delete": "حذف گفتگو",
"conversation.mark_as_read": "علامتگذاری به عنوان خوانده شده",
"conversation.open": "دیدن گفتگو",
"conversation.with": "با {names}",
- "directory.federated": "از سرورهای همسایه",
+ "directory.federated": "از کارسازهای شناختهشده",
"directory.local": "تنها از {domain}",
"directory.new_arrivals": "تازهواردان",
"directory.recently_active": "کاربران فعال اخیر",
- "embed.instructions": "برای جاگذاری این نوشته در سایت خودتان، کد زیر را کپی کنید.",
- "embed.preview": "نوشتهٔ جاگذاریشده این گونه به نظر خواهد رسید:",
+ "embed.instructions": "برای جاگذاری این بوق در سایت خودتان، کد زیر را کپی کنید.",
+ "embed.preview": "این گونه دیده خواهد شد:",
"emoji_button.activity": "فعالیت",
"emoji_button.custom": "سفارشی",
"emoji_button.flags": "پرچمها",
@@ -130,160 +144,170 @@
"emoji_button.not_found": "اینجا شکلکی نیست!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "اشیا",
"emoji_button.people": "مردم",
- "emoji_button.recent": "زیاد بهکاررفته",
+ "emoji_button.recent": "پراستفاده",
"emoji_button.search": "جستجو...",
"emoji_button.search_results": "نتایج جستجو",
"emoji_button.symbols": "نمادها",
"emoji_button.travel": "سفر و مکان",
"empty_column.account_timeline": "هیچ بوقی اینجا نیست!",
- "empty_column.account_unavailable": "نمایهٔ ناموجود",
- "empty_column.blocks": "شما هنوز هیچ کسی را مسدود نکردهاید.",
+ "empty_column.account_unavailable": "نمایهٔ موجود نیست",
+ "empty_column.blocks": "هنوز کسی را مسدود نکردهاید.",
+ "empty_column.bookmarked_statuses": "هنوز هیچ بوق نشانشدهای ندارید. وقتی بوقی را نشانکنید، اینجا دیده خواهد شد.",
"empty_column.community": "فهرست نوشتههای محلی خالی است. چیزی بنویسید تا چرخش بچرخد!",
- "empty_column.direct": "شما هیچ پیغام مستقیمی ندارید. اگر چنین پیغامی بگیرید یا بفرستید اینجا نمایش خواهد یافت.",
- "empty_column.domain_blocks": "هنوز هیچ دامینی پنهان نشده است.",
+ "empty_column.direct": "هنوز هیچ پیام مستقیمی ندارید. هروقت چنین پیامی بگیرید یا بفرستید اینجا نمایش خواهد یافت.",
+ "empty_column.domain_blocks": "هنوز هیچ دامنهای پنهان نشده است.",
"empty_column.favourited_statuses": "شما هنوز هیچ بوقی را نپسندیدهاید. وقتی بوقی را بپسندید، اینجا نمایش خواهد یافت.",
"empty_column.favourites": "هنوز هیچ کسی این بوق را نپسندیده است. وقتی کسی آن را بپسندد، نامش اینجا نمایش خواهد یافت.",
"empty_column.follow_requests": "شما هنوز هیچ درخواست پیگیریای ندارید. وقتی چنین درخواستی بگیرید، اینجا نمایش خواهد یافت.",
- "empty_column.hashtag": "هنوز هیچ چیزی با این برچسب (هشتگ) نیست.",
- "empty_column.home": "شما هنوز پیگیر کسی نیستید. {public} را ببینید یا چیزی را جستجو کنید تا کاربران دیگر را ببینید.",
+ "empty_column.hashtag": "هنوز هیچ چیزی در این برچسب نیست.",
+ "empty_column.home": "فهرست خانگی شما خالی است! {public} را ببینید یا چیزی را جستجو کنید تا کاربران دیگر را ببینید.",
"empty_column.home.public_timeline": "فهرست نوشتههای همهجا",
- "empty_column.list": "در این فهرست هنوز چیزی نیست. وقتی اعضای این فهرست چیزی بنویسند، اینجا ظاهر خواهد شد.",
- "empty_column.lists": "شما هنوز هیچ فهرستی ندارید. اگر فهرستی بسازید، اینجا نمایش خواهد یافت.",
- "empty_column.mutes": "شما هنوز هیچ کاربری را بیصدا نکردهاید.",
- "empty_column.notifications": "هنوز هیچ اعلانی ندارید. به نوشتههای دیگران واکنش نشان دهید تا گفتگو آغاز شود.",
- "empty_column.public": "اینجا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران سرورهای دیگر را پی بگیرید تا اینجا پر شود",
+ "empty_column.list": "در این فهرست هنوز چیزی نیست. وقتی اعضای این فهرست چیزی بفرستند، اینجا ظاهر خواهد شد.",
+ "empty_column.lists": "هنوز هیچ فهرستی ندارید. هنگامی که فهرستی بسازید، اینجا دیده خواهد شد.",
+ "empty_column.mutes": "هنوز هیچ کاربری را خموش نکردهاید.",
+ "empty_column.notifications": "هنوز هیچ اعلانی ندارید. به دیگران واکنش نشان دهید تا گفتگو آغاز شود.",
+ "empty_column.public": "اینجا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران کارسازهای دیگر را پی بگیرید تا اینجا پر شود",
"error.unexpected_crash.explanation": "به خاطر اشکالی در کدهای ما یا ناسازگاری با مرورگر شما، این صفحه به درستی نمایش نیافت.",
- "error.unexpected_crash.next_steps": "لطفاً صفحه را دوباره باز کنید. اگر آن هم کمکی نکرد، همچنان شاید بتوانید با ماستدون از راه یکی از اپهای آن کار کنید.",
- "errors.unexpected_crash.copy_stacktrace": "کپی جزئیات اشکال",
- "errors.unexpected_crash.report_issue": "گزارش اشکال",
+ "error.unexpected_crash.next_steps": "لطفاً صفحه را دوباره باز کنید. اگر کمکی نکرد، شاید همچنان بتوانید با ماستودون از راه یک مرورگر دیگر یا با یکی از اپهای آن کار کنید.",
+ "errors.unexpected_crash.copy_stacktrace": "رونوشت از جزئیات اشکال",
+ "errors.unexpected_crash.report_issue": "گزارش مشکل",
"follow_request.authorize": "اجازه دهید",
- "follow_request.reject": "اجازه ندهید",
- "getting_started.developers": "برای برنامهنویسان",
- "getting_started.directory": "فهرست گزیدهٔ کاربران",
- "getting_started.documentation": "راهنما",
+ "follow_request.reject": "رد کنید",
+ "follow_requests.unlocked_explanation": "با این که حسابتان قفل نیست، کارکنان {domain} فکر کردند که ممکن است بخواهید درخواستها از این حسابها را به صورت دستی بازبینی کنید.",
+ "getting_started.developers": "توسعهدهندگان",
+ "getting_started.directory": "فهرست نمایه",
+ "getting_started.documentation": "مستندات",
"getting_started.heading": "آغاز کنید",
- "getting_started.invite": "دعوت از دوستان",
- "getting_started.open_source_notice": "ماستدون یک نرمافزار آزاد است. میتوانید در ساخت آن مشارکت کنید یا مشکلاتش را در {github} گزارش دهید.",
- "getting_started.security": "امنیت",
- "getting_started.terms": "شرایط استفاده",
+ "getting_started.invite": "دعوت از دیگران",
+ "getting_started.open_source_notice": "ماستودون نرمافزاری آزاد است. میتوانید روی {github} در آن مشارکت کرده یا مشکلاتش را گزارش دهید.",
+ "getting_started.security": "تنظیمات حساب",
+ "getting_started.terms": "شرایط خدمات",
"hashtag.column_header.tag_mode.all": "و {additional}",
"hashtag.column_header.tag_mode.any": "یا {additional}",
"hashtag.column_header.tag_mode.none": "بدون {additional}",
"hashtag.column_settings.select.no_options_message": "هیچ پیشنهادی پیدا نشد",
- "hashtag.column_settings.select.placeholder": "برچسبها را وارد کنید…",
+ "hashtag.column_settings.select.placeholder": "هشتگها را وارد کنید…",
"hashtag.column_settings.tag_mode.all": "همهٔ اینها",
"hashtag.column_settings.tag_mode.any": "هرکدام از اینها",
"hashtag.column_settings.tag_mode.none": "هیچکدام از اینها",
- "hashtag.column_settings.tag_toggle": "برچسبهای بیشتری به این ستون بیفزایید",
- "home.column_settings.basic": "اصلی",
+ "hashtag.column_settings.tag_toggle": "افزودن برچسبهایی بیشتر به این ستون",
+ "home.column_settings.basic": "پایهای",
"home.column_settings.show_reblogs": "نمایش بازبوقها",
"home.column_settings.show_replies": "نمایش پاسخها",
+ "home.hide_announcements": "نهفتن اعلامیهها",
+ "home.show_announcements": "نمایش اعلامیهها",
"intervals.full.days": "{number, plural, one {# روز} other {# روز}}",
"intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}",
"intervals.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}}",
"introduction.federation.action": "بعدی",
- "introduction.federation.federated.headline": "فهرست همهٔ سرورها",
- "introduction.federation.federated.text": "نوشتههای عمومی سرورهای دیگر در این فهرست نمایش مییابند.",
+ "introduction.federation.federated.headline": "همگانی",
+ "introduction.federation.federated.text": "نوشتههای عمومی کارسازهای دیگر در این فهرست نمایش مییابند.",
"introduction.federation.home.headline": "خانه",
- "introduction.federation.home.text": "نوشتههای کسانی که شما آنها را پی میگیرید اینجا نمایش مییابند. شما میتوانید هر کسی را از هر سروری پی بگیرید!",
- "introduction.federation.local.headline": "محلی",
- "introduction.federation.local.text": "نوشتههای عمومی کسانی که روی سرور شما هستند در فهرست نوشتههای محلی نمایش مییابند.",
+ "introduction.federation.home.text": "فرستههای کسانی که شما آنها را پی میگیرید اینجا نمایش مییابند. شما میتوانید هر کسی را روی هر کارسازی پی بگیرید!",
+ "introduction.federation.local.headline": "محلّی",
+ "introduction.federation.local.text": "فرستههای عمومی کسانی که روی کارساز شما هستند در فهرست نوشتههای محلی نمایش مییابند.",
"introduction.interactions.action": "پایان خودآموز!",
"introduction.interactions.favourite.headline": "پسندیدن",
"introduction.interactions.favourite.text": "با پسندیدن یک بوق، شما آن را برای آینده ذخیره میکنید و به نویسنده میگویید که از بوقش خوشتان آمده.",
"introduction.interactions.reblog.headline": "بازبوقیدن",
"introduction.interactions.reblog.text": "اگر بخواهید نوشتهای را با پیگیران خودتان به اشتراک بگذارید، آن را بازمیبوقید.",
"introduction.interactions.reply.headline": "پاسخ",
- "introduction.interactions.reply.text": "شما میتوانید به بوقهای خودتان و دیگران پاسخ دهید، تا همهٔ این بوقها به شکل رشتهٔ بههمپیوستهای در یک گفتگو درآیند.",
+ "introduction.interactions.reply.text": "میتوانید به بوقهای خودتان و دیگران پاسخ دهید، تا در یک گفتگو به هم زنجیر شوند.",
"introduction.welcome.action": "بزن بریم!",
"introduction.welcome.headline": "نخستین گامها",
- "introduction.welcome.text": "به دنیای شبکههای اجتماعی غیرمتمرکز خوش آمدید! به زودی میتوانید نوشتههای خودتان را منتشر کنید و با دوستانتان که روی سرورهای مختلفی هستند حرف بزنید. ولی این سرور، {domain}، با بقیه فرق دارد زیرا حساب شما روی آن ساخته شده است، پس نامش را یادتان نگه دارید.",
+ "introduction.welcome.text": "به دنیای شبکههای اجتماعی غیرمتمرکز خوش آمدید! به زودی میتوانید نوشتههایتان را منتشر کرده و با دوستانتان روی دامنهٔ وسیعی از کارسازها حرف بزنید. ولی این کارساز، {domain}، با بقیه فرق دارد، چرا که میزبان نمایهٔ شماست، پس نامش را به خاطر بسپارید.",
"keyboard_shortcuts.back": "برای بازگشت",
- "keyboard_shortcuts.blocked": "برای گشودن کاربران بیصداشده",
+ "keyboard_shortcuts.blocked": "برای گشودن فهرست کاربران خموش",
"keyboard_shortcuts.boost": "برای بازبوقیدن",
- "keyboard_shortcuts.column": "برای برجستهکردن یک نوشته در یکی از ستونها",
- "keyboard_shortcuts.compose": "برای فعالکردن کادر نوشتهٔ تازه",
+ "keyboard_shortcuts.column": "برای تمرکز روی یک بوق در یکی از ستونها",
+ "keyboard_shortcuts.compose": "برای تمرکز روی محیط نوشتن",
"keyboard_shortcuts.description": "توضیح",
"keyboard_shortcuts.direct": "برای گشودن ستون پیغامهای مستقیم",
- "keyboard_shortcuts.down": "برای پایینرفتن در فهرست",
- "keyboard_shortcuts.enter": "برای گشودن نوشته",
+ "keyboard_shortcuts.down": "برای پایین رفتن در فهرست",
+ "keyboard_shortcuts.enter": "برای گشودن وضعیت",
"keyboard_shortcuts.favourite": "برای پسندیدن",
- "keyboard_shortcuts.favourites": "برای گشودن پیغامهای پسندیدهشده",
+ "keyboard_shortcuts.favourites": "برای گشودن فهرست پسندیدهها",
"keyboard_shortcuts.federated": "برای گشودن فهرست نوشتههای همهجا",
"keyboard_shortcuts.heading": "میانبرهای صفحهکلید",
"keyboard_shortcuts.home": "برای گشودن ستون اصلی پیگیریها",
"keyboard_shortcuts.hotkey": "میانبر",
- "keyboard_shortcuts.legend": "برای نمایش این راهنما",
+ "keyboard_shortcuts.legend": "برای نمایش این نشانه",
"keyboard_shortcuts.local": "برای گشودن فهرست نوشتههای محلی",
"keyboard_shortcuts.mention": "برای نامبردن از نویسنده",
- "keyboard_shortcuts.muted": "برای گشودن فهرست کاربران بیصداشده",
- "keyboard_shortcuts.my_profile": "برای گشودن صفحهٔ نمایهٔ شما",
+ "keyboard_shortcuts.muted": "برای گشودن فهرست کاربران خموش",
+ "keyboard_shortcuts.my_profile": "برای گشودن نمایهتان",
"keyboard_shortcuts.notifications": "برای گشودن ستون اعلانها",
- "keyboard_shortcuts.pinned": "برای گشودن فهرست نوشتههای ثابت",
- "keyboard_shortcuts.profile": "گشودن نمایهٔ نویسنده",
- "keyboard_shortcuts.reply": "برای پاسخدادن",
+ "keyboard_shortcuts.open_media": "برای باز کردن رسانه",
+ "keyboard_shortcuts.pinned": "برای گشودن فهرست بوقهای ثابت",
+ "keyboard_shortcuts.profile": "برای گشودن نمایهٔ نویسنده",
+ "keyboard_shortcuts.reply": "برای پاسخ",
"keyboard_shortcuts.requests": "برای گشودن فهرست درخواستهای پیگیری",
- "keyboard_shortcuts.search": "برای فعالکردن جستجو",
+ "keyboard_shortcuts.search": "برای تمرکز روی جستجو",
+ "keyboard_shortcuts.spoilers": "نمایش/نهفتن زمینهٔ هشدار محتوا",
"keyboard_shortcuts.start": "برای گشودن ستون «آغاز کنید»",
"keyboard_shortcuts.toggle_hidden": "برای نمایش/نهفتن نوشتهٔ پشت هشدار محتوا",
- "keyboard_shortcuts.toggle_sensitivity": "برای نمایش/نهفتن عکس و ویدیو",
+ "keyboard_shortcuts.toggle_sensitivity": "برای نمایش/نهفتن رسانه",
"keyboard_shortcuts.toot": "برای آغاز یک بوق تازه",
- "keyboard_shortcuts.unfocus": "برای برداشتن توجه از نوشتن/جستجو",
+ "keyboard_shortcuts.unfocus": "برای برداشتن تمرکز از نوشتن/جستجو",
"keyboard_shortcuts.up": "برای بالا رفتن در فهرست",
"lightbox.close": "بستن",
"lightbox.next": "بعدی",
"lightbox.previous": "قبلی",
"lightbox.view_context": "نمایش گفتگو",
"lists.account.add": "افزودن به فهرست",
- "lists.account.remove": "پاککردن از فهرست",
+ "lists.account.remove": "برداشتن از فهرست",
"lists.delete": "حذف فهرست",
"lists.edit": "ویرایش فهرست",
"lists.edit.submit": "تغییر عنوان",
"lists.new.create": "افزودن فهرست",
- "lists.new.title_placeholder": "نام فهرست تازه",
+ "lists.new.title_placeholder": "عنوان فهرست تازه",
"lists.search": "بین کسانی که پی میگیرید بگردید",
"lists.subheading": "فهرستهای شما",
"load_pending": "{count, plural, one {# مورد تازه} other {# مورد تازه}}",
"loading_indicator.label": "بارگیری...",
- "media_gallery.toggle_visible": "تغییر پیدایی",
+ "media_gallery.toggle_visible": "تغییر وضعیت نمایانی",
"missing_indicator.label": "پیدا نشد",
"missing_indicator.sublabel": "این منبع پیدا نشد",
"mute_modal.hide_notifications": "اعلانهای این کاربر پنهان شود؟",
"navigation_bar.apps": "اپهای موبایل",
"navigation_bar.blocks": "کاربران مسدودشده",
+ "navigation_bar.bookmarks": "نشانکها",
"navigation_bar.community_timeline": "نوشتههای محلی",
"navigation_bar.compose": "نوشتن بوق تازه",
- "navigation_bar.direct": "پیغامهای مستقیم",
+ "navigation_bar.direct": "پیامهای مستقیم",
"navigation_bar.discover": "گشت و گذار",
- "navigation_bar.domain_blocks": "دامینهای پنهانشده",
+ "navigation_bar.domain_blocks": "دامنههای نهفته",
"navigation_bar.edit_profile": "ویرایش نمایه",
"navigation_bar.favourites": "پسندیدهها",
- "navigation_bar.filters": "واژگان بیصداشده",
+ "navigation_bar.filters": "واژگان خموش",
"navigation_bar.follow_requests": "درخواستهای پیگیری",
"navigation_bar.follows_and_followers": "پیگیریها و پیگیران",
- "navigation_bar.info": "دربارهٔ این سرور",
- "navigation_bar.keyboard_shortcuts": "میانبرهای صفحهکلید",
+ "navigation_bar.info": "دربارهٔ این کارساز",
+ "navigation_bar.keyboard_shortcuts": "میانبرها",
"navigation_bar.lists": "فهرستها",
"navigation_bar.logout": "خروج",
- "navigation_bar.mutes": "کاربران بیصداشده",
+ "navigation_bar.mutes": "کاربران خموشانده",
"navigation_bar.personal": "شخصی",
- "navigation_bar.pins": "نوشتههای ثابت",
+ "navigation_bar.pins": "بوقهای ثابت",
"navigation_bar.preferences": "ترجیحات",
"navigation_bar.public_timeline": "نوشتههای همهجا",
"navigation_bar.security": "امنیت",
- "notification.favourite": "{name} نوشتهٔ شما را پسندید",
- "notification.follow": "{name} پیگیر شما شد",
+ "notification.favourite": "{name} وضعیتتان را برگزید",
+ "notification.follow": "{name} پیگیرتان شد",
+ "notification.follow_request": "{name} میخواهد پیگیر شما باشد",
"notification.mention": "{name} از شما نام برد",
+ "notification.own_poll": "نظرسنجی شما به پایان رسید",
"notification.poll": "نظرسنجیای که در آن رأی دادید به پایان رسیده است",
- "notification.reblog": "{name} نوشتهٔ شما را بازبوقید",
+ "notification.reblog": "{name} وضعیتتان را تقویت کرد",
"notifications.clear": "پاککردن اعلانها",
- "notifications.clear_confirmation": "واقعاً میخواهید همهٔ اعلانهایتان را برای همیشه پاک کنید؟",
- "notifications.column_settings.alert": "اعلان در کامپیوتر",
+ "notifications.clear_confirmation": "مطمئنید میخواهید همهٔ اعلانهایتان را برای همیشه پاک کنید؟",
+ "notifications.column_settings.alert": "اعلانهای میزکار",
"notifications.column_settings.favourite": "پسندیدهها:",
- "notifications.column_settings.filter_bar.advanced": "نمایش همهٔ گروهها",
- "notifications.column_settings.filter_bar.category": "فیلتر سریع",
+ "notifications.column_settings.filter_bar.advanced": "نمایش همهٔ دستهها",
+ "notifications.column_settings.filter_bar.category": "نوار پالایش سریع",
"notifications.column_settings.filter_bar.show": "نمایش",
"notifications.column_settings.follow": "پیگیران تازه:",
+ "notifications.column_settings.follow_request": "درخواستهای جدید پیگیری:",
"notifications.column_settings.mention": "نامبردنها:",
"notifications.column_settings.poll": "نتایج نظرسنجی:",
"notifications.column_settings.push": "اعلانها از سمت سرور",
@@ -292,9 +316,9 @@
"notifications.column_settings.sound": "پخش صدا",
"notifications.filter.all": "همه",
"notifications.filter.boosts": "بازبوقها",
- "notifications.filter.favourites": "پسندیدهها",
+ "notifications.filter.favourites": "پسندها",
"notifications.filter.follows": "پیگیریها",
- "notifications.filter.mentions": "گفتگوها",
+ "notifications.filter.mentions": "نامبردنها",
"notifications.filter.polls": "نتایج نظرسنجی",
"notifications.group": "{count} اعلان",
"poll.closed": "پایانیافته",
@@ -305,14 +329,14 @@
"poll.voted": "شما به این گزینه رأی دادید",
"poll_button.add_poll": "افزودن نظرسنجی",
"poll_button.remove_poll": "حذف نظرسنجی",
- "privacy.change": "تنظیم حریم خصوصی نوشتهها",
- "privacy.direct.long": "تنها به کاربران نامبردهشده نشان بده",
- "privacy.direct.short": "مستقیم",
- "privacy.private.long": "تنها به پیگیران نشان بده",
+ "privacy.change": "تنظیم محرمانگی نوشته",
+ "privacy.direct.long": "ارسال فقط به کاربران اشارهشده",
+ "privacy.direct.short": "خصوصی",
+ "privacy.private.long": "ارسال فقط به پیگیران",
"privacy.private.short": "خصوصی",
- "privacy.public.long": "نمایش در فهرست عمومی",
+ "privacy.public.long": "ارسال به خطزمانی عمومی",
"privacy.public.short": "عمومی",
- "privacy.unlisted.long": "عمومی، ولی فهرست نکن",
+ "privacy.unlisted.long": "ارسال نکردن به خطزمانی عمومی",
"privacy.unlisted.short": "فهرستنشده",
"refresh": "بهروزرسانی",
"regeneration_indicator.label": "در حال باز شدن…",
@@ -322,45 +346,47 @@
"relative_time.just_now": "الان",
"relative_time.minutes": "{number} دقیقه",
"relative_time.seconds": "{number} ثانیه",
+ "relative_time.today": "امروز",
"reply_indicator.cancel": "لغو",
"report.forward": "فرستادن به {target}",
- "report.forward_hint": "این حساب در سرور دیگری ثبت شده. آیا میخواهید رونوشتی از این گزارش به طور ناشناس به آنجا هم فرستاده شود؟",
- "report.hint": "این گزارش به مدیران سرور شما فرستاده خواهد شد. میتوانید دلیل گزارشدادن این حساب را در اینجا بنویسید:",
+ "report.forward_hint": "این حساب در کارساز دیگری ثبت شده. آیا میخواهید رونوشتی ناشناس از این گزارش به آنجا هم فرستاده شود؟",
+ "report.hint": "این گزارش به مدیران کارسازتان فرستاده خواهد شد. میتوانید دلیل گزارش این حساب را در ادامه بنویسید:",
"report.placeholder": "توضیح اضافه",
"report.submit": "بفرست",
- "report.target": "گزارشدادن",
+ "report.target": "در حال گزارش {target}",
"search.placeholder": "جستجو",
"search_popout.search_format": "راهنمای جستجوی پیشرفته",
- "search_popout.tips.full_text": "جستجوی متنی ساده میتواند بوقهایی که شما نوشتهاید، پسندیدهاید، بازبوقیدهاید، یا در آنها از شما نام برده شده است را پیدا کند. همچنین نامهای کاربری، نام نمایشیافته، و هشتگها را هم شامل میشود.",
- "search_popout.tips.hashtag": "برچسب",
- "search_popout.tips.status": "نوشته",
+ "search_popout.tips.full_text": "جستوجوی متنی ساده وضعیتهایی که که نوشته، برگزیده، تقویتکرده یا در آنها اشارهشدهاید را به اضافهٔ نامهای کاربری، نامهای نمایشی و برچسبهای مطابق برمیگرداند.",
+ "search_popout.tips.hashtag": "هشتگ",
+ "search_popout.tips.status": "بوق",
"search_popout.tips.text": "جستجوی متنی ساده برای نامها، نامهای کاربری، و برچسبها",
"search_popout.tips.user": "کاربر",
"search_results.accounts": "افراد",
- "search_results.hashtags": "برچسبها",
+ "search_results.hashtags": "هشتگها",
"search_results.statuses": "بوقها",
- "search_results.statuses_fts_disabled": "جستجوی محتوای بوقها در این سرور ماستدون ممکن نیست.",
+ "search_results.statuses_fts_disabled": "جستجوی محتوای بوقها در این کارساز ماستودون فعال نشده است.",
"search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}",
- "status.admin_account": "محیط مدیریت مربوط به @{name} را باز کن",
- "status.admin_status": "این نوشته را در محیط مدیریت باز کن",
+ "status.admin_account": "گشودن واسط مدیریت برای @{name}",
+ "status.admin_status": "گشودن این بوق در واسط مدیریت",
"status.block": "مسدودسازی @{name}",
+ "status.bookmark": "نشانک",
"status.cancel_reblog_private": "حذف بازبوق",
"status.cannot_reblog": "این نوشته را نمیشود بازبوقید",
- "status.copy": "رونوشتبرداری از نشانی این نوشته",
+ "status.copy": "رونوشتبرداری از نشانی بوق",
"status.delete": "پاککردن",
"status.detailed_status": "نمایش کامل گفتگو",
"status.direct": "پیغام مستقیم به @{name}",
"status.embed": "جاگذاری",
"status.favourite": "پسندیدن",
- "status.filtered": "فیلترشده",
+ "status.filtered": "پالوده",
"status.load_more": "بیشتر نشان بده",
- "status.media_hidden": "تصویر پنهان شده",
+ "status.media_hidden": "رسانهٔ نهفته",
"status.mention": "نامبردن از @{name}",
"status.more": "بیشتر",
- "status.mute": "بیصدا کردن @{name}",
- "status.mute_conversation": "بیصداکردن گفتگو",
- "status.open": "این نوشته را باز کن",
- "status.pin": "نوشتهٔ ثابت نمایه",
+ "status.mute": "خموشاندن @{name}",
+ "status.mute_conversation": "خموشاندن گفتگو",
+ "status.open": "گشودن این بوق",
+ "status.pin": "ثابت کردن در نمایه",
"status.pinned": "بوق ثابت",
"status.read_more": "بیشتر بخوانید",
"status.reblog": "بازبوقیدن",
@@ -368,24 +394,25 @@
"status.reblogged_by": "{name} بازبوقید",
"status.reblogs.empty": "هنوز هیچ کسی این بوق را بازنبوقیده است. وقتی کسی چنین کاری کند، اینجا نمایش خواهد یافت.",
"status.redraft": "پاککردن و بازنویسی",
+ "status.remove_bookmark": "برداشتن نشانک",
"status.reply": "پاسخ",
- "status.replyAll": "به نوشته پاسخ دهید",
- "status.report": "گزارش دادن @{name}",
+ "status.replyAll": "پاسخ به رشته",
+ "status.report": "گزارش @{name}",
"status.sensitive_warning": "محتوای حساس",
"status.share": "همرسانی",
- "status.show_less": "نهفتن",
+ "status.show_less": "نمایش کمتر",
"status.show_less_all": "نمایش کمتر همه",
- "status.show_more": "نمایش",
+ "status.show_more": "نمایش بیشتر",
"status.show_more_all": "نمایش بیشتر همه",
- "status.show_thread": "نمایش گفتگو",
+ "status.show_thread": "نمایش رشته",
"status.uncached_media_warning": "ناموجود",
- "status.unmute_conversation": "باصداکردن گفتگو",
+ "status.unmute_conversation": "رفع خموشی گفتگو",
"status.unpin": "برداشتن نوشتهٔ ثابت نمایه",
- "suggestions.dismiss": "پیشنهاد را نادیده بگیر",
+ "suggestions.dismiss": "نادیده گرفتن پیشنهاد",
"suggestions.header": "شاید این هم برایتان جالب باشد…",
"tabs_bar.federated_timeline": "همگانی",
"tabs_bar.home": "خانه",
- "tabs_bar.local_timeline": "محلی",
+ "tabs_bar.local_timeline": "بومی",
"tabs_bar.notifications": "اعلانها",
"tabs_bar.search": "جستجو",
"time_remaining.days": "{number, plural, one {# روز} other {# روز}} باقی مانده",
@@ -393,31 +420,38 @@
"time_remaining.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}} باقی مانده",
"time_remaining.moments": "زمان باقیمانده",
"time_remaining.seconds": "{number, plural, one {# ثانیه} other {# ثانیه}} باقی مانده",
+ "timeline_hint.remote_resource_not_displayed": "{resource} از دیگر کارسازها نمایش داده نمیشوند.",
+ "timeline_hint.resources.followers": "پیگیر",
+ "timeline_hint.resources.follows": "پی میگیرد",
+ "timeline_hint.resources.statuses": "بوقهای قدیمیتر",
"trends.count_by_accounts": "{count} {rawCount, plural, one {نفر نوشته است} other {نفر نوشتهاند}}",
"trends.trending_now": "پرطرفدار",
- "ui.beforeunload": "اگر از ماستدون خارج شوید پیشنویس شما پاک خواهد شد.",
+ "ui.beforeunload": "اگر از ماستودون خارج شوید پیشنویس شما از دست خواهد رفت.",
"upload_area.title": "برای بارگذاری به اینجا بکشید",
- "upload_button.label": "افزودن عکس و ویدیو (JPEG, PNG, GIF, WebM, MP4, MOV)",
- "upload_error.limit": "از حد مجاز باگذاری فراتر رفتید.",
- "upload_error.poll": "باگذاری پرونده در نظرسنجیها ممکن نیست.",
- "upload_form.description": "نوشتهٔ توضیحی برای کمبینایان و نابینایان",
+ "upload_button.label": "افزودن رسانه ({formats})",
+ "upload_error.limit": "از حد مجاز باگذاری پرونده فراتر رفتید.",
+ "upload_error.poll": "بارگذاری پرونده در نظرسنجیها مجاز نیست.",
+ "upload_form.audio_description": "برای ناشنوایان توصیفش کنید",
+ "upload_form.description": "برای کمبینایان توصیفش کنید",
"upload_form.edit": "ویرایش",
"upload_form.undo": "حذف",
+ "upload_form.video_description": "برای کمبینایان یا ناشنوایان توصیفش کنید",
"upload_modal.analyzing_picture": "در حال پردازش تصویر…",
- "upload_modal.apply": "اجرا",
- "upload_modal.description_placeholder": "مردی با بیل مادرزنش را کشت",
- "upload_modal.detect_text": "پیدا کردن نوشته از درون تصویر",
- "upload_modal.edit_media": "ویرایش تصویر",
+ "upload_modal.apply": "اعمال",
+ "upload_modal.description_placeholder": "الا یا ایّها الساقی، ادر کأساً و ناولها",
+ "upload_modal.detect_text": "تشخیص متن درون عکس",
+ "upload_modal.edit_media": "ویرایش رسانه",
"upload_modal.hint": "حتی اگر تصویر بریده یا کوچک شود، نقطهٔ کانونی آن همیشه دیده خواهد شد. نقطهٔ کانونی را با کلیک یا جابهجا کردن آن تنظیم کنید.",
"upload_modal.preview_label": "پیشنمایش ({ratio})",
- "upload_progress.label": "بارگذاری...",
+ "upload_progress.label": "در حال بارگذاری…",
"video.close": "بستن ویدیو",
- "video.exit_fullscreen": "خروج از حالت تمام صفحه",
+ "video.download": "بارگیری پرونده",
+ "video.exit_fullscreen": "خروج از حالت تمامصفحه",
"video.expand": "بزرگکردن ویدیو",
- "video.fullscreen": "تمام صفحه",
+ "video.fullscreen": "تمامصفحه",
"video.hide": "نهفتن ویدیو",
"video.mute": "قطع صدا",
- "video.pause": "توقف",
+ "video.pause": "مکث",
"video.play": "پخش",
"video.unmute": "پخش صدا"
}
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 2e71e6e18..1a3c2b3f8 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -1,13 +1,17 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Lisää tai poista listoilta",
"account.badges.bot": "Botti",
+ "account.badges.group": "Ryhmä",
"account.block": "Estä @{name}",
"account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}",
"account.blocked": "Estetty",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Peruuta seurauspyyntö",
"account.direct": "Viesti käyttäjälle @{name}",
"account.domain_blocked": "Verkko-osoite piilotettu",
- "account.edit_profile": "Muokkaa",
+ "account.edit_profile": "Muokkaa profiilia",
"account.endorse": "Suosittele profiilissasi",
"account.follow": "Seuraa",
"account.followers": "Seuraajaa",
@@ -33,15 +37,20 @@
"account.share": "Jaa käyttäjän @{name} profiili",
"account.show_reblogs": "Näytä buustaukset käyttäjältä @{name}",
"account.unblock": "Salli @{name}",
- "account.unblock_domain": "Näytä {domain}",
+ "account.unblock_domain": "Salli {domain}",
"account.unendorse": "Poista suosittelu profiilistasi",
"account.unfollow": "Lakkaa seuraamasta",
"account.unmute": "Poista käyttäjän @{name} mykistys",
"account.unmute_notifications": "Poista mykistys käyttäjän @{name} ilmoituksilta",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Yritä uudestaan {retry_time, time, medium} jälkeen.",
- "alert.rate_limited.title": "Rate limited",
+ "alert.rate_limited.title": "Määrää rajoitettu",
"alert.unexpected.message": "Tapahtui odottamaton virhe.",
"alert.unexpected.title": "Hups!",
+ "announcement.announcement": "Ilmoitus",
"autosuggest_hashtag.per_week": "{count} viikossa",
"boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}",
"bundle_column_error.body": "Jokin meni vikaan komponenttia ladattaessa.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Jokin meni vikaan komponenttia ladattaessa.",
"bundle_modal_error.retry": "Yritä uudestaan",
"column.blocks": "Estetyt käyttäjät",
+ "column.bookmarks": "Kirjanmerkit",
"column.community": "Paikallinen aikajana",
"column.direct": "Viestit",
"column.directory": "Selaa profiileja",
@@ -61,7 +71,7 @@
"column.lists": "Listat",
"column.mutes": "Mykistetyt käyttäjät",
"column.notifications": "Ilmoitukset",
- "column.pins": "Kiinnitetty tuuttaus",
+ "column.pins": "Kiinnitetyt tuuttaukset",
"column.public": "Yleinen aikajana",
"column_back_button.label": "Takaisin",
"column_header.hide_settings": "Piilota asetukset",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Näytä asetukset",
"column_header.unpin": "Poista kiinnitys",
"column_subheading.settings": "Asetukset",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Vain media",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "Tämä tuuttaus näkyy vain mainituille käyttäjille.",
"compose_form.direct_message_warning_learn_more": "Lisätietoja",
"compose_form.hashtag_warning": "Tämä tuuttaus ei näy hashtag-hauissa, koska se on listaamaton. Hashtagien avulla voi hakea vain julkisia tuuttauksia.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Äänestyksen kesto",
"compose_form.poll.option_placeholder": "Valinta numero",
"compose_form.poll.remove_option": "Poista tämä valinta",
+ "compose_form.poll.switch_to_multiple": "Muuta kysely monivalinnaksi",
+ "compose_form.poll.switch_to_single": "Muuta kysely sallimaan vain yksi valinta",
"compose_form.publish": "Tuuttaa",
"compose_form.publish_loud": "Julkista!",
"compose_form.sensitive.hide": "Valitse tämä arkaluontoisena",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "Kirjaudu ulos",
"confirmations.logout.message": "Oletko varma, että haluat kirjautua ulos?",
"confirmations.mute.confirm": "Mykistä",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Tämä piilottaa päivitykset heiltä ja päivitykset, joissa hänet mainitaan, mutta sallii silti heidän nähdä sinun päivityksesi ja seurata sinua.",
"confirmations.mute.message": "Haluatko varmasti mykistää käyttäjän {name}?",
"confirmations.redraft.confirm": "Poista & palauta muokattavaksi",
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Ei ole 'toots' täällä!",
"empty_column.account_unavailable": "Profiilia ei löydy",
"empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.",
+ "empty_column.bookmarked_statuses": "Et ole vielä lisännyt tuuttauksia kirjanmerkkeihisi. Kun teet niin, tuuttaus näkyy tässä.",
"empty_column.community": "Paikallinen aikajana on tyhjä. Homma lähtee käyntiin, kun kirjoitat jotain julkista!",
"empty_column.direct": "Sinulla ei ole vielä yhtään viestiä yksittäiselle käyttäjälle. Kun lähetät tai vastaanotat sellaisen, se näkyy täällä.",
"empty_column.domain_blocks": "Yhtään verkko-osoitetta ei ole vielä piilotettu.",
@@ -154,12 +169,13 @@
"empty_column.public": "Täällä ei ole mitään! Saat sisältöä, kun kirjoitat jotain julkisesti tai käyt seuraamassa muiden instanssien käyttäjiä",
"error.unexpected_crash.explanation": "Sivua ei voi näyttää oikein, johtuen bugista tai ongelmasta selaimen yhteensopivuudessa.",
"error.unexpected_crash.next_steps": "Kokeile päivittää sivu. Jos tämä ei auta, saatat yhä pystyä käyttämään Mastodonia toisen selaimen tai sovelluksen kautta.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "errors.unexpected_crash.copy_stacktrace": "Kopioi stacktrace leikepöydälle",
"errors.unexpected_crash.report_issue": "Ilmoita ongelmasta",
"follow_request.authorize": "Valtuuta",
"follow_request.reject": "Hylkää",
+ "follow_requests.unlocked_explanation": "Vaikka tilisi ei ole lukittu, {domain} ylläpitäjien mielestä haluat tarkistaa näiden tilien seurauspyynnöt manuaalisesti.",
"getting_started.developers": "Kehittäjille",
- "getting_started.directory": "Profiili hakemisto",
+ "getting_started.directory": "Profiilihakemisto",
"getting_started.documentation": "Documentaatio",
"getting_started.heading": "Aloitus",
"getting_started.invite": "Kutsu ihmisiä",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Perusasetukset",
"home.column_settings.show_reblogs": "Näytä buustaukset",
"home.column_settings.show_replies": "Näytä vastaukset",
+ "home.hide_announcements": "Piilota ilmoitukset",
+ "home.show_announcements": "Näytä ilmoitukset",
"intervals.full.days": "Päivä päiviä",
"intervals.full.hours": "Tunti tunteja",
"intervals.full.minutes": "Minuuti minuuteja",
@@ -197,7 +215,7 @@
"introduction.interactions.reply.text": "TOOT IS NOT A WORD",
"introduction.welcome.action": "Mennään!",
"introduction.welcome.headline": "Ensimmäiset askeleet",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "introduction.welcome.text": "Tervetuloa fediverseen! Muutaman hetken kuluttua voit lähettää viestejä ja jutella ystävillesi useiden palvelinten halki. Mutta tämä palvelin {domain}, on erityinen — sinun profiilisi sijaitsee sillä, joten muista sen nimi.",
"keyboard_shortcuts.back": "liiku taaksepäin",
"keyboard_shortcuts.blocked": "avaa lista estetyistä käyttäjistä",
"keyboard_shortcuts.boost": "buustaa",
@@ -207,7 +225,7 @@
"keyboard_shortcuts.direct": "avaa pikaviestisarake",
"keyboard_shortcuts.down": "siirry listassa alaspäin",
"keyboard_shortcuts.enter": "avaa tilapäivitys",
- "keyboard_shortcuts.favourite": "tykkää",
+ "keyboard_shortcuts.favourite": "lisää suosikkeihin",
"keyboard_shortcuts.favourites": "avaa lista suosikeista",
"keyboard_shortcuts.federated": "avaa yleinen aikajana",
"keyboard_shortcuts.heading": "Näppäinkomennot",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "avaa lista mykistetyistä käyttäjistä",
"keyboard_shortcuts.my_profile": "avaa profiilisi",
"keyboard_shortcuts.notifications": "avaa ilmoitukset-sarake",
+ "keyboard_shortcuts.open_media": "median avaus",
"keyboard_shortcuts.pinned": "avaa lista kiinnitetyistä tuuttauksista",
"keyboard_shortcuts.profile": "avaa kirjoittajan profiili",
"keyboard_shortcuts.reply": "vastaa",
"keyboard_shortcuts.requests": "avaa lista seurauspyynnöistä",
"keyboard_shortcuts.search": "siirry hakukenttään",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "avaa \"Aloitus\" -sarake",
"keyboard_shortcuts.toggle_hidden": "näytä/piilota sisältövaroituksella merkitty teksti",
"keyboard_shortcuts.toggle_sensitivity": "näytä/piilota media",
@@ -238,7 +258,7 @@
"lists.account.remove": "Poista listasta",
"lists.delete": "Poista lista",
"lists.edit": "Muokkaa listaa",
- "lists.edit.submit": "Change title",
+ "lists.edit.submit": "Vaihda otsikko",
"lists.new.create": "Lisää lista",
"lists.new.title_placeholder": "Uuden listan nimi",
"lists.search": "Etsi seuraamistasi henkilöistä",
@@ -249,8 +269,9 @@
"missing_indicator.label": "Ei löytynyt",
"missing_indicator.sublabel": "Tätä resurssia ei löytynyt",
"mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?",
- "navigation_bar.apps": "Mobiiliapplikaatiot",
+ "navigation_bar.apps": "Mobiilisovellukset",
"navigation_bar.blocks": "Estetyt käyttäjät",
+ "navigation_bar.bookmarks": "Kirjanmerkit",
"navigation_bar.community_timeline": "Paikallinen aikajana",
"navigation_bar.compose": "Kirjoita uusi tuuttaus",
"navigation_bar.direct": "Viestit",
@@ -261,7 +282,7 @@
"navigation_bar.filters": "Mykistetyt sanat",
"navigation_bar.follow_requests": "Seuraamispyynnöt",
"navigation_bar.follows_and_followers": "Seurattavat ja seuraajat",
- "navigation_bar.info": "Tietoa tästä instanssista",
+ "navigation_bar.info": "Tietoa tästä palvelimesta",
"navigation_bar.keyboard_shortcuts": "Näppäinkomennot",
"navigation_bar.lists": "Listat",
"navigation_bar.logout": "Kirjaudu ulos",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Tunnukset",
"notification.favourite": "{name} tykkäsi tilastasi",
"notification.follow": "{name} seurasi sinua",
+ "notification.follow_request": "{name} haluaa seurata sinua",
"notification.mention": "{name} mainitsi sinut",
+ "notification.own_poll": "Kyselysi on päättynyt",
"notification.poll": "Kysely, johon osallistuit, on päättynyt",
"notification.reblog": "{name} buustasi tilaasi",
"notifications.clear": "Tyhjennä ilmoitukset",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Pikasuodatuspalkki",
"notifications.column_settings.filter_bar.show": "Näytä",
"notifications.column_settings.follow": "Uudet seuraajat:",
+ "notifications.column_settings.follow_request": "Uudet seuraamispyynnöt:",
"notifications.column_settings.mention": "Maininnat:",
"notifications.column_settings.poll": "Kyselyn tulokset:",
"notifications.column_settings.push": "Push-ilmoitukset",
@@ -322,6 +346,7 @@
"relative_time.just_now": "nyt",
"relative_time.minutes": "{number} m",
"relative_time.seconds": "{number} s",
+ "relative_time.today": "tänään",
"reply_indicator.cancel": "Peruuta",
"report.forward": "Välitä kohteeseen {target}",
"report.forward_hint": "Tämä tili on toisella palvelimella. Haluatko lähettää nimettömän raportin myös sinne?",
@@ -344,6 +369,7 @@
"status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}",
"status.admin_status": "Avaa tilapäivitys moderaattorinäkymässä",
"status.block": "Estä @{name}",
+ "status.bookmark": "Tallenna kirjanmerkki",
"status.cancel_reblog_private": "Peru buustaus",
"status.cannot_reblog": "Tätä julkaisua ei voi buustata",
"status.copy": "Kopioi linkki tilapäivitykseen",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} buustasi",
"status.reblogs.empty": "Kukaan ei ole vielä buustannut tätä tuuttausta. Kun joku tekee niin, näkyy kyseinen henkilö tässä.",
"status.redraft": "Poista & palauta muokattavaksi",
+ "status.remove_bookmark": "Poista kirjanmerkki",
"status.reply": "Vastaa",
"status.replyAll": "Vastaa ketjuun",
"status.report": "Raportoi @{name}",
@@ -381,7 +408,7 @@
"status.uncached_media_warning": "Ei saatavilla",
"status.unmute_conversation": "Poista keskustelun mykistys",
"status.unpin": "Irrota profiilista",
- "suggestions.dismiss": "Dismiss suggestion",
+ "suggestions.dismiss": "Hylkää ehdotus",
"suggestions.header": "Saatat olla kiinnostunut myös…",
"tabs_bar.federated_timeline": "Yleinen",
"tabs_bar.home": "Koti",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minuutti} other {# minuuttia}} jäljellä",
"time_remaining.moments": "Hetki jäljellä",
"time_remaining.seconds": "{number, plural, one {# sekunti} other {# sekuntia}} jäljellä",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {henkilö} other {henkilöä}} keskustelee",
"trends.trending_now": "Suosittua nyt",
"ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.",
@@ -400,18 +431,21 @@
"upload_button.label": "Lisää mediaa",
"upload_error.limit": "Tiedostolatauksien raja ylitetty.",
"upload_error.poll": "Tiedon lataaminen ei ole sallittua kyselyissä.",
+ "upload_form.audio_description": "Kuvaile kuulovammaisille",
"upload_form.description": "Anna kuvaus näkörajoitteisia varten",
"upload_form.edit": "Muokkaa",
"upload_form.undo": "Peru",
+ "upload_form.video_description": "Kuvaile kuulo- tai näkövammaisille",
"upload_modal.analyzing_picture": "Analysoidaan kuvaa…",
"upload_modal.apply": "Käytä",
"upload_modal.description_placeholder": "Eräänä jäätävänä ja pimeänä yönä gorilla ratkaisi sudokun kahdessa minuutissa",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_modal.detect_text": "Tunnista teksti kuvasta",
+ "upload_modal.edit_media": "Muokkaa mediaa",
+ "upload_modal.hint": "Klikkaa tai vedä ympyrä esikatselussa valitaksesi keskipiste, joka näkyy aina pienoiskuvissa.",
+ "upload_modal.preview_label": "Esikatselu ({ratio})",
"upload_progress.label": "Ladataan...",
"video.close": "Sulje video",
+ "video.download": "Lataa tiedosto",
"video.exit_fullscreen": "Poistu koko näytön tilasta",
"video.expand": "Laajenna video",
"video.fullscreen": "Koko näyttö",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 38f20b619..be2cdd2de 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -1,30 +1,34 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Ajouter ou retirer des listes",
"account.badges.bot": "Robot",
+ "account.badges.group": "Groupe",
"account.block": "Bloquer @{name}",
- "account.block_domain": "Tout masquer venant de {domain}",
- "account.blocked": "Bloqué",
+ "account.block_domain": "Bloquer le domaine {domain}",
+ "account.blocked": "Bloqué·e",
+ "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original",
"account.cancel_follow_request": "Annuler la demande de suivi",
"account.direct": "Envoyer un message direct à @{name}",
- "account.domain_blocked": "Domaine caché",
+ "account.domain_blocked": "Domaine bloqué",
"account.edit_profile": "Modifier le profil",
"account.endorse": "Recommander sur le profil",
"account.follow": "Suivre",
- "account.followers": "Abonné⋅e⋅s",
- "account.followers.empty": "Personne ne suit cet utilisateur·rice pour l’instant.",
+ "account.followers": "Abonné·e·s",
+ "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.",
"account.follows": "Abonnements",
"account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.",
"account.follows_you": "Vous suit",
"account.hide_reblogs": "Masquer les partages de @{name}",
"account.last_status": "Dernière activité",
"account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}",
- "account.locked_info": "Ce compte est verrouillé. Son propriétaire approuve manuellement qui peut le ou la suivre.",
- "account.media": "Média",
+ "account.locked_info": "Ce compte est verrouillé. Son ou sa propriétaire approuve manuellement qui peut le suivre.",
+ "account.media": "Médias",
"account.mention": "Mentionner @{name}",
"account.moved_to": "{name} a déménagé vers :",
"account.mute": "Masquer @{name}",
"account.mute_notifications": "Ignorer les notifications de @{name}",
- "account.muted": "Silencé",
+ "account.muted": "Masqué·e",
"account.never_active": "Jamais",
"account.posts": "Pouets",
"account.posts_with_replies": "Pouets et réponses",
@@ -33,17 +37,22 @@
"account.share": "Partager le profil de @{name}",
"account.show_reblogs": "Afficher les partages de @{name}",
"account.unblock": "Débloquer @{name}",
- "account.unblock_domain": "Ne plus masquer {domain}",
+ "account.unblock_domain": "Débloquer le domaine {domain}",
"account.unendorse": "Ne plus recommander sur le profil",
"account.unfollow": "Ne plus suivre",
"account.unmute": "Ne plus masquer @{name}",
- "account.unmute_notifications": "Réactiver les notifications de @{name}",
+ "account.unmute_notifications": "Ne plus masquer les notifications de @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Veuillez réessayer après {retry_time, time, medium}.",
- "alert.rate_limited.title": "Débit limité",
+ "alert.rate_limited.title": "Taux limité",
"alert.unexpected.message": "Une erreur inattendue s’est produite.",
"alert.unexpected.title": "Oups !",
+ "announcement.announcement": "Annonce",
"autosuggest_hashtag.per_week": "{count} par semaine",
- "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci, la prochaine fois",
+ "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois",
"bundle_column_error.body": "Une erreur s’est produite lors du chargement de ce composant.",
"bundle_column_error.retry": "Réessayer",
"bundle_column_error.title": "Erreur réseau",
@@ -51,12 +60,13 @@
"bundle_modal_error.message": "Une erreur s’est produite lors du chargement de ce composant.",
"bundle_modal_error.retry": "Réessayer",
"column.blocks": "Comptes bloqués",
+ "column.bookmarks": "Marque-pages",
"column.community": "Fil public local",
- "column.direct": "Messages privés",
+ "column.direct": "Messages directs",
"column.directory": "Parcourir les profils",
- "column.domain_blocks": "Domaines cachés",
+ "column.domain_blocks": "Domaines bloqués",
"column.favourites": "Favoris",
- "column.follow_requests": "Demandes de suivi",
+ "column.follow_requests": "Demandes d'abonnement",
"column.home": "Accueil",
"column.lists": "Listes",
"column.mutes": "Comptes masqués",
@@ -64,17 +74,19 @@
"column.pins": "Pouets épinglés",
"column.public": "Fil public global",
"column_back_button.label": "Retour",
- "column_header.hide_settings": "Masquer les paramètres",
+ "column_header.hide_settings": "Cacher les paramètres",
"column_header.moveLeft_settings": "Déplacer la colonne vers la gauche",
"column_header.moveRight_settings": "Déplacer la colonne vers la droite",
"column_header.pin": "Épingler",
"column_header.show_settings": "Afficher les paramètres",
"column_header.unpin": "Désépingler",
"column_subheading.settings": "Paramètres",
+ "community.column_settings.local_only": "Local seulement",
"community.column_settings.media_only": "Média uniquement",
+ "community.column_settings.remote_only": "Distant seulement",
"compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé aux personnes mentionnées. Cependant, l’administration de votre instance et des instances réceptrices pourront inspecter ce message.",
- "compose_form.direct_message_warning_learn_more": "Plus d’informations",
- "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur \"non listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par hashtag.",
+ "compose_form.direct_message_warning_learn_more": "En savoir plus",
+ "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur « non listé ». Seuls les pouets avec une visibilité « publique » peuvent être recherchés par hashtag.",
"compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.",
"compose_form.lock_disclaimer.lock": "verrouillé",
"compose_form.placeholder": "Qu’avez-vous en tête ?",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Durée du sondage",
"compose_form.poll.option_placeholder": "Choix {number}",
"compose_form.poll.remove_option": "Supprimer ce choix",
+ "compose_form.poll.switch_to_multiple": "Changer le sondage pour autoriser plusieurs choix",
+ "compose_form.poll.switch_to_single": "Changer le sondage pour autoriser qu'un seul choix",
"compose_form.publish": "Pouet",
"compose_form.publish_loud": "{publish} !",
"compose_form.sensitive.hide": "Marquer le média comme sensible",
@@ -89,40 +103,40 @@
"compose_form.sensitive.unmarked": "Le média n’est pas marqué comme sensible",
"compose_form.spoiler.marked": "Le texte est caché derrière un avertissement",
"compose_form.spoiler.unmarked": "Le texte n’est pas caché",
- "compose_form.spoiler_placeholder": "Écrivez ici votre avertissement",
+ "compose_form.spoiler_placeholder": "Écrivez votre avertissement ici",
"confirmation_modal.cancel": "Annuler",
"confirmations.block.block_and_report": "Bloquer et signaler",
"confirmations.block.confirm": "Bloquer",
- "confirmations.block.message": "Confirmez-vous le blocage de {name} ?",
+ "confirmations.block.message": "Voulez-vous vraiment bloquer {name} ?",
"confirmations.delete.confirm": "Supprimer",
"confirmations.delete.message": "Confirmez-vous la suppression de ce pouet ?",
"confirmations.delete_list.confirm": "Supprimer",
- "confirmations.delete_list.message": "Êtes-vous sûr·e de vouloir supprimer définitivement cette liste ?",
- "confirmations.domain_block.confirm": "Masquer le domaine entier",
- "confirmations.domain_block.message": "Êtes-vous vraiment, vraiment sûr⋅e de vouloir bloquer {domain} en entier ? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.",
- "confirmations.logout.confirm": "Déconnexion",
- "confirmations.logout.message": "Êtes-vous sûr de vouloir vous déconnecter ?",
+ "confirmations.delete_list.message": "Voulez-vous vraiment supprimer définitivement cette liste ?",
+ "confirmations.domain_block.confirm": "Bloquer tout le domaine",
+ "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier ? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.",
+ "confirmations.logout.confirm": "Se déconnecter",
+ "confirmations.logout.message": "Voulez-vous vraiment vous déconnecter ?",
"confirmations.mute.confirm": "Masquer",
- "confirmations.mute.explanation": "Cela masquera leurs messages et les messages les mentionnant, mais cela leur permettra quand même de voir vos messages et vous suivre.",
- "confirmations.mute.message": "Êtes-vous sûr·e de vouloir masquer {name} ?",
- "confirmations.redraft.confirm": "Effacer et ré-écrire",
+ "confirmations.mute.explanation": "Cela masquera ses messages et les messages le ou la mentionnant, mais cela lui permettra quand même de voir vos messages et de vous suivre.",
+ "confirmations.mute.message": "Voulez-vous vraiment masquer {name} ?",
+ "confirmations.redraft.confirm": "Supprimer et ré-écrire",
"confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le ré-écrire ? Ses partages ainsi que ses mises en favori seront perdu·e·s et ses réponses seront orphelines.",
"confirmations.reply.confirm": "Répondre",
- "confirmations.reply.message": "Répondre maintenant écrasera le message que vous composez actuellement. Êtes-vous sûr de vouloir continuer ?",
+ "confirmations.reply.message": "Répondre maintenant écrasera le message que vous rédigez actuellement. Voulez-vous vraiment continuer ?",
"confirmations.unfollow.confirm": "Ne plus suivre",
- "confirmations.unfollow.message": "Voulez-vous arrêter de suivre {name} ?",
+ "confirmations.unfollow.message": "Voulez-vous vraiment arrêter de suivre {name} ?",
"conversation.delete": "Supprimer la conversation",
"conversation.mark_as_read": "Marquer comme lu",
"conversation.open": "Afficher la conversation",
"conversation.with": "Avec {names}",
"directory.federated": "Du fédiverse connu",
"directory.local": "De {domain} seulement",
- "directory.new_arrivals": "Nouveaux arrivants",
- "directory.recently_active": "Récemment actif",
+ "directory.new_arrivals": "Inscrit·e·s récemment",
+ "directory.recently_active": "Actif·ve·s récemment",
"embed.instructions": "Intégrez ce statut à votre site en copiant le code ci-dessous.",
"embed.preview": "Il apparaîtra comme cela :",
- "emoji_button.activity": "Activités",
- "emoji_button.custom": "Personnalisé",
+ "emoji_button.activity": "Activité",
+ "emoji_button.custom": "Personnalisés",
"emoji_button.flags": "Drapeaux",
"emoji_button.food": "Nourriture & Boisson",
"emoji_button.label": "Insérer un émoji",
@@ -131,13 +145,14 @@
"emoji_button.objects": "Objets",
"emoji_button.people": "Personnes",
"emoji_button.recent": "Fréquemment utilisés",
- "emoji_button.search": "Recherche…",
+ "emoji_button.search": "Recherche...",
"emoji_button.search_results": "Résultats de la recherche",
"emoji_button.symbols": "Symboles",
"emoji_button.travel": "Lieux & Voyages",
"empty_column.account_timeline": "Aucun pouet ici !",
"empty_column.account_unavailable": "Profil non disponible",
"empty_column.blocks": "Vous n’avez bloqué aucun·e utilisateur·rice pour le moment.",
+ "empty_column.bookmarked_statuses": "Vous n'avez pas de pouets enregistrés comme marque-pages pour le moment. Lorsque vous en ajouterez un, il apparaîtra ici.",
"empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !",
"empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.",
"empty_column.domain_blocks": "Il n’y a aucun domaine caché pour le moment.",
@@ -149,35 +164,38 @@
"empty_column.home.public_timeline": "le fil public",
"empty_column.list": "Il n’y a rien dans cette liste pour l’instant. Dès que des personnes de cette liste publieront de nouveaux statuts, ils apparaîtront ici.",
"empty_column.lists": "Vous n’avez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.",
- "empty_column.mutes": "Vous n’avez pas encore mis d’utilisateur·rice·s en silence.",
+ "empty_column.mutes": "Vous n’avez masqué aucun·e utilisateur·rice pour le moment.",
"empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres personnes pour débuter la conversation.",
- "empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres instances pour le remplir",
- "error.unexpected_crash.explanation": "En raison d’un bug dans notre code ou d’un problème de compatibilité avec le navigateur, cette page n’a pas pu être affichée correctement.",
+ "empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres serveurs pour remplir le fil public",
+ "error.unexpected_crash.explanation": "En raison d’un bug dans notre code ou d’un problème de compatibilité avec votre navigateur, cette page n’a pas pu être affichée correctement.",
"error.unexpected_crash.next_steps": "Essayez de rafraîchir la page. Si cela n’aide pas, vous pouvez toujours utiliser Mastodon via un autre navigateur ou une application native.",
- "errors.unexpected_crash.copy_stacktrace": "Copier la trace-pile dans le presse-papier",
- "errors.unexpected_crash.report_issue": "Signaler un bogue",
+ "errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier",
+ "errors.unexpected_crash.report_issue": "Signaler le problème",
"follow_request.authorize": "Accepter",
"follow_request.reject": "Rejeter",
+ "follow_requests.unlocked_explanation": "Même si votre compte n’est pas verrouillé, l’équipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.",
"getting_started.developers": "Développeur·euse·s",
"getting_started.directory": "Annuaire des profils",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Pour commencer",
"getting_started.invite": "Inviter des gens",
- "getting_started.open_source_notice": "Mastodon est un logiciel libre. Vous pouvez contribuer et envoyer vos commentaires et rapports de bogues via {github} sur GitHub.",
+ "getting_started.open_source_notice": "Mastodon est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via {github} sur GitHub.",
"getting_started.security": "Sécurité",
"getting_started.terms": "Conditions d’utilisation",
"hashtag.column_header.tag_mode.all": "et {additional}",
"hashtag.column_header.tag_mode.any": "ou {additional}",
"hashtag.column_header.tag_mode.none": "sans {additional}",
"hashtag.column_settings.select.no_options_message": "Aucune suggestion trouvée",
- "hashtag.column_settings.select.placeholder": "Ajouter des mots-clés…",
+ "hashtag.column_settings.select.placeholder": "Entrer des hashtags…",
"hashtag.column_settings.tag_mode.all": "Tous ces éléments",
"hashtag.column_settings.tag_mode.any": "Au moins un de ces éléments",
"hashtag.column_settings.tag_mode.none": "Aucun de ces éléments",
- "hashtag.column_settings.tag_toggle": "Inclure des mots-clés additionnels dans cette colonne",
- "home.column_settings.basic": "Base",
+ "hashtag.column_settings.tag_toggle": "Inclure des hashtags additionnels pour cette colonne",
+ "home.column_settings.basic": "Basique",
"home.column_settings.show_reblogs": "Afficher les partages",
"home.column_settings.show_replies": "Afficher les réponses",
+ "home.hide_announcements": "Masquer les annonces",
+ "home.show_announcements": "Afficher les annonces",
"intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
"intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -190,75 +208,78 @@
"introduction.federation.local.text": "Les messages publics de personnes se trouvant sur le même serveur que vous apparaîtront sur le fil public local.",
"introduction.interactions.action": "Finir le tutoriel !",
"introduction.interactions.favourite.headline": "Favoris",
- "introduction.interactions.favourite.text": "Vous pouvez garder un pouet pour plus tard et faire savoir à son auteur·ice que vous l’avez aimé, en le favorisant.",
- "introduction.interactions.reblog.headline": "Repartager",
+ "introduction.interactions.favourite.text": "Vous pouvez garder un pouet pour plus tard et faire savoir à son auteur·ice que vous l’avez aimé, en l'ajoutant aux favoris.",
+ "introduction.interactions.reblog.headline": "Partager",
"introduction.interactions.reblog.text": "Vous pouvez partager les pouets d'autres personnes avec vos abonné·e·s en les repartageant.",
"introduction.interactions.reply.headline": "Répondre",
"introduction.interactions.reply.text": "Vous pouvez répondre aux pouets d'autres personnes et à vos propres pouets, ce qui les enchaînera dans une conversation.",
"introduction.welcome.action": "Allons-y !",
"introduction.welcome.headline": "Premiers pas",
- "introduction.welcome.text": "Bienvenue dans le fediverse ! Dans quelques instants, vous pourrez diffuser des messages et parler à vos amis sur une grande variété de serveurs. Mais ce serveur, {domain}, est spécial - il héberge votre profil, alors souvenez-vous de son nom.",
- "keyboard_shortcuts.back": "pour revenir en arrière",
- "keyboard_shortcuts.blocked": "pour ouvrir une liste d’utilisateur·rice·s bloqué·e·s",
- "keyboard_shortcuts.boost": "pour partager",
+ "introduction.welcome.text": "Bienvenue dans le fédiverse ! Dans quelques instants, vous pourrez diffuser des messages et parler à vos ami·e·s sur une grande variété de serveurs. Mais ce serveur, {domain}, est spécial - il héberge votre profil, alors souvenez-vous de son nom.",
+ "keyboard_shortcuts.back": "revenir en arrière",
+ "keyboard_shortcuts.blocked": "ouvrir la liste des comptes bloqués",
+ "keyboard_shortcuts.boost": "partager",
"keyboard_shortcuts.column": "pour focaliser un statut dans l’une des colonnes",
- "keyboard_shortcuts.compose": "pour focaliser la zone de rédaction",
+ "keyboard_shortcuts.compose": "cibler la zone de rédaction",
"keyboard_shortcuts.description": "Description",
- "keyboard_shortcuts.direct": "pour ouvrir une colonne des messages directs",
- "keyboard_shortcuts.down": "pour descendre dans la liste",
+ "keyboard_shortcuts.direct": "ouvrir la colonne des messages directs",
+ "keyboard_shortcuts.down": "descendre dans la liste",
"keyboard_shortcuts.enter": "pour ouvrir le statut",
- "keyboard_shortcuts.favourite": "pour ajouter aux favoris",
- "keyboard_shortcuts.favourites": "pour ouvrir une liste de favoris",
- "keyboard_shortcuts.federated": "pour ouvrir le fil public global",
+ "keyboard_shortcuts.favourite": "ajouter aux favoris",
+ "keyboard_shortcuts.favourites": "ouvrir la liste des favoris",
+ "keyboard_shortcuts.federated": "ouvrir le fil public global",
"keyboard_shortcuts.heading": "Raccourcis clavier",
- "keyboard_shortcuts.home": "pour ouvrir l’accueil",
- "keyboard_shortcuts.hotkey": "Raccourci",
- "keyboard_shortcuts.legend": "pour afficher cette légende",
- "keyboard_shortcuts.local": "pour ouvrir le fil public local",
- "keyboard_shortcuts.mention": "pour mentionner l’auteur·rice",
- "keyboard_shortcuts.muted": "pour ouvrir la liste des utilisateur·rice·s rendu·e·s muet·te·s",
- "keyboard_shortcuts.my_profile": "pour ouvrir votre profil",
- "keyboard_shortcuts.notifications": "pour ouvrir votre colonne de notifications",
- "keyboard_shortcuts.pinned": "pour ouvrir une liste des pouets épinglés",
- "keyboard_shortcuts.profile": "pour ouvrir le profil de l’auteur·rice",
- "keyboard_shortcuts.reply": "pour répondre",
- "keyboard_shortcuts.requests": "pour ouvrir la liste de demandes de suivi",
- "keyboard_shortcuts.search": "pour cibler la recherche",
- "keyboard_shortcuts.start": "pour ouvrir la colonne \"pour commencer\"",
- "keyboard_shortcuts.toggle_hidden": "pour afficher/cacher un texte derrière CW",
- "keyboard_shortcuts.toggle_sensitivity": "pour afficher/cacher les médias",
- "keyboard_shortcuts.toot": "pour démarrer un tout nouveau pouet",
- "keyboard_shortcuts.unfocus": "pour quitter la zone de composition/recherche",
- "keyboard_shortcuts.up": "pour remonter dans la liste",
+ "keyboard_shortcuts.home": "ouvrir le fil d’accueil",
+ "keyboard_shortcuts.hotkey": "Raccourci clavier",
+ "keyboard_shortcuts.legend": "afficher cet aide-mémoire",
+ "keyboard_shortcuts.local": "ouvrir le fil public local",
+ "keyboard_shortcuts.mention": "mentionner l’auteur·rice",
+ "keyboard_shortcuts.muted": "ouvrir la liste des comptes masqués",
+ "keyboard_shortcuts.my_profile": "ouvrir votre profil",
+ "keyboard_shortcuts.notifications": "ouvrir la colonne de notifications",
+ "keyboard_shortcuts.open_media": "ouvrir le média",
+ "keyboard_shortcuts.pinned": "ouvrir la liste des pouets épinglés",
+ "keyboard_shortcuts.profile": "ouvrir le profil de l’auteur·rice",
+ "keyboard_shortcuts.reply": "répondre",
+ "keyboard_shortcuts.requests": "ouvrir la liste de demandes d’abonnement",
+ "keyboard_shortcuts.search": "cibler la zone de recherche",
+ "keyboard_shortcuts.spoilers": "pour afficher/masquer le champ CW",
+ "keyboard_shortcuts.start": "ouvrir la colonne « Pour commencer »",
+ "keyboard_shortcuts.toggle_hidden": "déplier/replier le texte derrière un CW",
+ "keyboard_shortcuts.toggle_sensitivity": "afficher/cacher les médias",
+ "keyboard_shortcuts.toot": "démarrer un tout nouveau pouet",
+ "keyboard_shortcuts.unfocus": "quitter la zone de rédaction/recherche",
+ "keyboard_shortcuts.up": "remonter dans la liste",
"lightbox.close": "Fermer",
"lightbox.next": "Suivant",
"lightbox.previous": "Précédent",
"lightbox.view_context": "Voir le contexte",
"lists.account.add": "Ajouter à la liste",
"lists.account.remove": "Supprimer de la liste",
- "lists.delete": "Effacer la liste",
+ "lists.delete": "Supprimer la liste",
"lists.edit": "Éditer la liste",
- "lists.edit.submit": "Changer le titre",
+ "lists.edit.submit": "Modifier le titre",
"lists.new.create": "Ajouter une liste",
"lists.new.title_placeholder": "Titre de la nouvelle liste",
"lists.search": "Rechercher parmi les gens que vous suivez",
"lists.subheading": "Vos listes",
"load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
"loading_indicator.label": "Chargement…",
- "media_gallery.toggle_visible": "Modifier la visibilité",
+ "media_gallery.toggle_visible": "Intervertir la visibilité",
"missing_indicator.label": "Non trouvé",
"missing_indicator.sublabel": "Ressource introuvable",
"mute_modal.hide_notifications": "Masquer les notifications de cette personne ?",
"navigation_bar.apps": "Applications mobiles",
"navigation_bar.blocks": "Comptes bloqués",
+ "navigation_bar.bookmarks": "Marque-pages",
"navigation_bar.community_timeline": "Fil public local",
- "navigation_bar.compose": "Rédiger un nouveau toot",
+ "navigation_bar.compose": "Rédiger un nouveau pouet",
"navigation_bar.direct": "Messages directs",
"navigation_bar.discover": "Découvrir",
- "navigation_bar.domain_blocks": "Domaines cachés",
+ "navigation_bar.domain_blocks": "Domaines bloqués",
"navigation_bar.edit_profile": "Modifier le profil",
"navigation_bar.favourites": "Favoris",
- "navigation_bar.filters": "Mots silenciés",
+ "navigation_bar.filters": "Mots masqués",
"navigation_bar.follow_requests": "Demandes de suivi",
"navigation_bar.follows_and_followers": "Abonnements et abonné⋅e·s",
"navigation_bar.info": "À propos de ce serveur",
@@ -273,27 +294,30 @@
"navigation_bar.security": "Sécurité",
"notification.favourite": "{name} a ajouté à ses favoris :",
"notification.follow": "{name} vous suit",
- "notification.mention": "{name} vous a mentionné :",
+ "notification.follow_request": "{name} a demandé à vous suivre",
+ "notification.mention": "{name} vous a mentionné·e :",
+ "notification.own_poll": "Votre sondage est terminé",
"notification.poll": "Un sondage auquel vous avez participé vient de se terminer",
- "notification.reblog": "{name} a partagé votre statut :",
- "notifications.clear": "Nettoyer les notifications",
- "notifications.clear_confirmation": "Voulez-vous vraiment supprimer toutes vos notifications ?",
- "notifications.column_settings.alert": "Notifications locales",
+ "notification.reblog": "{name} a partagé votre statut",
+ "notifications.clear": "Effacer les notifications",
+ "notifications.clear_confirmation": "Voulez-vous vraiment effacer toutes vos notifications ?",
+ "notifications.column_settings.alert": "Notifications du navigateur",
"notifications.column_settings.favourite": "Favoris :",
"notifications.column_settings.filter_bar.advanced": "Afficher toutes les catégories",
"notifications.column_settings.filter_bar.category": "Barre de filtrage rapide",
"notifications.column_settings.filter_bar.show": "Afficher",
- "notifications.column_settings.follow": "Nouveaux⋅elles abonné⋅e·s :",
+ "notifications.column_settings.follow": "Nouveaux·elles abonné·e·s :",
+ "notifications.column_settings.follow_request": "Nouvelles demandes d’abonnement :",
"notifications.column_settings.mention": "Mentions :",
- "notifications.column_settings.poll": "Résultats du sondage :",
- "notifications.column_settings.push": "Notifications",
+ "notifications.column_settings.poll": "Résultats des sondage :",
+ "notifications.column_settings.push": "Notifications push",
"notifications.column_settings.reblog": "Partages :",
"notifications.column_settings.show": "Afficher dans la colonne",
"notifications.column_settings.sound": "Émettre un son",
"notifications.filter.all": "Tout",
- "notifications.filter.boosts": "Repartages",
+ "notifications.filter.boosts": "Partages",
"notifications.filter.favourites": "Favoris",
- "notifications.filter.follows": "Abonné·e·s",
+ "notifications.filter.follows": "Abonnés",
"notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Résultats des sondages",
"notifications.group": "{count} notifications",
@@ -306,36 +330,37 @@
"poll_button.add_poll": "Ajouter un sondage",
"poll_button.remove_poll": "Supprimer le sondage",
"privacy.change": "Ajuster la confidentialité du message",
- "privacy.direct.long": "N’envoyer qu’aux personnes mentionnées",
+ "privacy.direct.long": "Visible uniquement par les comptes mentionnés",
"privacy.direct.short": "Direct",
- "privacy.private.long": "Seul⋅e⋅s vos abonné⋅e⋅s verront vos statuts",
- "privacy.private.short": "Abonné⋅e⋅s uniquement",
- "privacy.public.long": "Afficher dans les fils publics",
+ "privacy.private.long": "Visible uniquement par vos abonné·e·s",
+ "privacy.private.short": "Abonné·e·s uniquement",
+ "privacy.public.long": "Visible par tou·te·s, affiché dans les fils publics",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Ne pas afficher dans les fils publics",
+ "privacy.unlisted.long": "Visible par tou·te·s, mais pas dans les fils publics",
"privacy.unlisted.short": "Non listé",
"refresh": "Actualiser",
"regeneration_indicator.label": "Chargement…",
- "regeneration_indicator.sublabel": "Le flux de votre page principale est en cours de préparation !",
+ "regeneration_indicator.sublabel": "Votre fil principal est en cours de préparation !",
"relative_time.days": "{number} j",
"relative_time.hours": "{number} h",
"relative_time.just_now": "à l’instant",
"relative_time.minutes": "{number} min",
"relative_time.seconds": "{number} s",
+ "relative_time.today": "aujourd’hui",
"reply_indicator.cancel": "Annuler",
"report.forward": "Transférer à {target}",
- "report.forward_hint": "Le compte provient d’un autre serveur. Envoyez également une copie anonyme du rapport ?",
+ "report.forward_hint": "Le compte provient d’un autre serveur. Envoyer également une copie anonyme du rapport ?",
"report.hint": "Le rapport sera envoyé aux modérateur·rice·s de votre instance. Vous pouvez expliquer pourquoi vous signalez le compte ci-dessous :",
"report.placeholder": "Commentaires additionnels",
"report.submit": "Envoyer",
- "report.target": "Signalement",
+ "report.target": "Signalement de {target}",
"search.placeholder": "Rechercher",
"search_popout.search_format": "Recherche avancée",
- "search_popout.tips.full_text": "Les textes simples retournent les pouets que vous avez écris, mis en favori, épinglés, ou ayant été mentionnés, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondant.",
+ "search_popout.tips.full_text": "Un texte normal retourne les pouets que vous avez écris, mis en favori, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondant.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "statuts",
"search_popout.tips.text": "Un texte simple renvoie les noms affichés, les identifiants et les hashtags correspondants",
- "search_popout.tips.user": "utilisateur⋅ice",
+ "search_popout.tips.user": "utilisateur·ice",
"search_results.accounts": "Comptes",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Pouets",
@@ -344,10 +369,11 @@
"status.admin_account": "Ouvrir l’interface de modération pour @{name}",
"status.admin_status": "Ouvrir ce statut dans l’interface de modération",
"status.block": "Bloquer @{name}",
- "status.cancel_reblog_private": "Dé-booster",
- "status.cannot_reblog": "Cette publication ne peut être boostée",
+ "status.bookmark": "Ajouter aux marque-pages",
+ "status.cancel_reblog_private": "Annuler le partage",
+ "status.cannot_reblog": "Ce pouet ne peut pas être partagé",
"status.copy": "Copier le lien vers le pouet",
- "status.delete": "Effacer",
+ "status.delete": "Supprimer",
"status.detailed_status": "Vue détaillée de la conversation",
"status.direct": "Envoyer un message direct à @{name}",
"status.embed": "Intégrer",
@@ -364,10 +390,11 @@
"status.pinned": "Pouet épinglé",
"status.read_more": "En savoir plus",
"status.reblog": "Partager",
- "status.reblog_private": "Booster vers l’audience originale",
- "status.reblogged_by": "{name} a partagé :",
+ "status.reblog_private": "Partager à l’audience originale",
+ "status.reblogged_by": "{name} a partagé",
"status.reblogs.empty": "Personne n’a encore partagé ce pouet. Lorsque quelqu’un le fera, il apparaîtra ici.",
- "status.redraft": "Effacer et ré-écrire",
+ "status.redraft": "Supprimer et ré-écrire",
+ "status.remove_bookmark": "Retirer des marque-pages",
"status.reply": "Répondre",
"status.replyAll": "Répondre au fil",
"status.report": "Signaler @{name}",
@@ -377,12 +404,12 @@
"status.show_less_all": "Tout replier",
"status.show_more": "Déplier",
"status.show_more_all": "Tout déplier",
- "status.show_thread": "Lire le fil",
+ "status.show_thread": "Montrer le fil",
"status.uncached_media_warning": "Indisponible",
"status.unmute_conversation": "Ne plus masquer la conversation",
"status.unpin": "Retirer du profil",
"suggestions.dismiss": "Rejeter la suggestion",
- "suggestions.header": "Vous pourriez être intéressé par…",
+ "suggestions.header": "Vous pourriez être intéressé·e par…",
"tabs_bar.federated_timeline": "Fil public global",
"tabs_bar.home": "Accueil",
"tabs_bar.local_timeline": "Fil public local",
@@ -393,16 +420,22 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} restantes",
"time_remaining.moments": "Encore quelques instants",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} restantes",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {personne} other {personnes}} discutent",
+ "timeline_hint.remote_resource_not_displayed": "{resource} des autres serveurs ne sont pas affichés.",
+ "timeline_hint.resources.followers": "Les abonnés",
+ "timeline_hint.resources.follows": "Les abonnements",
+ "timeline_hint.resources.statuses": "Les anciens pouets",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {personne discute} other {personnes discutent}}",
"trends.trending_now": "Tendance en ce moment",
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
"upload_area.title": "Glissez et déposez pour envoyer",
"upload_button.label": "Joindre un média ({formats})",
"upload_error.limit": "Taille maximale d'envoi de fichier dépassée.",
"upload_error.poll": "L’envoi de fichiers n’est pas autorisé avec les sondages.",
+ "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition",
"upload_form.description": "Décrire pour les malvoyant·e·s",
"upload_form.edit": "Modifier",
"upload_form.undo": "Supprimer",
+ "upload_form.video_description": "Décrire pour les personnes ayant des problèmes d’audition ou de vision",
"upload_modal.analyzing_picture": "Analyse de l’image en cours…",
"upload_modal.apply": "Appliquer",
"upload_modal.description_placeholder": "Buvez de ce whisky que le patron juge fameux",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Aperçu ({ratio})",
"upload_progress.label": "Envoi en cours…",
"video.close": "Fermer la vidéo",
+ "video.download": "Télécharger le fichier",
"video.exit_fullscreen": "Quitter le plein écran",
"video.expand": "Agrandir la vidéo",
"video.fullscreen": "Plein écran",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 2dd0dbbad..e893095b4 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
+ "account.badges.group": "Group",
"account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct message @{name}",
"account.domain_blocked": "Domain hidden",
@@ -38,10 +42,15 @@
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Blocked users",
+ "column.bookmarks": "Bookmarks",
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.settings": "Settings",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -245,12 +265,13 @@
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "media_gallery.toggle_visible": "Hide media",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
@@ -322,6 +346,7 @@
"relative_time.just_now": "now",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Cancel",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Add media ({formats})",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
"upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading...",
"video.close": "Close video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 0125754b1..c29488b89 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -1,27 +1,31 @@
{
- "account.add_or_remove_from_list": "Engadir ou Eliminar das listas",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Engadir ou eliminar das listaxes",
"account.badges.bot": "Bot",
+ "account.badges.group": "Grupo",
"account.block": "Bloquear @{name}",
- "account.block_domain": "Ocultar calquer contido de {domain}",
+ "account.block_domain": "Agochar todo de {domain}",
"account.blocked": "Bloqueada",
- "account.cancel_follow_request": "Cancelar petición de seguemento",
+ "account.browse_more_on_origin_server": "Busca máis no perfil orixinal",
+ "account.cancel_follow_request": "Desbotar solicitude de seguimento",
"account.direct": "Mensaxe directa @{name}",
"account.domain_blocked": "Dominio agochado",
"account.edit_profile": "Editar perfil",
- "account.endorse": "Mostrado no perfil",
+ "account.endorse": "Amosar no perfil",
"account.follow": "Seguir",
"account.followers": "Seguidoras",
- "account.followers.empty": "Ninguén está a seguir esta usuaria por agora.",
+ "account.followers.empty": "Aínda ninguén segue esta usuaria.",
"account.follows": "Seguindo",
"account.follows.empty": "Esta usuaria aínda non segue a ninguén.",
"account.follows_you": "Séguete",
- "account.hide_reblogs": "Ocultar repeticións de @{name}",
- "account.last_status": "Último activo",
- "account.link_verified_on": "A propiedade de esta ligazón foi comprobada en {date}",
- "account.locked_info": "O estado da intimidade de esta conta estableceuse en pechado. A persoa dona da conta revisa quen pode seguila.",
- "account.media": "Medios",
+ "account.hide_reblogs": "Agochar repeticións de @{name}",
+ "account.last_status": "Última actividade",
+ "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}",
+ "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.",
+ "account.media": "Multimedia",
"account.mention": "Mencionar @{name}",
- "account.moved_to": "{name} marchou a:",
+ "account.moved_to": "{name} mudouse a:",
"account.mute": "Acalar @{name}",
"account.mute_notifications": "Acalar as notificacións de @{name}",
"account.muted": "Acalada",
@@ -29,395 +33,425 @@
"account.posts": "Toots",
"account.posts_with_replies": "Toots e respostas",
"account.report": "Informar sobre @{name}",
- "account.requested": "Agardando aceptación. Pulse para cancelar a solicitude de seguimento",
+ "account.requested": "Agardando aprovación. Preme para desbotar a solicitude de seguimento",
"account.share": "Compartir o perfil de @{name}",
- "account.show_reblogs": "Mostrar repeticións de @{name}",
+ "account.show_reblogs": "Amosar compartidos de @{name}",
"account.unblock": "Desbloquear @{name}",
- "account.unblock_domain": "Non ocultar {domain}",
- "account.unendorse": "Non mostrar no perfil",
- "account.unfollow": "Non seguir",
- "account.unmute": "Non acalar @{name}",
- "account.unmute_notifications": "Desbloquear as notificacións de @{name}",
- "alert.rate_limited.message": "Por favor inténteo tras {retry_time, time, medium}.",
- "alert.rate_limited.title": "Taxa limitada",
- "alert.unexpected.message": "Aconteceu un fallo non agardado.",
- "alert.unexpected.title": "Vaia!",
+ "account.unblock_domain": "Amosar {domain}",
+ "account.unendorse": "Non amosar no perfil",
+ "account.unfollow": "Deixar de seguir",
+ "account.unmute": "Deixar de silenciar a @{name}",
+ "account.unmute_notifications": "Deixar de silenciar as notificacións de @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Téntao novamente após {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Límite de intentos",
+ "alert.unexpected.message": "Ocorreu un erro non agardado.",
+ "alert.unexpected.title": "Vaites!",
+ "announcement.announcement": "Anuncio",
"autosuggest_hashtag.per_week": "{count} por semana",
- "boost_modal.combo": "Pulse {combo} para saltar esto a próxima vez",
- "bundle_column_error.body": "Houbo un fallo mentras se cargaba este compoñente.",
- "bundle_column_error.retry": "Inténteo de novo",
+ "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez",
+ "bundle_column_error.body": "Ocorreu un erro ó cargar este compoñente.",
+ "bundle_column_error.retry": "Téntao de novo",
"bundle_column_error.title": "Fallo na rede",
"bundle_modal_error.close": "Pechar",
- "bundle_modal_error.message": "Algo fallou mentras se cargaba este compoñente.",
- "bundle_modal_error.retry": "Inténteo de novo",
+ "bundle_modal_error.message": "Ocorreu un erro ó cargar este compoñente.",
+ "bundle_modal_error.retry": "Téntao de novo",
"column.blocks": "Usuarias bloqueadas",
- "column.community": "Liña temporal local",
+ "column.bookmarks": "Marcadores",
+ "column.community": "Cronoloxía local",
"column.direct": "Mensaxes directas",
- "column.directory": "Ver perfiles",
+ "column.directory": "Procurar perfís",
"column.domain_blocks": "Dominios agochados",
- "column.favourites": "Favoritas",
+ "column.favourites": "Favoritos",
"column.follow_requests": "Peticións de seguimento",
"column.home": "Inicio",
- "column.lists": "Listas",
+ "column.lists": "Listaxes",
"column.mutes": "Usuarias acaladas",
"column.notifications": "Notificacións",
- "column.pins": "Mensaxes fixadas",
- "column.public": "Liña temporal federada",
- "column_back_button.label": "Atrás",
+ "column.pins": "Toots fixados",
+ "column.public": "Cronoloxía federada",
+ "column_back_button.label": "Voltar",
"column_header.hide_settings": "Agochar axustes",
- "column_header.moveLeft_settings": "Mover a columna hacia a esquerda",
- "column_header.moveRight_settings": "Mover a columna hacia a dereita",
+ "column_header.moveLeft_settings": "Mover columna cara a esquerda",
+ "column_header.moveRight_settings": "Mover columna cara a dereita",
"column_header.pin": "Fixar",
- "column_header.show_settings": "Mostras axustes",
- "column_header.unpin": "Soltar",
+ "column_header.show_settings": "Amosar axustes",
+ "column_header.unpin": "Desapegar",
"column_subheading.settings": "Axustes",
- "community.column_settings.media_only": "Só medios",
- "compose_form.direct_message_warning": "Este toot enviarase só as usuarias mencionadas. Porén, a súa proveedora de internet e calquera das instancias receptoras poderían examinar esta mensaxe.",
+ "community.column_settings.local_only": "Só local",
+ "community.column_settings.media_only": "Só multimedia",
+ "community.column_settings.remote_only": "Só remoto",
+ "compose_form.direct_message_warning": "Este toot só será enviado ás usuarias mencionadas.",
"compose_form.direct_message_warning_learn_more": "Coñecer máis",
- "compose_form.hashtag_warning": "Esta mensaxe non será listada baixo ningunha etiqueta xa que está marcada como non listada. Só os toots públicos poden buscarse por etiquetas.",
- "compose_form.lock_disclaimer": "A súa conta non está {locked}. Calquera pode seguila para ver as súas mensaxes só-para-seguidoras.",
- "compose_form.lock_disclaimer.lock": "bloqueado",
+ "compose_form.hashtag_warning": "Este toot non aparecerá baixo ningún cancelo (hashtag) porque non está listado. Só se poden procurar toots públicos por cancelos.",
+ "compose_form.lock_disclaimer": "A túa conta non está {locked}. Todas poden seguirte para ollar os teus toots só para seguidoras.",
+ "compose_form.lock_disclaimer.lock": "bloqueada",
"compose_form.placeholder": "Qué contas?",
"compose_form.poll.add_option": "Engadir unha opción",
- "compose_form.poll.duration": "Duración da sondaxe",
+ "compose_form.poll.duration": "Duración da enquisa",
"compose_form.poll.option_placeholder": "Opción {number}",
"compose_form.poll.remove_option": "Eliminar esta opción",
+ "compose_form.poll.switch_to_multiple": "Mudar a enquisa para permitir múltiples escollas",
+ "compose_form.poll.switch_to_single": "Mudar a enquisa para permitir unha soa escolla",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Marcar medios como sensibles",
- "compose_form.sensitive.marked": "Medios marcados como sensibles",
- "compose_form.sensitive.unmarked": "Os medios non están marcados como sensibles",
+ "compose_form.sensitive.hide": "Marcar coma contido multimedia sensíbel",
+ "compose_form.sensitive.marked": "Contido multimedia marcado coma sensíbel",
+ "compose_form.sensitive.unmarked": "Contido multimedia non marcado coma sensíbel",
"compose_form.spoiler.marked": "O texto está agochado tras un aviso",
"compose_form.spoiler.unmarked": "O texto non está agochado",
- "compose_form.spoiler_placeholder": "Escriba o aviso aquí",
- "confirmation_modal.cancel": "Cancelar",
- "confirmations.block.block_and_report": "Bloquear e Informar",
+ "compose_form.spoiler_placeholder": "Escribe o teu aviso aquí",
+ "confirmation_modal.cancel": "Desbotar",
+ "confirmations.block.block_and_report": "Bloquear e denunciar",
"confirmations.block.confirm": "Bloquear",
- "confirmations.block.message": "Está segura de querer bloquear a {name}?",
- "confirmations.delete.confirm": "Borrar",
- "confirmations.delete.message": "Está segura de que quere eliminar este estado?",
+ "confirmations.block.message": "Tes a certeza de querer bloquear a {name}?",
+ "confirmations.delete.confirm": "Eliminar",
+ "confirmations.delete.message": "Tes a certeza de querer eliminar este estado?",
"confirmations.delete_list.confirm": "Eliminar",
- "confirmations.delete_list.message": "Estás seguro de que queres eliminar permanentemente esta lista?",
- "confirmations.domain_block.confirm": "Agochar un dominio completo",
- "confirmations.domain_block.message": "Realmente está segura de que quere bloquear por completo o dominio {domain}? Normalmente é suficiente, e preferible, bloquear de xeito selectivo varios elementos. Non verá contidos de ese dominio en ningunha liña temporal ou nas notificacións. As súas seguidoras en ese dominio serán eliminadas.",
- "confirmations.logout.confirm": "Desconectar",
- "confirmations.logout.message": "Seguro que desexa desconectar?",
+ "confirmations.delete_list.message": "Tes a certeza de querer eliminar de xeito permanente esta listaxe?",
+ "confirmations.domain_block.confirm": "Agochar dominio enteiro",
+ "confirmations.domain_block.message": "Tes a certeza de querer bloquear todo de {domain}? Na meirande parte dos casos uns bloqueos ou silenciados específicos son suficientes. Non verás máis o contido deste dominio en ningunha cronoloxía pública ou nas túas notificacións. As túas seguidoras deste dominio serán eliminadas.",
+ "confirmations.logout.confirm": "Pechar sesión",
+ "confirmations.logout.message": "Desexas pechar a sesión?",
"confirmations.mute.confirm": "Acalar",
- "confirmations.mute.explanation": "Esto ocultará as publicacións delas e as que as mencionen, pero poderán seguir lendo as túas publicacións e seguirte.",
- "confirmations.mute.message": "Está segura de que quere acalar a {name}?",
+ "confirmations.mute.explanation": "Isto agochará as publicacións delas ou nas que as mencionen, mais permitirá que vexan as túas publicacións e sexan seguidoras túas.",
+ "confirmations.mute.message": "Tes a certeza de querer acalar a {name}?",
"confirmations.redraft.confirm": "Eliminar e reescribir",
- "confirmations.redraft.message": "Está segura de querer eliminar este estado e voltalo a escribir? Perderá réplicas e favoritas, e as respostas ao orixinal quedarán orfas.",
- "confirmations.reply.confirm": "Respostar",
- "confirmations.reply.message": "Respostando agora sobreescribirá a mensaxe que está a compoñer. Segura de querer proceder?",
+ "confirmations.redraft.message": "Tes a certeza de querer eliminar este estado e reescribilo? Perderás os compartidos e favoritos, e as respostas á publicación orixinal ficarán orfas.",
+ "confirmations.reply.confirm": "Responder",
+ "confirmations.reply.message": "Responder agora sobrescribirá a mensaxe que estás a compor. Tes a certeza de que queres continuar?",
"confirmations.unfollow.confirm": "Deixar de seguir",
- "confirmations.unfollow.message": "Quere deixar de seguir a {name}?",
+ "confirmations.unfollow.message": "Desexas deixar de seguir a {name}?",
"conversation.delete": "Eliminar conversa",
"conversation.mark_as_read": "Marcar como lido",
"conversation.open": "Ver conversa",
"conversation.with": "Con {names}",
- "directory.federated": "Desde o fediverso coñecido",
- "directory.local": "Só desde {domain}",
- "directory.new_arrivals": "Novas achegas",
- "directory.recently_active": "Activo recentemente",
- "embed.instructions": "Copie o código inferior para incrustar no seu sitio web este estado.",
+ "directory.federated": "Do fediverso coñecido",
+ "directory.local": "Só de {domain}",
+ "directory.new_arrivals": "Recén chegadas",
+ "directory.recently_active": "Activas recentemente",
+ "embed.instructions": "Engade este estado ó teu sitio web copiando o seguinte código.",
"embed.preview": "Así será mostrado:",
"emoji_button.activity": "Actividade",
- "emoji_button.custom": "Persoalizado",
+ "emoji_button.custom": "Personalizado",
"emoji_button.flags": "Marcas",
"emoji_button.food": "Comida e Bebida",
- "emoji_button.label": "Insertar emoji",
+ "emoji_button.label": "Inserir emoticona",
"emoji_button.nature": "Natureza",
- "emoji_button.not_found": "Sen emojos!! (╯°□°)╯︵ ┻━┻",
- "emoji_button.objects": "Obxetos",
- "emoji_button.people": "Xente",
- "emoji_button.recent": "Utilizadas con frecuencia",
- "emoji_button.search": "Buscar...",
- "emoji_button.search_results": "Resultados da busca",
+ "emoji_button.not_found": "Non hai emoticonas!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Obxectos",
+ "emoji_button.people": "Persoas",
+ "emoji_button.recent": "Empregadas acotío",
+ "emoji_button.search": "Procurar...",
+ "emoji_button.search_results": "Resultados da procura",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viaxes e Lugares",
- "empty_column.account_timeline": "Sen toots por aquí!",
+ "empty_column.account_timeline": "Non hai toots aquí!",
"empty_column.account_unavailable": "Perfil non dispoñible",
- "empty_column.blocks": "Non bloqueou ningunha usuaria polo de agora.",
- "empty_column.community": "A liña temporal local está baldeira. Escriba algo de xeito público para que rule!",
- "empty_column.direct": "Aínda non ten mensaxes directas. Cando envíe ou reciba unha, aparecerá aquí.",
- "empty_column.domain_blocks": "Aínda non ocultou ningún dominio.",
- "empty_column.favourited_statuses": "Aínda non ten toots favoritos. Cando favoreza algún, aparecerá aquí.",
- "empty_column.favourites": "Ninguén favoreceu este toot polo momento. Cando o faga alguén, aparecerán aquí.",
- "empty_column.follow_requests": "Non ten peticións de seguimento. Cando reciba unha, mostrarase aquí.",
- "empty_column.hashtag": "Aínda non hai nada con esta etiqueta.",
- "empty_column.home": "A súa liña temporal de inicio está baldeira! Visite {public} ou utilice a busca para atopar outras usuarias.",
- "empty_column.home.public_timeline": "a liña temporal pública",
- "empty_column.list": "Aínda non hai nada en esta lista. Cando as usuarias incluídas na lista publiquen mensaxes, aparecerán aquí.",
- "empty_column.lists": "Aínda non ten listas. Cando cree unha, mostrarase aquí.",
- "empty_column.mutes": "Non acalou ningunha usuaria polo de agora.",
- "empty_column.notifications": "Aínda non ten notificacións. Interactúe con outras para iniciar unha conversa.",
- "empty_column.public": "Nada por aquí! Escriba algo de xeito público, ou siga manualmente usuarias de outros servidores para ir enchéndoa",
- "error.unexpected_crash.explanation": "Non se mostra correctamente a páxina debido a un fallo no código ou problema de compatibilidade do navegador.",
- "error.unexpected_crash.next_steps": "Intenta actualizar a páxina. Se esto non axuda podes tamén utilizar Mastodon en outro navegador ou app nativa.",
- "errors.unexpected_crash.copy_stacktrace": "Copiar trazas ao portaretallos",
- "errors.unexpected_crash.report_issue": "Informar de problema",
+ "empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.",
+ "empty_column.bookmarked_statuses": "Aínda non marcaches ningún toot. Cando o fagas, aparecerán aquí.",
+ "empty_column.community": "A cronoloxía local está baleira. Escribe algo de xeito público para espallalo!",
+ "empty_column.direct": "Aínda non tes mensaxes directas. Cando envíes ou recibas unha, amosarase aquí.",
+ "empty_column.domain_blocks": "Aínda non hai dominios agochados.",
+ "empty_column.favourited_statuses": "Aínda non tes toots favoritos. Cando che goste algún, aparecerá aquí.",
+ "empty_column.favourites": "A ninguén lle gostou este toot polo momento. Cando a alguén lle goste, aparecerá aquí.",
+ "empty_column.follow_requests": "Non tes peticións de seguimento. Cando recibas unha, amosarase aquí.",
+ "empty_column.hashtag": "Aínda non hai nada con este cancelo.",
+ "empty_column.home": "A túa cronoloxía inicial está baleira! Visita {public} ou emprega a procura para atopar outras usuarias.",
+ "empty_column.home.public_timeline": "a cronoloxía pública",
+ "empty_column.list": "Aínda non hai nada nesta listaxe. Cando os usuarios incluídas na listaxe publiquen mensaxes, amosaranse aquí.",
+ "empty_column.lists": "Aínda non tes listaxes. Cando crees unha, amosarase aquí.",
+ "empty_column.mutes": "Aínda non silenciaches a ningúnha usuaria.",
+ "empty_column.notifications": "Aínda non tes notificacións. Interactúa con outras para comezar unha conversa.",
+ "empty_column.public": "Nada por aquí! Escribe algo de xeito público, ou segue de xeito manual usuarias doutros servidores para ir enchéndoo",
+ "error.unexpected_crash.explanation": "Debido a un erro no noso código ou a unha compatilidade co teu navegador, esta páxina non pode ser amosada correctamente.",
+ "error.unexpected_crash.next_steps": "Tenta actualizar a páxina. Se esto non axuda podes tamén empregar Mastodon noutro navegador ou aplicación nativa.",
+ "errors.unexpected_crash.copy_stacktrace": "Copiar trazas (stacktrace) ó portapapeis",
+ "errors.unexpected_crash.report_issue": "Informar sobre un problema",
"follow_request.authorize": "Autorizar",
"follow_request.reject": "Rexeitar",
+ "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.",
"getting_started.developers": "Desenvolvedoras",
- "getting_started.directory": "Directorio do perfil",
+ "getting_started.directory": "Directorio local",
"getting_started.documentation": "Documentación",
- "getting_started.heading": "Comezando",
- "getting_started.invite": "Convide a xente",
- "getting_started.open_source_notice": "Mastodon é software de código aberto. Pode contribuír ou informar de fallos en GitHub en {github}.",
- "getting_started.security": "Seguridade",
+ "getting_started.heading": "Primeiros pasos",
+ "getting_started.invite": "Convidar persoas",
+ "getting_started.open_source_notice": "Mastodon é software de código aberto. Podes contribuír ou informar de fallos en GitHub en {github}.",
+ "getting_started.security": "Seguranza",
"getting_started.terms": "Termos do servizo",
"hashtag.column_header.tag_mode.all": "e {additional}",
"hashtag.column_header.tag_mode.any": "ou {additional}",
"hashtag.column_header.tag_mode.none": "sen {additional}",
- "hashtag.column_settings.select.no_options_message": "Non se atopan suxestións",
- "hashtag.column_settings.select.placeholder": "Introducir etiquetas…",
- "hashtag.column_settings.tag_mode.all": "Todos estos",
- "hashtag.column_settings.tag_mode.any": "Calquera de estos",
- "hashtag.column_settings.tag_mode.none": "Ningún de estos",
- "hashtag.column_settings.tag_toggle": "Incluír etiquetas adicionais para esta columna",
+ "hashtag.column_settings.select.no_options_message": "Non se atoparon suxestións",
+ "hashtag.column_settings.select.placeholder": "Inserir cancelos…",
+ "hashtag.column_settings.tag_mode.all": "Todos estes",
+ "hashtag.column_settings.tag_mode.any": "Calquera destes",
+ "hashtag.column_settings.tag_mode.none": "Ningún destes",
+ "hashtag.column_settings.tag_toggle": "Incluír cancelos adicionais para esta columna",
"home.column_settings.basic": "Básico",
- "home.column_settings.show_reblogs": "Mostrar repeticións",
- "home.column_settings.show_replies": "Mostrar respostas",
+ "home.column_settings.show_reblogs": "Amosar compartidos",
+ "home.column_settings.show_replies": "Amosar respostas",
+ "home.hide_announcements": "Agochar anuncios",
+ "home.show_announcements": "Amosar anuncios",
"intervals.full.days": "{number, plural,one {# día} other {# días}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
"introduction.federation.action": "Seguinte",
"introduction.federation.federated.headline": "Federado",
- "introduction.federation.federated.text": "Publicacións públicas desde outros servidores do fediverso aparecerán na liña temporal federada.",
+ "introduction.federation.federated.text": "Publicacións públicas doutros servidores do fediverso aparecerán na cronoloxía federada.",
"introduction.federation.home.headline": "Inicio",
- "introduction.federation.home.text": "Publicacións de xente que vostede segue aparecerán no TL de Inicio. Pode seguir a calquera en calquer servidor!",
+ "introduction.federation.home.text": "Publicacións de persoas que ti segues aparecerán na cronoloxía do inicio. Podes seguir calquera persoa en calquera servidor!",
"introduction.federation.local.headline": "Local",
- "introduction.federation.local.text": "Publicacións públicas de xente no seu mesmo servidor aparecerán na liña temporal local.",
+ "introduction.federation.local.text": "Publicacións públicas de persoas no teu mesmo servidor aparecerán na cronoloxía local.",
"introduction.interactions.action": "Rematar titorial!",
"introduction.interactions.favourite.headline": "Favorito",
- "introduction.interactions.favourite.text": "Pode gardar un toot para máis tarde, e facerlle saber a autora que lle gustou, dándolle a Favorito.",
- "introduction.interactions.reblog.headline": "Promocionar",
- "introduction.interactions.reblog.text": "Pode compartir os toots de outra xente coas súas seguidoras promocionándoos.",
- "introduction.interactions.reply.headline": "Respostar",
- "introduction.interactions.reply.text": "Pode respostar aos toots de outras persoas e aos seus propios, así quedarán encadeados nunha conversa.",
+ "introduction.interactions.favourite.text": "Podes gardar un toot para depois e facer saber ó autor que che gostou marcandoo coma favorito.",
+ "introduction.interactions.reblog.headline": "Promover",
+ "introduction.interactions.reblog.text": "Podes compartir os toots doutras persoas coas túas seguidoras.",
+ "introduction.interactions.reply.headline": "Responder",
+ "introduction.interactions.reply.text": "Podes responder ós toots doutras persoas e ós teus propios, así ficarán encadeados nunha conversa.",
"introduction.welcome.action": "Imos!",
"introduction.welcome.headline": "Primeiros pasos",
- "introduction.welcome.text": "Benvida ao fediverso! Nun intre poderá difundir mensaxes e falar cos seus amigos nun gran número de servidores. Pero este servidor (dominio) é especial—hospeda o seu perfil, así que lémbreo.",
- "keyboard_shortcuts.back": "voltar atrás",
+ "introduction.welcome.text": "Benvida ó fediverso! Nun intre poderás difundir mensaxes e falar coas túas amizades nun grande número de servidores. Mais este servidor, {domain}, é especial—hospeda o teu perfil, por iso lémbra o seu nome.",
+ "keyboard_shortcuts.back": "para voltar atrás",
"keyboard_shortcuts.blocked": "abrir lista de usuarias bloqueadas",
"keyboard_shortcuts.boost": "promover",
- "keyboard_shortcuts.column": "destacar un estado en unha das columnas",
- "keyboard_shortcuts.compose": "Foco no área de escritura",
+ "keyboard_shortcuts.column": "para destacar un estado nunha das columnas",
+ "keyboard_shortcuts.compose": "para destacar a área de escritura",
"keyboard_shortcuts.description": "Descrición",
- "keyboard_shortcuts.direct": "abrir columna de mensaxes directas",
- "keyboard_shortcuts.down": "ir hacia abaixo na lista",
- "keyboard_shortcuts.enter": "abrir estado",
- "keyboard_shortcuts.favourite": "marcar como favorito",
- "keyboard_shortcuts.favourites": "abrir lista de favoritos",
- "keyboard_shortcuts.federated": "abrir liña temporal federada",
+ "keyboard_shortcuts.direct": "para abrir a columna de mensaxes directas",
+ "keyboard_shortcuts.down": "para mover cara abaixo na listaxe",
+ "keyboard_shortcuts.enter": "para abrir estado",
+ "keyboard_shortcuts.favourite": "para engadir a favoritos",
+ "keyboard_shortcuts.favourites": "para abrir a listaxe dos favoritos",
+ "keyboard_shortcuts.federated": "para abrir a cronoloxía federada",
"keyboard_shortcuts.heading": "Atallos do teclado",
- "keyboard_shortcuts.home": "abrir liña temporal de inicio",
- "keyboard_shortcuts.hotkey": "Tecla de acceso directo",
- "keyboard_shortcuts.legend": "para mostrar esta lenda",
- "keyboard_shortcuts.local": "abrir liña temporal local",
- "keyboard_shortcuts.mention": "para mencionar o autor",
+ "keyboard_shortcuts.home": "para abrir a cronoloxía inicial",
+ "keyboard_shortcuts.hotkey": "Tecla de atallo",
+ "keyboard_shortcuts.legend": "para amosar esta lenda",
+ "keyboard_shortcuts.local": "para abrir a cronoloxía local",
+ "keyboard_shortcuts.mention": "para mencionar a autora",
"keyboard_shortcuts.muted": "abrir lista de usuarias acaladas",
- "keyboard_shortcuts.my_profile": "abrir o seu perfil",
- "keyboard_shortcuts.notifications": "abrir columna de notificacións",
- "keyboard_shortcuts.pinned": "abrir lista de toots fixados",
- "keyboard_shortcuts.profile": "abrir perfil da autora",
+ "keyboard_shortcuts.my_profile": "para abrir o teu perfil",
+ "keyboard_shortcuts.notifications": "para abrir a columna das notificacións",
+ "keyboard_shortcuts.open_media": "para abrir o contido multimedia",
+ "keyboard_shortcuts.pinned": "para abrir a listaxe dos toots fixados",
+ "keyboard_shortcuts.profile": "para abrir o perfil da autora",
"keyboard_shortcuts.reply": "para responder",
- "keyboard_shortcuts.requests": "abrir lista de peticións de seguimento",
- "keyboard_shortcuts.search": "para centrar a busca",
- "keyboard_shortcuts.start": "abrir columna \"comezando\"",
- "keyboard_shortcuts.toggle_hidden": "mostrar/agochar un texto detrás do AC",
- "keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar medios",
- "keyboard_shortcuts.toot": "escribir un toot novo",
- "keyboard_shortcuts.unfocus": "quitar o foco do área de escritura/busca",
- "keyboard_shortcuts.up": "ir hacia arriba na lista",
+ "keyboard_shortcuts.requests": "para abrir a listaxe das peticións de seguimento",
+ "keyboard_shortcuts.search": "para destacar a procura",
+ "keyboard_shortcuts.spoilers": "mostrar/ocultar campo CW",
+ "keyboard_shortcuts.start": "para abrir a columna dos \"primeiros pasos\"",
+ "keyboard_shortcuts.toggle_hidden": "para amosar/agochar texto detrás do aviso de contido (AC)",
+ "keyboard_shortcuts.toggle_sensitivity": "para amosar/agochar contido multimedia",
+ "keyboard_shortcuts.toot": "para escribir un novo toot",
+ "keyboard_shortcuts.unfocus": "para deixar de destacar a área de escritura/procura",
+ "keyboard_shortcuts.up": "para mover cara arriba na listaxe",
"lightbox.close": "Fechar",
"lightbox.next": "Seguinte",
"lightbox.previous": "Anterior",
- "lightbox.view_context": "Ver contexto",
- "lists.account.add": "Engadir á lista",
- "lists.account.remove": "Eliminar da lista",
- "lists.delete": "Eliminar lista",
- "lists.edit": "Editar lista",
- "lists.edit.submit": "Cambiar título",
- "lists.new.create": "Engadir lista",
- "lists.new.title_placeholder": "Novo título da lista",
- "lists.search": "Procurar entre a xente que segues",
- "lists.subheading": "As túas listas",
+ "lightbox.view_context": "Ollar contexto",
+ "lists.account.add": "Engadir á listaxe",
+ "lists.account.remove": "Eliminar da listaxe",
+ "lists.delete": "Eliminar listaxe",
+ "lists.edit": "Editar listaxe",
+ "lists.edit.submit": "Mudar o título",
+ "lists.new.create": "Engadir listaxe",
+ "lists.new.title_placeholder": "Título da nova listaxe",
+ "lists.search": "Procurar entre as persoas que segues",
+ "lists.subheading": "As túas listaxes",
"load_pending": "{count, plural, one {# novo elemento} other {# novos elementos}}",
- "loading_indicator.label": "Cargando...",
- "media_gallery.toggle_visible": "Ocultar",
+ "loading_indicator.label": "Estase a cargar...",
+ "media_gallery.toggle_visible": "Trocar visibilidade",
"missing_indicator.label": "Non atopado",
- "missing_indicator.sublabel": "Non se puido atopar o recurso",
- "mute_modal.hide_notifications": "Esconder notificacións deste usuario?",
- "navigation_bar.apps": "Apps móbiles",
+ "missing_indicator.sublabel": "Este recurso non foi atopado",
+ "mute_modal.hide_notifications": "Agochar notificacións desta usuaria?",
+ "navigation_bar.apps": "Aplicacións móbiles",
"navigation_bar.blocks": "Usuarias bloqueadas",
- "navigation_bar.community_timeline": "Liña temporal local",
- "navigation_bar.compose": "Escribir novo toot",
+ "navigation_bar.bookmarks": "Marcadores",
+ "navigation_bar.community_timeline": "Cronoloxía local",
+ "navigation_bar.compose": "Escribir un novo toot",
"navigation_bar.direct": "Mensaxes directas",
"navigation_bar.discover": "Descubrir",
"navigation_bar.domain_blocks": "Dominios agochados",
"navigation_bar.edit_profile": "Editar perfil",
- "navigation_bar.favourites": "Favoritas",
- "navigation_bar.filters": "Palabras acaladas",
+ "navigation_bar.favourites": "Favoritos",
+ "navigation_bar.filters": "Palabras silenciadas",
"navigation_bar.follow_requests": "Peticións de seguimento",
"navigation_bar.follows_and_followers": "Seguindo e seguidoras",
"navigation_bar.info": "Sobre este servidor",
- "navigation_bar.keyboard_shortcuts": "Atallos",
- "navigation_bar.lists": "Listas",
- "navigation_bar.logout": "Sair",
- "navigation_bar.mutes": "Usuarias acaladas",
+ "navigation_bar.keyboard_shortcuts": "Atallos do teclado",
+ "navigation_bar.lists": "Listaxes",
+ "navigation_bar.logout": "Pechar sesión",
+ "navigation_bar.mutes": "Usuarias silenciadas",
"navigation_bar.personal": "Persoal",
- "navigation_bar.pins": "Mensaxes fixadas",
+ "navigation_bar.pins": "Toots fixados",
"navigation_bar.preferences": "Preferencias",
- "navigation_bar.public_timeline": "Liña temporal federada",
- "navigation_bar.security": "Seguridade",
- "notification.favourite": "{name} marcou como favorito o seu estado",
- "notification.follow": "{name} está a seguila",
+ "navigation_bar.public_timeline": "Cronoloxía federada",
+ "navigation_bar.security": "Seguranza",
+ "notification.favourite": "{name} marcou o teu estado coma favorito",
+ "notification.follow": "{name} comezou a seguirte",
+ "notification.follow_request": "{name} solicitou seguirte",
"notification.mention": "{name} mencionoute",
- "notification.poll": "Unha sondaxe na que votou xa rematou",
- "notification.reblog": "{name} promoveu o seu estado",
+ "notification.own_poll": "A túa enquisa rematou",
+ "notification.poll": "Unha enquisa na que votaches rematou",
+ "notification.reblog": "{name} compartiu o teu estado",
"notifications.clear": "Limpar notificacións",
- "notifications.clear_confirmation": "Estás seguro de que queres limpar permanentemente todas as túas notificacións?",
+ "notifications.clear_confirmation": "Tes a certeza de querer limpar de xeito permanente todas as túas notificacións?",
"notifications.column_settings.alert": "Notificacións de escritorio",
- "notifications.column_settings.favourite": "Favoritas:",
- "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorías",
+ "notifications.column_settings.favourite": "Favoritos:",
+ "notifications.column_settings.filter_bar.advanced": "Amosar todas as categorías",
"notifications.column_settings.filter_bar.category": "Barra de filtrado rápido",
- "notifications.column_settings.filter_bar.show": "Mostrar",
- "notifications.column_settings.follow": "Novos seguidores:",
+ "notifications.column_settings.filter_bar.show": "Amosar",
+ "notifications.column_settings.follow": "Novas seguidoras:",
+ "notifications.column_settings.follow_request": "Novas peticións de seguimento:",
"notifications.column_settings.mention": "Mencións:",
- "notifications.column_settings.poll": "Resultados da sondaxe:",
- "notifications.column_settings.push": "Enviar notificacións",
+ "notifications.column_settings.poll": "Resultados da enquisa:",
+ "notifications.column_settings.push": "Notificacións emerxentes",
"notifications.column_settings.reblog": "Promocións:",
- "notifications.column_settings.show": "Mostrar en columna",
+ "notifications.column_settings.show": "Amosar en columna",
"notifications.column_settings.sound": "Reproducir son",
"notifications.filter.all": "Todo",
- "notifications.filter.boosts": "Promocións",
+ "notifications.filter.boosts": "Compartidos",
"notifications.filter.favourites": "Favoritos",
"notifications.filter.follows": "Seguimentos",
"notifications.filter.mentions": "Mencións",
- "notifications.filter.polls": "Resultados da sondaxe",
+ "notifications.filter.polls": "Resultados da enquisa",
"notifications.group": "{count} notificacións",
"poll.closed": "Pechado",
"poll.refresh": "Actualizar",
- "poll.total_people": "{count, plural,one {# persoa}other {# persoas}}",
- "poll.total_votes": "{count, plural, one {# voto} outros {# votos}}",
+ "poll.total_people": "{count, plural,one {# persoa} other {# persoas}}",
+ "poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
"poll.vote": "Votar",
- "poll.voted": "Votou por esta opción",
- "poll_button.add_poll": "Engadir sondaxe",
- "poll_button.remove_poll": "Eliminar sondaxe",
- "privacy.change": "Axustar a intimidade do estado",
- "privacy.direct.long": "Enviar exclusivamente as usuarias mencionadas",
- "privacy.direct.short": "Directa",
- "privacy.private.long": "Enviar só as seguidoras",
- "privacy.private.short": "Só-seguidoras",
- "privacy.public.long": "Publicar na liña temporal pública",
- "privacy.public.short": "Pública",
- "privacy.unlisted.long": "Non publicar en liñas temporais públicas",
- "privacy.unlisted.short": "Non listada",
+ "poll.voted": "Votaches por esta opción",
+ "poll_button.add_poll": "Engadir unha enquisa",
+ "poll_button.remove_poll": "Eliminar enquisa",
+ "privacy.change": "Axustar privacidade",
+ "privacy.direct.long": "Só para as usuarias mencionadas",
+ "privacy.direct.short": "Directo",
+ "privacy.private.long": "Só para os seguidoras",
+ "privacy.private.short": "Só para seguidoras",
+ "privacy.public.long": "Publicar nas cronoloxías públicas",
+ "privacy.public.short": "Público",
+ "privacy.unlisted.long": "Non publicar nas cronoloxías públicas",
+ "privacy.unlisted.short": "Non listado",
"refresh": "Actualizar",
"regeneration_indicator.label": "Cargando…",
- "regeneration_indicator.sublabel": "Estase a preparar a súa liña temporal de inicio!",
+ "regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!",
"relative_time.days": "{number}d",
"relative_time.hours": "{number}h",
"relative_time.just_now": "agora",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
- "reply_indicator.cancel": "Cancelar",
+ "relative_time.today": "hoxe",
+ "reply_indicator.cancel": "Desbotar",
"report.forward": "Reenviar a {target}",
- "report.forward_hint": "A conta pertence a outro servidor. Enviar unha copia anónima do informe alí tamén?",
- "report.hint": "O informe enviarase a moderación do seu servidor. Abaixo pode explicar a razón pola que está a informar:",
+ "report.forward_hint": "A conta é doutro servidor. Enviar unha copia anónima da denuncia aló tamén?",
+ "report.hint": "A denuncia enviarase á moderación do teu servidor. Abaixo podes explicar a razón pola que estás a denunciar:",
"report.placeholder": "Comentarios adicionais",
"report.submit": "Enviar",
- "report.target": "Informar {target}",
- "search.placeholder": "Buscar",
- "search_popout.search_format": "Formato de busca avanzada",
- "search_popout.tips.full_text": "Texto simple devolve estados que vostede escribeu, promoveu, marcou favoritos, ou foi mencionada, así como nomes de usuaria coincidentes, nomes públicos e etiquetas.",
- "search_popout.tips.hashtag": "etiqueta",
+ "report.target": "Denunciar a {target}",
+ "search.placeholder": "Procurar",
+ "search_popout.search_format": "Formato de procura avanzada",
+ "search_popout.tips.full_text": "Texto simple devolve estados que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.",
+ "search_popout.tips.hashtag": "cancelo",
"search_popout.tips.status": "estado",
- "search_popout.tips.text": "Texto simple devolve coincidencias con nomes públicos, nomes de usuaria e etiquetas",
+ "search_popout.tips.text": "Texto simple devolve coincidencias con nomes públicos, nomes de usuaria e cancelos",
"search_popout.tips.user": "usuaria",
- "search_results.accounts": "Xente",
- "search_results.hashtags": "Etiquetas",
+ "search_results.accounts": "Persoas",
+ "search_results.hashtags": "Cancelos",
"search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "Non está activada neste servidor Mastodon a busca de toots polo seu contido.",
- "search_results.total": "{count, number} {count,plural,one {result} outros {results}}",
+ "search_results.statuses_fts_disabled": "Procurar toots polo seu contido non está activado neste servidor do Mastodon.",
+ "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
"status.admin_account": "Abrir interface de moderación para @{name}",
"status.admin_status": "Abrir este estado na interface de moderación",
- "status.block": "Bloquear @{name}",
- "status.cancel_reblog_private": "Non promover",
- "status.cannot_reblog": "Esta mensaxe non pode ser promovida",
- "status.copy": "Copiar ligazón ao estado",
+ "status.block": "Bloquear a @{name}",
+ "status.bookmark": "Marcar",
+ "status.cancel_reblog_private": "Desfacer compartido",
+ "status.cannot_reblog": "Esta publicación non pode ser promovida",
+ "status.copy": "Copiar ligazón ó estado",
"status.delete": "Eliminar",
"status.detailed_status": "Vista detallada da conversa",
- "status.direct": "Mensaxe directa @{name}",
+ "status.direct": "Mensaxe directa a @{name}",
"status.embed": "Incrustar",
- "status.favourite": "Favorita",
+ "status.favourite": "Favorito",
"status.filtered": "Filtrado",
"status.load_more": "Cargar máis",
- "status.media_hidden": "Medios ocultos",
+ "status.media_hidden": "Contido multimedia agochado",
"status.mention": "Mencionar @{name}",
"status.more": "Máis",
- "status.mute": "Acalar @{name}",
- "status.mute_conversation": "Acalar conversa",
+ "status.mute": "Silenciar @{name}",
+ "status.mute_conversation": "Silenciar conversa",
"status.open": "Expandir este estado",
"status.pin": "Fixar no perfil",
"status.pinned": "Toot fixado",
- "status.read_more": "Lea máis",
+ "status.read_more": "Ler máis",
"status.reblog": "Promover",
- "status.reblog_private": "Promover a audiencia orixinal",
+ "status.reblog_private": "Compartir á audiencia orixinal",
"status.reblogged_by": "{name} promoveu",
- "status.reblogs.empty": "Ninguén promoveu este toot polo de agora. Cando alguén o faga, mostraránse aquí.",
- "status.redraft": "Eliminar & reescribir",
- "status.reply": "Resposta",
- "status.replyAll": "Resposta a conversa",
- "status.report": "Informar @{name}",
- "status.sensitive_warning": "Contido sensible",
+ "status.reblogs.empty": "Aínda ninguén promoveu este toot. Cando alguén o faga, amosarase aquí.",
+ "status.redraft": "Eliminar e reescribir",
+ "status.remove_bookmark": "Eliminar marcador",
+ "status.reply": "Responder",
+ "status.replyAll": "Responder ó fío",
+ "status.report": "Denunciar @{name}",
+ "status.sensitive_warning": "Contido sensíbel",
"status.share": "Compartir",
- "status.show_less": "Mostrar menos",
- "status.show_less_all": "Mostrar menos para todas",
- "status.show_more": "Mostrar máis",
- "status.show_more_all": "Mostrar máis para todas",
- "status.show_thread": "Mostrar fío",
- "status.uncached_media_warning": "Non dispoñible",
- "status.unmute_conversation": "Non acalar a conversa",
- "status.unpin": "Despegar do perfil",
+ "status.show_less": "Amosar menos",
+ "status.show_less_all": "Amosar menos para todos",
+ "status.show_more": "Amosar máis",
+ "status.show_more_all": "Amosar máis para todos",
+ "status.show_thread": "Amosar fío",
+ "status.uncached_media_warning": "Non dispoñíbel",
+ "status.unmute_conversation": "Deixar de silenciar conversa",
+ "status.unpin": "Desafixar do perfil",
"suggestions.dismiss": "Rexeitar suxestión",
- "suggestions.header": "Podería estar interesada en…",
- "tabs_bar.federated_timeline": "Federado",
+ "suggestions.header": "Poderíache interesar…",
+ "tabs_bar.federated_timeline": "Federada",
"tabs_bar.home": "Inicio",
"tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notificacións",
- "tabs_bar.search": "Buscar",
- "time_remaining.days": "{number, plural, one {# dia} other {# días}} restantes",
+ "tabs_bar.search": "Procurar",
+ "time_remaining.days": "{number, plural, one {# día} other {# días}} restantes",
"time_remaining.hours": "{number, plural, one {# hora} other {# horas}} restantes",
"time_remaining.minutes": "{number, plural, one {# minuto} other {# minutos}} restantes",
- "time_remaining.moments": "Está rematando",
+ "time_remaining.moments": "Momentos restantes",
"time_remaining.seconds": "{number, plural, one {# segundo} other {# segundos}} restantes",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} outras {people}} conversando",
+ "timeline_hint.remote_resource_not_displayed": "Non se mostran {resource} desde outros servidores.",
+ "timeline_hint.resources.followers": "Seguidoras",
+ "timeline_hint.resources.follows": "Seguindo",
+ "timeline_hint.resources.statuses": "Toots antigos",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {persoa} other {persoas}} falando",
"trends.trending_now": "Tendencias actuais",
- "ui.beforeunload": "O borrador perderase se sae de Mastodon.",
- "upload_area.title": "Arrastre e solte para subir",
- "upload_button.label": "Engadir medios ({formats})",
- "upload_error.limit": "Excedeu o límite de subida de ficheiros.",
- "upload_error.poll": "Non se poden subir ficheiros nas sondaxes.",
- "upload_form.description": "Describa para deficientes visuais",
+ "ui.beforeunload": "O borrador perderase se saes de Mastodon.",
+ "upload_area.title": "Arrastra e solta para subir",
+ "upload_button.label": "Engadir multimedia ({formats})",
+ "upload_error.limit": "Límite máximo do ficheiro a subir excedido.",
+ "upload_error.poll": "Non se poden subir ficheiros nas enquisas.",
+ "upload_form.audio_description": "Describir para persoas con problemas auditivos",
+ "upload_form.description": "Describir para persoas con problemas visuais",
"upload_form.edit": "Editar",
"upload_form.undo": "Eliminar",
- "upload_modal.analyzing_picture": "Analizando imaxe…",
+ "upload_form.video_description": "Describir para persoas con problemas visuais ou auditivos",
+ "upload_modal.analyzing_picture": "Estase a analizar a imaxe…",
"upload_modal.apply": "Aplicar",
- "upload_modal.description_placeholder": "Un raposo moi feitiño salta sobre o can preguiceiro",
+ "upload_modal.description_placeholder": "Un raposo veloz brinca sobre o can preguiceiro",
"upload_modal.detect_text": "Detectar texto na imaxe",
- "upload_modal.edit_media": "Editar medios",
- "upload_modal.hint": "Prema ou arrastre o círculo na vista previa para escolle o punto focal que se verá na vista de todas as miniaturas.",
+ "upload_modal.edit_media": "Editar multimedia",
+ "upload_modal.hint": "Preme ou arrastra o círculo na vista previa para escoller o punto focal que sempre estará á vista en todas as miniaturas.",
"upload_modal.preview_label": "Vista previa ({ratio})",
- "upload_progress.label": "Subindo...",
- "video.close": "Pechar video",
+ "upload_progress.label": "Estase a subir...",
+ "video.close": "Pechar vídeo",
+ "video.download": "Baixar ficheiro",
"video.exit_fullscreen": "Saír da pantalla completa",
"video.expand": "Expandir vídeo",
"video.fullscreen": "Pantalla completa",
"video.hide": "Agochar vídeo",
- "video.mute": "Acalar son",
- "video.pause": "Pausar",
+ "video.mute": "Silenciar son",
+ "video.pause": "Deter",
"video.play": "Reproducir",
"video.unmute": "Permitir son"
}
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 70aec3279..4a2754e64 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "הוסף או הסר מהרשימות",
"account.badges.bot": "בוט",
+ "account.badges.group": "Group",
"account.block": "חסימת @{name}",
"account.block_domain": "להסתיר הכל מהקהילה {domain}",
"account.blocked": "חסום",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "בטל בקשת מעקב",
"account.direct": "Direct Message @{name}",
"account.domain_blocked": "הדומיין חסוי",
@@ -38,10 +42,15 @@
"account.unfollow": "הפסקת מעקב",
"account.unmute": "הפסקת השתקת @{name}",
"account.unmute_notifications": "להפסיק הסתרת הודעות מעם @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "אירעה שגיאה בלתי צפויה.",
"alert.unexpected.title": "אופס!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה",
"bundle_column_error.body": "משהו השתבש בעת הצגת הרכיב הזה.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.",
"bundle_modal_error.retry": "לנסות שוב",
"column.blocks": "חסימות",
+ "column.bookmarks": "Bookmarks",
"column.community": "ציר זמן מקומי",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "הצגת העדפות",
"column_header.unpin": "שחרור קיבוע",
"column_subheading.settings": "אפשרויות",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "ללחוש",
"compose_form.publish_loud": "לחצרץ!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "קבלה",
"follow_request.reject": "דחיה",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "למתחילים",
"home.column_settings.show_reblogs": "הצגת הדהודים",
"home.column_settings.show_replies": "הצגת תגובות",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "לענות",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "להתמקד בחלון החיפוש",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "להסתיר הודעות מחשבון זה?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "חסימות",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "ציר זמן מקומי",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Security",
"notification.favourite": "חצרוצך חובב על ידי {name}",
"notification.follow": "{name} במעקב אחרייך",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "אוזכרת על ידי {name}",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "חצרוצך הודהד על ידי {name}",
"notifications.clear": "הסרת התראות",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "עוקבים חדשים:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "פניות:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "הודעות בדחיפה",
@@ -322,6 +346,7 @@
"relative_time.just_now": "כרגע",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "ביטול",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "לא ניתן להדהד הודעה זו",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "הודהד על ידי {name}",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "תגובה",
"status.replyAll": "תגובה לכולם",
"status.report": "דיווח על @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.",
@@ -400,9 +431,11 @@
"upload_button.label": "הוספת מדיה",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "תיאור לכבדי ראיה",
"upload_form.edit": "Edit",
"upload_form.undo": "ביטול",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "עולה...",
"video.close": "סגירת וידאו",
+ "video.download": "Download file",
"video.exit_fullscreen": "יציאה ממסך מלא",
"video.expand": "להרחיב וידאו",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 4fb924a5f..0ca745020 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -1,153 +1,168 @@
{
- "account.add_or_remove_from_list": "Add or Remove from lists",
- "account.badges.bot": "Bot",
- "account.block": "Block @{name}",
- "account.block_domain": "Hide everything from {domain}",
- "account.blocked": "Blocked",
- "account.cancel_follow_request": "Cancel follow request",
- "account.direct": "Direct message @{name}",
- "account.domain_blocked": "Domain hidden",
- "account.edit_profile": "Edit profile",
- "account.endorse": "Feature on profile",
- "account.follow": "Follow",
- "account.followers": "Followers",
- "account.followers.empty": "No one follows this user yet.",
- "account.follows": "Follows",
- "account.follows.empty": "This user doesn't follow anyone yet.",
- "account.follows_you": "Follows you",
- "account.hide_reblogs": "Hide boosts from @{name}",
- "account.last_status": "Last active",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
- "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
- "account.media": "Media",
- "account.mention": "Mention @{name}",
- "account.moved_to": "{name} has moved to:",
- "account.mute": "Mute @{name}",
- "account.mute_notifications": "Mute notifications from @{name}",
- "account.muted": "Muted",
- "account.never_active": "Never",
- "account.posts": "Toots",
- "account.posts_with_replies": "Toots and replies",
- "account.report": "Report @{name}",
- "account.requested": "Awaiting approval. Click to cancel follow request",
- "account.share": "Share @{name}'s profile",
- "account.show_reblogs": "Show boosts from @{name}",
- "account.unblock": "Unblock @{name}",
- "account.unblock_domain": "Unhide {domain}",
- "account.unendorse": "Don't feature on profile",
- "account.unfollow": "Unfollow",
- "account.unmute": "Unmute @{name}",
- "account.unmute_notifications": "Unmute notifications from @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
- "alert.unexpected.message": "An unexpected error occurred.",
- "alert.unexpected.title": "Oops!",
- "autosuggest_hashtag.per_week": "{count} per week",
- "boost_modal.combo": "You can press {combo} to skip this next time",
- "bundle_column_error.body": "Something went wrong while loading this component.",
- "bundle_column_error.retry": "Try again",
- "bundle_column_error.title": "Network error",
- "bundle_modal_error.close": "Close",
- "bundle_modal_error.message": "Something went wrong while loading this component.",
- "bundle_modal_error.retry": "Try again",
- "column.blocks": "Blocked users",
- "column.community": "Local timeline",
- "column.direct": "Direct messages",
- "column.directory": "Browse profiles",
- "column.domain_blocks": "Hidden domains",
- "column.favourites": "Favourites",
- "column.follow_requests": "Follow requests",
- "column.home": "Home",
- "column.lists": "Lists",
- "column.mutes": "Muted users",
- "column.notifications": "Notifications",
- "column.pins": "Pinned toot",
- "column.public": "Federated timeline",
- "column_back_button.label": "Back",
- "column_header.hide_settings": "Hide settings",
- "column_header.moveLeft_settings": "Move column to the left",
- "column_header.moveRight_settings": "Move column to the right",
- "column_header.pin": "Pin",
- "column_header.show_settings": "Show settings",
- "column_header.unpin": "Unpin",
- "column_subheading.settings": "Settings",
- "community.column_settings.media_only": "Media Only",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "सूची में जोड़ें या हटाए",
+ "account.badges.bot": "बॉट",
+ "account.badges.group": "Group",
+ "account.block": "@{name} को ब्लॉक करें",
+ "account.block_domain": "{domain} के सारी चीज़े छुपाएं",
+ "account.blocked": "ब्लॉक",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "फ़ॉलो रिक्वेस्ट रद्द करें",
+ "account.direct": "प्रत्यक्ष संदेश @{name}",
+ "account.domain_blocked": "छिपा हुआ डोमेन",
+ "account.edit_profile": "प्रोफ़ाइल संपादित करें",
+ "account.endorse": "प्रोफ़ाइल पर दिखाए",
+ "account.follow": "फॉलो करें",
+ "account.followers": "फॉलोवर",
+ "account.followers.empty": "कोई भी इस यूज़र् को फ़ॉलो नहीं करता है",
+ "account.follows": "फॉलो करें",
+ "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।",
+ "account.follows_you": "आपको फॉलो करता है",
+ "account.hide_reblogs": "@{name} के बूस्ट छुपाएं",
+ "account.last_status": "अंतिम सक्रिय",
+ "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था",
+ "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।",
+ "account.media": "मीडिया",
+ "account.mention": "उल्लेख @{name}",
+ "account.moved_to": "{name} स्थानांतरित हो गया:",
+ "account.mute": "म्यूट @{name}",
+ "account.mute_notifications": "@{name} के नोटिफिकेशन म्यूट करे",
+ "account.muted": "म्यूट है",
+ "account.never_active": "कभी नहीं दिखे",
+ "account.posts": "टूट्स",
+ "account.posts_with_replies": "टूट्स एवं जवाब",
+ "account.report": "रिपोर्ट @{name}",
+ "account.requested": "मंजूरी का इंतजार। फॉलो रिक्वेस्ट को रद्द करने के लिए क्लिक करें",
+ "account.share": "@{name} की प्रोफाइल शेयर करे",
+ "account.show_reblogs": "@{name} के बूस्ट दिखाए",
+ "account.unblock": "@{name} को अनब्लॉक करें",
+ "account.unblock_domain": "{domain} दिखाए",
+ "account.unendorse": "प्रोफ़ाइल पर न दिखाए",
+ "account.unfollow": "अनफॉलो करें",
+ "account.unmute": "अनम्यूट @{name}",
+ "account.unmute_notifications": "@{name} के नोटिफिकेशन अनम्यूट करे",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "कृप्या {retry_time, time, medium} के बाद दुबारा कोशिश करें",
+ "alert.rate_limited.title": "सीमित दर",
+ "alert.unexpected.message": "एक अप्रत्याशित त्रुटि हुई है!",
+ "alert.unexpected.title": "उफ़!",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "{count} हर सप्ताह",
+ "boost_modal.combo": "अगली बार स्किप करने के लिए आप {combo} दबा सकते है",
+ "bundle_column_error.body": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया",
+ "bundle_column_error.retry": "दुबारा कोशिश करें",
+ "bundle_column_error.title": "नेटवर्क त्रुटि",
+ "bundle_modal_error.close": "बंद",
+ "bundle_modal_error.message": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया",
+ "bundle_modal_error.retry": "दुबारा कोशिश करें",
+ "column.blocks": "ब्लॉक्ड यूज़र्स",
+ "column.bookmarks": "Bookmarks",
+ "column.community": "लोकल टाइम्लाइन",
+ "column.direct": "सीधा संदेश",
+ "column.directory": "प्रोफाइल्स खोजें",
+ "column.domain_blocks": "छुपे डोमेन्स",
+ "column.favourites": "पसंदीदा",
+ "column.follow_requests": "फॉलो रिक्वेस्ट्स",
+ "column.home": "होम",
+ "column.lists": "सूचियाँ",
+ "column.mutes": "म्यूट किये हुए यूजर",
+ "column.notifications": "नोटिफिकेशन्स",
+ "column.pins": "पिनड टूट्स",
+ "column.public": "फ़ेडरेटेड टाइम्लाइन",
+ "column_back_button.label": "पीछे जाए",
+ "column_header.hide_settings": "सेटिंग्स छुपाए",
+ "column_header.moveLeft_settings": "कॉलम को बाएं ले जाये",
+ "column_header.moveRight_settings": "कॉलम को दाएं ले जाये",
+ "column_header.pin": "पिन",
+ "column_header.show_settings": "सेटिंग्स दिखाएँ",
+ "column_header.unpin": "अनपिन",
+ "column_subheading.settings": "सेटिंग्स",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "सिर्फ़ मीडिया",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
- "compose_form.direct_message_warning_learn_more": "Learn more",
- "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
- "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
- "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.direct_message_warning_learn_more": "और जानें",
+ "compose_form.hashtag_warning": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।",
+ "compose_form.lock_disclaimer": "आपका खाता {locked} नहीं है। आपको केवल फॉलोवर्स को दिखाई दिए जाने वाले पोस्ट देखने के लिए कोई भी फॉलो कर सकता है।",
+ "compose_form.lock_disclaimer.lock": "लॉक्ड",
"compose_form.placeholder": "What is on your mind?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
- "compose_form.publish": "Toot",
+ "compose_form.poll.add_option": "विकल्प जोड़े",
+ "compose_form.poll.duration": "चुनाव की अवधि",
+ "compose_form.poll.option_placeholder": "कुल विकल्प {number}",
+ "compose_form.poll.remove_option": "इस विकल्प को हटाएँ",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "टूट्",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
- "compose_form.spoiler.marked": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
- "compose_form.spoiler_placeholder": "Write your warning here",
- "confirmation_modal.cancel": "Cancel",
- "confirmations.block.block_and_report": "Block & Report",
- "confirmations.block.confirm": "Block",
- "confirmations.block.message": "Are you sure you want to block {name}?",
- "confirmations.delete.confirm": "Delete",
- "confirmations.delete.message": "Are you sure you want to delete this status?",
- "confirmations.delete_list.confirm": "Delete",
- "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
- "confirmations.domain_block.confirm": "Hide entire domain",
- "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
- "confirmations.mute.confirm": "Mute",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
- "confirmations.mute.message": "Are you sure you want to mute {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
- "confirmations.unfollow.confirm": "Unfollow",
- "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
- "embed.instructions": "Embed this status on your website by copying the code below.",
- "embed.preview": "Here is what it will look like:",
- "emoji_button.activity": "Activity",
- "emoji_button.custom": "Custom",
- "emoji_button.flags": "Flags",
- "emoji_button.food": "Food & Drink",
- "emoji_button.label": "Insert emoji",
- "emoji_button.nature": "Nature",
- "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
- "emoji_button.objects": "Objects",
- "emoji_button.people": "People",
- "emoji_button.recent": "Frequently used",
- "emoji_button.search": "Search...",
- "emoji_button.search_results": "Search results",
- "emoji_button.symbols": "Symbols",
- "emoji_button.travel": "Travel & Places",
- "empty_column.account_timeline": "No toots here!",
- "empty_column.account_unavailable": "Profile unavailable",
- "empty_column.blocks": "You haven't blocked any users yet.",
- "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
- "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
- "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
- "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
- "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
- "empty_column.hashtag": "There is nothing in this hashtag yet.",
- "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
- "empty_column.home.public_timeline": "the public timeline",
- "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "compose_form.sensitive.hide": "मीडिया को संवेदनशील के रूप में चिह्नित करें",
+ "compose_form.sensitive.marked": "मीडिया संवेदनशील के रूप में चिह्नित है",
+ "compose_form.sensitive.unmarked": "मीडिया संवेदनशील के रूप में चिह्नित नहीं है",
+ "compose_form.spoiler.marked": "चेतावनी के पीछे टेक्स्ट छिपा है",
+ "compose_form.spoiler.unmarked": "टेक्स्ट छिपा नहीं है",
+ "compose_form.spoiler_placeholder": "अपनी चेतावनी यहाँ लिखें",
+ "confirmation_modal.cancel": "रद्द करें",
+ "confirmations.block.block_and_report": "ब्लॉक एवं रिपोर्ट",
+ "confirmations.block.confirm": "ब्लॉक",
+ "confirmations.block.message": "क्या आप वाकई {name} को ब्लॉक करना चाहते हैं?",
+ "confirmations.delete.confirm": "मिटाए",
+ "confirmations.delete.message": "क्या आप वाकई इस स्टेटस को हटाना चाहते हैं?",
+ "confirmations.delete_list.confirm": "मिटाए",
+ "confirmations.delete_list.message": "क्या आप वाकई इस लिस्ट को हमेशा के लिये मिटाना चाहते हैं?",
+ "confirmations.domain_block.confirm": "संपूर्ण डोमेन छिपाएं",
+ "confirmations.domain_block.message": "क्या आप वास्तव में, वास्तव में आप पूरे {domain} को ब्लॉक करना चाहते हैं? ज्यादातर मामलों में कुछ लक्षित ब्लॉक या म्यूट पर्याप्त और बेहतर हैं। आप किसी भी सार्वजनिक समय-सीमा या अपनी सूचनाओं में उस डोमेन की सामग्री नहीं देखेंगे। उस डोमेन से आपके फॉलोवर्स को हटा दिया जाएगा।",
+ "confirmations.logout.confirm": "लॉग आउट करें",
+ "confirmations.logout.message": "आप सुनिश्चित हैं कि लॉगआउट करना चाहते हैं?",
+ "confirmations.mute.confirm": "शांत",
+ "confirmations.mute.explanation": "यह उनसे और पोस्टों का उल्लेख करते हुए उनसे छिपाएगा, लेकिन यह अभी भी उन्हें आपकी पोस्ट देखने और आपको फॉलो करने की अनुमति देगा।",
+ "confirmations.mute.message": "क्या आप वाकई {name} को शांत करना चाहते हैं?",
+ "confirmations.redraft.confirm": "मिटायें और पुनःप्रारूपण करें",
+ "confirmations.redraft.message": "क्या आप वाकई इस स्टेटस को हटाना चाहते हैं और इसे फिर से ड्राफ्ट करना चाहते हैं? पसंदीदा और बूस्ट खो जाएंगे, और मूल पोस्ट के उत्तर अनाथ हो जाएंगे।",
+ "confirmations.reply.confirm": "उत्तर दें",
+ "confirmations.reply.message": "अब उत्तर देना उस संदेश को अधिलेखित कर देगा जो आप वर्तमान में बना रहे हैं। क्या आप सुनिश्चित रूप से आगे बढ़ना चाहते हैं?",
+ "confirmations.unfollow.confirm": "अनफॉलो करें",
+ "confirmations.unfollow.message": "क्या आप वाकई {name} को अनफॉलो करना चाहते हैं?",
+ "conversation.delete": "वार्तालाप हटाएँ",
+ "conversation.mark_as_read": "पढ़ा गया के रूप में चिह्नित करें",
+ "conversation.open": "वार्तालाप देखें",
+ "conversation.with": "{names} के साथ",
+ "directory.federated": "ज्ञात फेडीवर्स से",
+ "directory.local": "केवल {domain} से",
+ "directory.new_arrivals": "नए आगंतुक",
+ "directory.recently_active": "हाल में ही सक्रिय",
+ "embed.instructions": "अपने वेबसाइट पर, निचे दिए कोड को कॉपी करके, इस स्टेटस को एम्बेड करें",
+ "embed.preview": "यह ऐसा दिखेगा :",
+ "emoji_button.activity": "गतिविधि",
+ "emoji_button.custom": "निजीकृत",
+ "emoji_button.flags": "झंडे",
+ "emoji_button.food": "भोजन एवं पेय",
+ "emoji_button.label": "इमोजी डाले",
+ "emoji_button.nature": "प्रकृति",
+ "emoji_button.not_found": "कोई इमोजी नहीं मिला! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "वस्तुएं",
+ "emoji_button.people": "लोग",
+ "emoji_button.recent": "अक्सर इस्तेमाल किया जाने वाला",
+ "emoji_button.search": "खोजें",
+ "emoji_button.search_results": "खोज परिणाम",
+ "emoji_button.symbols": "प्रतीक",
+ "emoji_button.travel": "यात्रा एवं स्थान",
+ "empty_column.account_timeline": "सन्नाटा! यहां कोई टूट्स नहीं!",
+ "empty_column.account_unavailable": "प्रोफाइल उपलब्ध नहीं",
+ "empty_column.blocks": "आप अभी तक किसी भी यूजर के द्वारा ब्लॉक्ड नहीं हो।",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "empty_column.community": "लोकल टाइम्लाइन खाली है, कुछ देखने के लिये सार्वजनिक रूप से कुछ लिखें!",
+ "empty_column.direct": "आपके पास कोई सीधा सन्देश नहीं है, जब आप कोई भेजेंगे प्राप्त करेंगे तो यहाँ दिखेगा।",
+ "empty_column.domain_blocks": "अभी तक कोई छुपा हुआ डोमेन नहीं है।",
+ "empty_column.favourited_statuses": "आपके पास अभी कोई भी चहिता टूट नहीं है. जब आप किसी टूट को पसंद (स्टार) करेंगे, तब वो यहाँ दिखेगा।",
+ "empty_column.favourites": "अभी तक किसी ने भी इस टूट को पसंद (स्टार) नहीं किया है. जब भी कोई इसे पसंद करेगा, उनका नाम यहाँ दिखेगा।",
+ "empty_column.follow_requests": "अभी तक किसी ने भी आपका अनुसरण करने की विनती नहीं की है. जब भी कोई आपको विनती भेजेगा, वो यहाँ दिखेगी.",
+ "empty_column.hashtag": "यह हैशटैग अभी तक खाली है।",
+ "empty_column.home": "आपकी मुख्य कालक्रम अभी खली है. अन्य उपयोगकर्ताओं से मिलने के लिए और अपनी गतिविधियां शुरू करने के लिए या तो {public} पर जाएं या खोज का उपयोग करें।",
+ "empty_column.home.public_timeline": "सार्वजनिक कालक्रम",
+ "empty_column.list": "यह सूची अभी खाली है. जब इसके सदस्य कोई अभिव्यक्ति देंगे, तो वो यहां दिखाई देंगी.",
"empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
"empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
@@ -155,75 +170,80 @@
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
- "follow_request.authorize": "Authorize",
- "follow_request.reject": "Reject",
- "getting_started.developers": "Developers",
- "getting_started.directory": "Profile directory",
- "getting_started.documentation": "Documentation",
- "getting_started.heading": "Getting started",
- "getting_started.invite": "Invite people",
- "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
+ "errors.unexpected_crash.report_issue": "समस्या सूचित करें",
+ "follow_request.authorize": "अधिकार दें",
+ "follow_request.reject": "अस्वीकार करें",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "डेवॅलपर्स",
+ "getting_started.directory": "प्रोफ़ाइल निर्देशिका",
+ "getting_started.documentation": "प्रलेखन",
+ "getting_started.heading": "पहले कदम रखें",
+ "getting_started.invite": "दोस्तों को आमंत्रित करें",
+ "getting_started.open_source_notice": "मास्टोडॉन एक मुक्त स्रोत सॉफ्टवेयर है. आप गिटहब {github} पर इस सॉफ्टवेयर में योगदान या किसी भी समस्या को सूचित कर सकते है.",
+ "getting_started.security": "अकाउंट सेटिंग्स",
+ "getting_started.terms": "सेवा की शर्तें",
+ "hashtag.column_header.tag_mode.all": "और {additional}",
+ "hashtag.column_header.tag_mode.any": "या {additional}",
+ "hashtag.column_header.tag_mode.none": "बिना {additional}",
+ "hashtag.column_settings.select.no_options_message": "कोई सुझाव नहीं मिला",
+ "hashtag.column_settings.select.placeholder": "हैशटैग लिखें...",
+ "hashtag.column_settings.tag_mode.all": "यह सभी",
+ "hashtag.column_settings.tag_mode.any": "इनमें से कोई भी",
+ "hashtag.column_settings.tag_mode.none": "इनमें से कोई भी नहीं",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
- "home.column_settings.basic": "Basic",
- "home.column_settings.show_reblogs": "Show boosts",
- "home.column_settings.show_replies": "Show replies",
+ "home.column_settings.basic": "बुनियादी",
+ "home.column_settings.show_reblogs": "बूस्ट दिखाए",
+ "home.column_settings.show_replies": "जवाबों को दिखाए",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
- "introduction.federation.federated.headline": "Federated",
+ "introduction.federation.action": "अगला",
+ "introduction.federation.federated.headline": "फ़ेडरेटेड",
"introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
- "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.headline": "होम",
"introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
- "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.headline": "लोकल",
"introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
"introduction.interactions.action": "Finish toot-orial!",
- "introduction.interactions.favourite.headline": "Favourite",
+ "introduction.interactions.favourite.headline": "पसंदीदा",
"introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
- "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.headline": "बूस्ट",
"introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
- "introduction.interactions.reply.headline": "Reply",
+ "introduction.interactions.reply.headline": "जवाब",
"introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "First steps",
+ "introduction.welcome.action": "आइए शुरू करते हैं!",
+ "introduction.welcome.headline": "पहले कदम",
"introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
"keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
- "keyboard_shortcuts.compose": "to focus the compose textarea",
- "keyboard_shortcuts.description": "Description",
- "keyboard_shortcuts.direct": "to open direct messages column",
- "keyboard_shortcuts.down": "to move down in the list",
- "keyboard_shortcuts.enter": "to open status",
- "keyboard_shortcuts.favourite": "to favourite",
- "keyboard_shortcuts.favourites": "to open favourites list",
- "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.compose": "कंपोज़ टेक्स्ट-एरिया पर ध्यान केंद्रित करने के लिए",
+ "keyboard_shortcuts.description": "विवरण",
+ "keyboard_shortcuts.direct": "सीधा सन्देश कॉलम को खोलने के लिए",
+ "keyboard_shortcuts.down": "सूची में शामिल करने के लिए",
+ "keyboard_shortcuts.enter": "स्टेटस खोलने के लिए",
+ "keyboard_shortcuts.favourite": "पसंदीदा के लिए",
+ "keyboard_shortcuts.favourites": "पसंदीदा सूची खोलने के लिए",
+ "keyboard_shortcuts.federated": "फ़ैडरेटेड टाइम्लाइन खोलने के लिए",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
- "keyboard_shortcuts.home": "to open home timeline",
- "keyboard_shortcuts.hotkey": "Hotkey",
- "keyboard_shortcuts.legend": "to display this legend",
- "keyboard_shortcuts.local": "to open local timeline",
- "keyboard_shortcuts.mention": "to mention author",
- "keyboard_shortcuts.muted": "to open muted users list",
- "keyboard_shortcuts.my_profile": "to open your profile",
- "keyboard_shortcuts.notifications": "to open notifications column",
- "keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "to open author's profile",
- "keyboard_shortcuts.reply": "to reply",
- "keyboard_shortcuts.requests": "to open follow requests list",
- "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.home": "होम टाइम्लाइन खोलने के लिए",
+ "keyboard_shortcuts.hotkey": "हॉट-की",
+ "keyboard_shortcuts.legend": "इस लीजेंड को दिखाने के लिए",
+ "keyboard_shortcuts.local": "लोकल टाइम्लाइन खोलने के लिए",
+ "keyboard_shortcuts.mention": "लेखक को मेन्शन करने के लिए",
+ "keyboard_shortcuts.muted": "म्यूटेड यूजर की लिस्ट खोलने के लिए",
+ "keyboard_shortcuts.my_profile": "आपकी प्रोफाइल खोलने के लिए",
+ "keyboard_shortcuts.notifications": "नोटिफिकेशन कॉलम खोलने के लिए",
+ "keyboard_shortcuts.open_media": "to open media",
+ "keyboard_shortcuts.pinned": "पिनड टूट्स की लिस्ट खोलने के लिए",
+ "keyboard_shortcuts.profile": "लेखक की प्रोफाइल खोलने के लिए",
+ "keyboard_shortcuts.reply": "जवाब के लिए",
+ "keyboard_shortcuts.requests": "फॉलो रिक्वेस्ट लिस्ट खोलने के लिए",
+ "keyboard_shortcuts.search": "गहरी खोज के लिए",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -244,15 +264,16 @@
"lists.search": "Search among people you follow",
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "Loading...",
- "media_gallery.toggle_visible": "Toggle visibility",
- "missing_indicator.label": "Not found",
- "missing_indicator.sublabel": "This resource could not be found",
+ "loading_indicator.label": "लोड हो रहा है...",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
+ "missing_indicator.label": "नहीं मिला",
+ "missing_indicator.sublabel": "यह संसाधन नहीं मिल सका।",
"mute_modal.hide_notifications": "Hide notifications from this user?",
- "navigation_bar.apps": "Mobile apps",
- "navigation_bar.blocks": "Blocked users",
- "navigation_bar.community_timeline": "Local timeline",
- "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.apps": "मोबाइल एप्लिकेशंस",
+ "navigation_bar.blocks": "ब्लॉक्ड यूज़र्स",
+ "navigation_bar.bookmarks": "Bookmarks",
+ "navigation_bar.community_timeline": "लोकल टाइम्लाइन",
+ "navigation_bar.compose": "नया टूट् लिखें",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
@@ -273,63 +294,67 @@
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications",
"notifications.column_settings.favourite": "Favourites:",
- "notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
- "notifications.column_settings.follow": "New followers:",
- "notifications.column_settings.mention": "Mentions:",
- "notifications.column_settings.poll": "Poll results:",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.reblog": "Boosts:",
- "notifications.column_settings.show": "Show in column",
- "notifications.column_settings.sound": "Play sound",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Boosts",
- "notifications.filter.favourites": "Favourites",
- "notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
- "notifications.group": "{count} notifications",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
+ "notifications.column_settings.filter_bar.advanced": "सभी श्रेणियाँ दिखाएं",
+ "notifications.column_settings.filter_bar.category": "फ़िल्टर बार",
+ "notifications.column_settings.filter_bar.show": "दिखाएँ",
+ "notifications.column_settings.follow": "नए फ़ॉलोअर्स",
+ "notifications.column_settings.follow_request": "New follow requests:",
+ "notifications.column_settings.mention": "उल्लेख:",
+ "notifications.column_settings.poll": "चुनाव परिणाम",
+ "notifications.column_settings.push": "पुश सूचनाएँ",
+ "notifications.column_settings.reblog": "बूस्ट:",
+ "notifications.column_settings.show": "कॉलम में दिखाएँ",
+ "notifications.column_settings.sound": "ध्वनि चलाएँ",
+ "notifications.filter.all": "सभी",
+ "notifications.filter.boosts": "बूस्ट",
+ "notifications.filter.favourites": "पसंदीदा",
+ "notifications.filter.follows": "फॉलो",
+ "notifications.filter.mentions": "उल्लेख",
+ "notifications.filter.polls": "चुनाव परिणाम",
+ "notifications.group": "{count} सूचनाएँ",
+ "poll.closed": "बंद कर दिया",
+ "poll.refresh": "रीफ्रेश करें",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
+ "poll.vote": "वोट",
+ "poll.voted": "आपने इसी उत्तर का चुनाव किया है।",
"poll_button.add_poll": "Add a poll",
"poll_button.remove_poll": "Remove poll",
"privacy.change": "Adjust status privacy",
"privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
+ "privacy.direct.short": "सीधा",
"privacy.private.long": "Post to followers only",
"privacy.private.short": "Followers-only",
- "privacy.public.long": "Post to public timelines",
- "privacy.public.short": "Public",
+ "privacy.public.long": "सार्वजनिक टाइम्लाइन पर भेजें",
+ "privacy.public.short": "सार्वजनिक",
"privacy.unlisted.long": "Do not show in public timelines",
- "privacy.unlisted.short": "Unlisted",
- "refresh": "Refresh",
- "regeneration_indicator.label": "Loading…",
+ "privacy.unlisted.short": "अनलिस्टेड",
+ "refresh": "रीफ्रेश करें",
+ "regeneration_indicator.label": "लोड हो रहा है...",
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
"relative_time.days": "{number}d",
"relative_time.hours": "{number}h",
- "relative_time.just_now": "now",
+ "relative_time.just_now": "अभी",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
- "reply_indicator.cancel": "Cancel",
+ "relative_time.today": "today",
+ "reply_indicator.cancel": "रद्द करें",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
"report.placeholder": "Additional comments",
- "report.submit": "Submit",
+ "report.submit": "सबमिट करें",
"report.target": "Report {target}",
- "search.placeholder": "Search",
+ "search.placeholder": "खोजें",
"search_popout.search_format": "Advanced search format",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
@@ -363,55 +389,63 @@
"status.pin": "Pin on profile",
"status.pinned": "Pinned toot",
"status.read_more": "Read more",
- "status.reblog": "Boost",
+ "status.reblog": "बूस्ट",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
- "status.reply": "Reply",
+ "status.remove_bookmark": "Remove bookmark",
+ "status.reply": "जवाब",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
- "status.sensitive_warning": "Sensitive content",
- "status.share": "Share",
- "status.show_less": "Show less",
+ "status.sensitive_warning": "संवेदनशील विषय वस्तु",
+ "status.share": "शेयर करें",
+ "status.show_less": "कम दिखाएँ",
"status.show_less_all": "Show less for all",
- "status.show_more": "Show more",
+ "status.show_more": "और दिखाएँ",
"status.show_more_all": "Show more for all",
"status.show_thread": "Show thread",
- "status.uncached_media_warning": "Not available",
+ "status.uncached_media_warning": "अनुपलब्ध",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "You might be interested in…",
- "tabs_bar.federated_timeline": "Federated",
- "tabs_bar.home": "Home",
- "tabs_bar.local_timeline": "Local",
- "tabs_bar.notifications": "Notifications",
- "tabs_bar.search": "Search",
+ "tabs_bar.federated_timeline": "फ़ेडरेटेड",
+ "tabs_bar.home": "होम",
+ "tabs_bar.local_timeline": "लोकल",
+ "tabs_bar.notifications": "सूचनाएँ",
+ "tabs_bar.search": "खोजें",
"time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
- "upload_form.edit": "Edit",
- "upload_form.undo": "Delete",
+ "upload_form.edit": "संशोधन करें",
+ "upload_form.undo": "मिटाए",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
+ "upload_modal.apply": "लागू करें",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
+ "upload_modal.edit_media": "मीडिया में संशोधन करें",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preview_label": "Preview ({ratio})",
- "upload_progress.label": "Uploading...",
+ "upload_progress.label": "अपलोडिंग...",
"video.close": "Close video",
+ "video.download": "फाइल डाउनलोड करें",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 09298a7ad..48f776982 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
+ "account.badges.group": "Group",
"account.block": "Blokiraj @{name}",
"account.block_domain": "Sakrij sve sa {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain hidden",
@@ -38,10 +42,15 @@
"account.unfollow": "Prestani slijediti",
"account.unmute": "Poništi utišavanje @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "Možeš pritisnuti {combo} kako bi ovo preskočio sljedeći put",
"bundle_column_error.body": "Something went wrong while loading this component.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Blokirani korisnici",
+ "column.bookmarks": "Bookmarks",
"column.community": "Lokalni timeline",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.settings": "Postavke",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "Lokalni timeline je prazan. Napiši nešto javno kako bi pokrenuo stvari!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Autoriziraj",
"follow_request.reject": "Odbij",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Osnovno",
"home.column_settings.show_reblogs": "Pokaži boostove",
"home.column_settings.show_replies": "Pokaži odgovore",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blokirani korisnici",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Lokalni timeline",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Security",
"notification.favourite": "{name} je lajkao tvoj status",
"notification.follow": "{name} te sada slijedi",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} te je spomenuo",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} je podigao tvoj status",
"notifications.clear": "Očisti notifikacije",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "Novi sljedbenici:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Spominjanja:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
@@ -322,6 +346,7 @@
"relative_time.just_now": "now",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Otkaži",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "Ovaj post ne može biti boostan",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} je podigao",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Odgovori",
"status.replyAll": "Odgovori na temu",
"status.report": "Prijavi @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Dodaj media",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
"upload_form.undo": "Poništi",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploadam...",
"video.close": "Close video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index c35c943e6..2ea401870 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -1,9 +1,13 @@
{
- "account.add_or_remove_from_list": "Hozzáadás és elvétel listáról",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Hozzáadás vagy eltávolítás a listáról",
"account.badges.bot": "Bot",
+ "account.badges.group": "Csoport",
"account.block": "@{name} letiltása",
"account.block_domain": "Minden elrejtése innen: {domain}",
"account.blocked": "Letiltva",
+ "account.browse_more_on_origin_server": "További böngészés az eredeti profilon",
"account.cancel_follow_request": "Követési kérelem törlése",
"account.direct": "Közvetlen üzenet @{name} számára",
"account.domain_blocked": "Rejtett domain",
@@ -12,13 +16,13 @@
"account.follow": "Követés",
"account.followers": "Követő",
"account.followers.empty": "Ezt a felhasználót még senki sem követi.",
- "account.follows": "Követett",
+ "account.follows": "Követések",
"account.follows.empty": "Ez a felhasználó még senkit sem követ.",
"account.follows_you": "Követ téged",
"account.hide_reblogs": "@{name} megtolásainak némítása",
"account.last_status": "Utoljára aktív",
"account.link_verified_on": "A linket ellenőriztük: {date}",
- "account.locked_info": "Ez a fiók zárt. A tulaj engedélyezi, ki követheti őt.",
+ "account.locked_info": "Ez a fiók zárt. A tulajdonos engedélyezi, hogy ki követheti őt.",
"account.media": "Média",
"account.mention": "@{name} említése",
"account.moved_to": "{name} átköltözött:",
@@ -27,7 +31,7 @@
"account.muted": "Némítva",
"account.never_active": "Soha",
"account.posts": "Tülkölés",
- "account.posts_with_replies": "Tülkölés válaszokkal",
+ "account.posts_with_replies": "Tülkölés és válaszok",
"account.report": "@{name} jelentése",
"account.requested": "Engedélyre vár. Kattints a követési kérés visszavonásához",
"account.share": "@{name} profiljának megosztása",
@@ -38,10 +42,15 @@
"account.unfollow": "Követés vége",
"account.unmute": "@{name} némítás feloldása",
"account.unmute_notifications": "@{name} némított értesítéseinek feloldása",
- "alert.rate_limited.message": "Kérlek, próbáld újra {retry_time, time, medium}.",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Próbáld újra {retry_time, time, medium} után.",
"alert.rate_limited.title": "Forgalomkorlátozás",
"alert.unexpected.message": "Váratlan hiba történt.",
"alert.unexpected.title": "Hoppá!",
+ "announcement.announcement": "Közlemény",
"autosuggest_hashtag.per_week": "{count}/hét",
"boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}",
"bundle_column_error.body": "Hiba történt a komponens betöltése közben.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Hiba történt a komponens betöltésekor.",
"bundle_modal_error.retry": "Próbáld újra",
"column.blocks": "Letiltott felhasználók",
+ "column.bookmarks": "Könyvjelzők",
"column.community": "Helyi idővonal",
"column.direct": "Közvetlen üzenetek",
"column.directory": "Profilok böngészése",
@@ -71,40 +81,44 @@
"column_header.show_settings": "Beállítások mutatása",
"column_header.unpin": "Kitűzés eltávolítása",
"column_subheading.settings": "Beállítások",
+ "community.column_settings.local_only": "Csak helyi",
"community.column_settings.media_only": "Csak média",
+ "community.column_settings.remote_only": "Csak távoli",
"compose_form.direct_message_warning": "Ezt a tülköt csak a benne megemlített felhasználók láthatják majd.",
- "compose_form.direct_message_warning_learn_more": "Több infó",
+ "compose_form.direct_message_warning_learn_more": "Tudj meg többet",
"compose_form.hashtag_warning": "Ez a tülköd nem fog megjelenni semmilyen hashtag alatt mivel listázatlan. Csak nyilvános tülkök kereshetőek hashtaggel.",
"compose_form.lock_disclaimer": "A fiókod nincs {locked}. Bárki követni tud, hogy megtekintse a kizárólag követőknek szánt üzeneteidet.",
"compose_form.lock_disclaimer.lock": "lezárva",
"compose_form.placeholder": "Mi jár a fejedben?",
"compose_form.poll.add_option": "Lehetőség hozzáadása",
"compose_form.poll.duration": "Szavazás időtartama",
- "compose_form.poll.option_placeholder": "Lehetőség {number}",
+ "compose_form.poll.option_placeholder": "{number}. lehetőség",
"compose_form.poll.remove_option": "Lehetőség törlése",
+ "compose_form.poll.switch_to_multiple": "Szavazás megváltoztatása több választásosra",
+ "compose_form.poll.switch_to_single": "Szavazás megváltoztatása egyetlen választásosra",
"compose_form.publish": "Tülk",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Média megjelölése szenzitívként",
- "compose_form.sensitive.marked": "A médiát szenzitívnek jelölték",
- "compose_form.sensitive.unmarked": "A médiát nem jelölték szenzitívnek",
+ "compose_form.sensitive.marked": "A médiát érzékenynek jelölték",
+ "compose_form.sensitive.unmarked": "A médiát nem jelölték érzékenynek",
"compose_form.spoiler.marked": "A szöveg figyelmeztetés mögé van rejtve",
"compose_form.spoiler.unmarked": "A szöveg nem rejtett",
"compose_form.spoiler_placeholder": "Írd ide a figyelmeztetést",
"confirmation_modal.cancel": "Mégse",
- "confirmations.block.block_and_report": "Letiltás és Bejelentés",
+ "confirmations.block.block_and_report": "Letiltás és jelentés",
"confirmations.block.confirm": "Letiltás",
- "confirmations.block.message": "Biztos, hogy le szeretnéd tiltani {name}?",
+ "confirmations.block.message": "Biztos, hogy letiltod: {name}?",
"confirmations.delete.confirm": "Törlés",
"confirmations.delete.message": "Biztos, hogy törölni szeretnéd ezt a tülkölést?",
"confirmations.delete_list.confirm": "Törlés",
"confirmations.delete_list.message": "Biztos, hogy véglegesen törölni szeretnéd ezt a listát?",
"confirmations.domain_block.confirm": "Teljes domain elrejtése",
- "confirmations.domain_block.message": "Egészen biztos, hogy le szeretnéd tiltani a teljes {domain}-t? A legtöbb esetben néhány célzott tiltás vagy némítás elegendő és kívánatosabb megoldás. Semmilyen tartalmat nem fogsz látni ebből a domainből se idővonalakon, se értesítésekben. Az ebben a domainben lévő követőidet is eltávolítjuk.",
+ "confirmations.domain_block.message": "Biztos, hogy le szeretnéd tiltani a teljes {domain} domaint? A legtöbb esetben néhány célzott tiltás vagy némítás elegendő, és kívánatosabb megoldás. Semmilyen tartalmat nem fogsz látni ebből a domainből se az idővonalakon, se az értesítésekben. Az ebben a domainben lévő követőidet is eltávolítjuk.",
"confirmations.logout.confirm": "Kijelentkezés",
- "confirmations.logout.message": "Biztosan ki akar jelentkezni?",
+ "confirmations.logout.message": "Biztos, hogy kijelentkezel?",
"confirmations.mute.confirm": "Némítás",
- "confirmations.mute.explanation": "Ez elrejti a tőlük érkező posztokat, valamint az őket megemlítőket, de ők továbbra is láthatják a te posztjaidat és követhetnek is téged.",
- "confirmations.mute.message": "Biztos, hogy némítani szeretnéd {name}?",
+ "confirmations.mute.explanation": "Ez elrejti a tőlük érkező bejegyzéseket, valamint az őket megemlítőket, de ők továbbra is láthatják a te bejegyzéseid, és követhetnek is téged.",
+ "confirmations.mute.message": "Biztos, hogy némítod: {name}?",
"confirmations.redraft.confirm": "Törlés és újraírás",
"confirmations.redraft.message": "Biztos, hogy ezt a tülköt szeretnéd törölni és újraírni? Minden megtolást és kedvencnek jelölést elvesztesz, az eredetire adott válaszok pedig elárvulnak.",
"confirmations.reply.confirm": "Válasz",
@@ -116,18 +130,18 @@
"conversation.open": "Beszélgetés megtekintése",
"conversation.with": "{names}-el/al",
"directory.federated": "Az ismert fediverzumból",
- "directory.local": "Csak {domain}-ból/ből",
+ "directory.local": "Csak innen: {domain}",
"directory.new_arrivals": "Új csatlakozók",
"directory.recently_active": "Nemrég aktív",
"embed.instructions": "Ágyazd be ezt a tülköt a weboldaladba az alábbi kód kimásolásával.",
"embed.preview": "Így fog kinézni:",
- "emoji_button.activity": "Aktivitás",
+ "emoji_button.activity": "Tevékenység",
"emoji_button.custom": "Egyéni",
"emoji_button.flags": "Zászlók",
"emoji_button.food": "Étel és Ital",
- "emoji_button.label": "Emoji beszúrása",
+ "emoji_button.label": "Emodzsi beszúrása",
"emoji_button.nature": "Természet",
- "emoji_button.not_found": "Nincsenek emojik!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.not_found": "Nincsenek emodzsik!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Tárgyak",
"emoji_button.people": "Emberek",
"emoji_button.recent": "Gyakran használt",
@@ -136,8 +150,9 @@
"emoji_button.symbols": "Szimbólumok",
"emoji_button.travel": "Utazás és Helyek",
"empty_column.account_timeline": "Itt nincs tülkölés!",
- "empty_column.account_unavailable": "A profil nem elérhető",
+ "empty_column.account_unavailable": "A profil nem érhető el",
"empty_column.blocks": "Még senkit sem tiltottál le.",
+ "empty_column.bookmarked_statuses": "Még nincs egyetlen könyvjelzőzött tülköd sem. Ha könyvjelzőzöl egyet, itt fog megjelenni.",
"empty_column.community": "A helyi idővonal üres. Tülkölj egyet nyilvánosan, hogy elindítsd az eseményeket!",
"empty_column.direct": "Még nincs egy közvetlen üzeneted sem. Ha küldesz vagy kapsz egyet, itt fog megjelenni.",
"empty_column.domain_blocks": "Még nem rejtettél el egyetlen domaint sem.",
@@ -145,8 +160,8 @@
"empty_column.favourites": "Még senki sem jelölte ezt a tülköt kedvencként. Ha valaki mégis megteszi, itt fogjuk mutatni.",
"empty_column.follow_requests": "Még nincs egy követési kérésed sem. Ha kapsz egyet, itt fogjuk feltüntetni.",
"empty_column.hashtag": "Jelenleg nem található semmi ezzel a hashtaggel.",
- "empty_column.home": "A saját idővonalad üres! Látogasd meg a {public} -at vagy használd a keresőt, hogy megismerj másokat.",
- "empty_column.home.public_timeline": "nyilvános idővonal",
+ "empty_column.home": "A saját idővonalad üres! Látogasd meg a {public} oldalt vagy használd a keresőt, hogy megismerj másokat.",
+ "empty_column.home.public_timeline": "a nyilvános idővonal",
"empty_column.list": "A lista jelenleg üres. Ha a listatagok tülkölnek, itt fognak megjelenni.",
"empty_column.lists": "Még nem hoztál létre listát. Ha csinálsz egyet, itt látszik majd.",
"empty_column.mutes": "Még egy felhasználót sem némítottál le.",
@@ -154,40 +169,43 @@
"empty_column.public": "Jelenleg itt nincs semmi! Írj valamit nyilvánosan vagy kövess más szervereken levő felhasználókat, hogy megtöltsd",
"error.unexpected_crash.explanation": "Egy hiba vagy böngésző inkompatibilitás miatt ez az oldal nem jeleníthető meg rendesen.",
"error.unexpected_crash.next_steps": "Próbáld frissíteni az oldalt. Ha ez nem segít, egy másik böngészőn vagy appon keresztül még mindig használhatod a Mastodont.",
- "errors.unexpected_crash.copy_stacktrace": "Stacktrace vágólapra másolása",
- "errors.unexpected_crash.report_issue": "Probléma bejelentése",
+ "errors.unexpected_crash.copy_stacktrace": "Veremkiíratás vágólapra másolása",
+ "errors.unexpected_crash.report_issue": "Probléma jelentése",
"follow_request.authorize": "Engedélyezés",
- "follow_request.reject": "Visszautasítás",
+ "follow_request.reject": "Elutasítás",
+ "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.",
"getting_started.developers": "Fejlesztőknek",
"getting_started.directory": "Profilok",
"getting_started.documentation": "Dokumentáció",
"getting_started.heading": "Első lépések",
"getting_started.invite": "Mások meghívása",
- "getting_started.open_source_notice": "A Mastodon nyílt forráskódú szoftver. Csatlakozhatsz a fejlesztéshez vagy jelenthetsz problémákat GitHub-on {github}.",
- "getting_started.security": "Biztonság",
+ "getting_started.open_source_notice": "A Mastodon nyílt forráskódú szoftver. Közreműködhetsz vagy problémákat jelenthetsz a GitHubon: {github}.",
+ "getting_started.security": "Fiókbeállítások",
"getting_started.terms": "Felhasználási feltételek",
"hashtag.column_header.tag_mode.all": "és {additional}",
"hashtag.column_header.tag_mode.any": "vagy {additional}",
- "hashtag.column_header.tag_mode.none": "nélküle {additional}",
+ "hashtag.column_header.tag_mode.none": "{additional} nélkül",
"hashtag.column_settings.select.no_options_message": "Nincs javaslat",
"hashtag.column_settings.select.placeholder": "Addj meg hashtageket…",
"hashtag.column_settings.tag_mode.all": "Mindegyik",
"hashtag.column_settings.tag_mode.any": "Bármelyik",
"hashtag.column_settings.tag_mode.none": "Egyik sem",
- "hashtag.column_settings.tag_toggle": "Új tagek felvétele ehhez az oszlophoz",
- "home.column_settings.basic": "Alapértelmezések",
+ "hashtag.column_settings.tag_toggle": "Új címkék felvétele ehhez az oszlophoz",
+ "home.column_settings.basic": "Alapvető",
"home.column_settings.show_reblogs": "Megtolások mutatása",
"home.column_settings.show_replies": "Válaszok mutatása",
+ "home.hide_announcements": "Közlemények elrejtése",
+ "home.show_announcements": "Közlemények mutatása",
"intervals.full.days": "{number, plural, one {# nap} other {# nap}}",
"intervals.full.hours": "{number, plural, one {# óra} other {# óra}}",
"intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}",
"introduction.federation.action": "Következő",
"introduction.federation.federated.headline": "Föderációs",
"introduction.federation.federated.text": "A fediverzum más szervereiről származó nyilvános tülkök a föderációs idővonalon jelennek meg.",
- "introduction.federation.home.headline": "Saját",
- "introduction.federation.home.text": "A saját idővonaladon az általad követettek tülkjei jelennek meg. Bárkit követhetsz bármely szerveren.",
+ "introduction.federation.home.headline": "Kezdőlap",
+ "introduction.federation.home.text": "A saját idővonaladon az általad követett emberek tülkjei jelennek meg. Bárkit követhetsz, bármelyik kiszolgálón.",
"introduction.federation.local.headline": "Helyi",
- "introduction.federation.local.text": "A helyi idővonalon a veled közös szerveren lévő emberek nyilvános tülkjei jelennek meg.",
+ "introduction.federation.local.text": "A helyi idővonalon a veled közös kiszolgálón lévő emberek nyilvános tülkjei jelennek meg.",
"introduction.interactions.action": "Oktatóanyag befejezése!",
"introduction.interactions.favourite.headline": "Kedvenc",
"introduction.interactions.favourite.text": "A kedvenc funkcióval elrakhatsz későbbre egy tülköt, illetve közölheted a szerzővel, hogy tetszett a megosztása.",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "némított felhasználók listájának megnyitása",
"keyboard_shortcuts.my_profile": "profilod megnyitása",
"keyboard_shortcuts.notifications": "értesítések megnyitása",
+ "keyboard_shortcuts.open_media": "média megnyitása",
"keyboard_shortcuts.pinned": "kitűzött tülkök listájának megnyitása",
"keyboard_shortcuts.profile": "szerző profiljának megnyitása",
"keyboard_shortcuts.reply": "válasz",
"keyboard_shortcuts.requests": "követési kérések listájának megnyitása",
"keyboard_shortcuts.search": "fókuszálás a keresőre",
+ "keyboard_shortcuts.spoilers": "CW mező mutatása/elrejtése",
"keyboard_shortcuts.start": "\"Első lépések\" megnyitása",
"keyboard_shortcuts.toggle_hidden": "tartalmi figyelmeztetéssel ellátott szöveg mutatása/elrejtése",
"keyboard_shortcuts.toggle_sensitivity": "média mutatása/elrejtése",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Rejtsük el a felhasználótól származó értesítéseket?",
"navigation_bar.apps": "Mobil appok",
"navigation_bar.blocks": "Letiltott felhasználók",
+ "navigation_bar.bookmarks": "Könyvjelzők",
"navigation_bar.community_timeline": "Helyi idővonal",
"navigation_bar.compose": "Új tülk írása",
"navigation_bar.direct": "Közvetlen üzenetek",
@@ -261,7 +282,7 @@
"navigation_bar.filters": "Némított szavak",
"navigation_bar.follow_requests": "Követési kérelmek",
"navigation_bar.follows_and_followers": "Követettek és követők",
- "navigation_bar.info": "Erről a szerverről",
+ "navigation_bar.info": "Erről a kiszolgálóról",
"navigation_bar.keyboard_shortcuts": "Gyorsbillentyűk",
"navigation_bar.lists": "Listák",
"navigation_bar.logout": "Kijelentkezés",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Biztonság",
"notification.favourite": "{name} kedvencnek jelölte egy tülködet",
"notification.follow": "{name} követ téged",
+ "notification.follow_request": "{name} követni szeretne téged",
"notification.mention": "{name} megemlített",
+ "notification.own_poll": "A szavazásod véget ért",
"notification.poll": "Egy szavazás, melyben részt vettél, véget ért",
"notification.reblog": "{name} megtolta a tülködet",
"notifications.clear": "Értesítések törlése",
@@ -284,7 +307,8 @@
"notifications.column_settings.filter_bar.category": "Gyorskereső mező",
"notifications.column_settings.filter_bar.show": "Mutat",
"notifications.column_settings.follow": "Új követők:",
- "notifications.column_settings.mention": "Megemlítéseid:",
+ "notifications.column_settings.follow_request": "Új követési kérelmek:",
+ "notifications.column_settings.mention": "Megemlítések:",
"notifications.column_settings.poll": "Szavazás eredménye:",
"notifications.column_settings.push": "Push értesítések",
"notifications.column_settings.reblog": "Megtolások:",
@@ -317,23 +341,24 @@
"refresh": "Frissítés",
"regeneration_indicator.label": "Töltődik…",
"regeneration_indicator.sublabel": "A saját idővonalad épp készül!",
- "relative_time.days": "{number}nap",
+ "relative_time.days": "{number}n",
"relative_time.hours": "{number}ó",
"relative_time.just_now": "most",
"relative_time.minutes": "{number}p",
"relative_time.seconds": "{number}mp",
+ "relative_time.today": "ma",
"reply_indicator.cancel": "Mégsem",
- "report.forward": "Továbbítás neki {target}",
- "report.forward_hint": "Ez a fiók egy másik szerverről van. Küldjünk oda is egy anonimizált bejelentést?",
+ "report.forward": "Továbbítás: {target}",
+ "report.forward_hint": "Ez a fiók egy másik kiszolgálóról van. Oda is elküldöd a jelentés egy anonimizált másolatát?",
"report.hint": "A bejelentést a szervered moderátorainak küldjük el. Megmagyarázhatod, miért jelented az alábbi problémát:",
"report.placeholder": "További megjegyzések",
"report.submit": "Küldés",
"report.target": "{target} jelentése",
"search.placeholder": "Keresés",
- "search_popout.search_format": "Haladó keresés",
+ "search_popout.search_format": "Speciális keresés",
"search_popout.tips.full_text": "Egyszerű szöveg. Illeszkedő, általad írt tülköket, kedvencnek jelöléseket, megtolást, megemlítést, felhasználói nevet, megjelenített nevet, hashtageket ad majd vissza.",
"search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "tülk",
+ "search_popout.tips.status": "állapot",
"search_popout.tips.text": "Egyszerű szöveg. Illeszkedő megjelenített nevet, felhasználói nevet, hashtageket ad majd vissza",
"search_popout.tips.user": "felhasználó",
"search_results.accounts": "Emberek",
@@ -344,6 +369,7 @@
"status.admin_account": "Moderáció megnyitása @{name} felhasználóhoz",
"status.admin_status": "Tülk megnyitása moderációra",
"status.block": "@{name} letiltása",
+ "status.bookmark": "Könyvjelzőzés",
"status.cancel_reblog_private": "Megtolás törlése",
"status.cannot_reblog": "Ez a tülk nem tolható meg",
"status.copy": "Link másolása tülkbe",
@@ -368,23 +394,24 @@
"status.reblogged_by": "{name} megtolta",
"status.reblogs.empty": "Senki sem tolta még meg ezt a tülköt. Ha valaki megteszi, itt fog megjelenni.",
"status.redraft": "Törlés és újraírás",
+ "status.remove_bookmark": "Könyvjelző eltávolítása",
"status.reply": "Válasz",
"status.replyAll": "Válasz a beszélgetésre",
"status.report": "@{name} jelentése",
- "status.sensitive_warning": "Szenzitív tartalom",
+ "status.sensitive_warning": "Érzékeny tartalom",
"status.share": "Megosztás",
- "status.show_less": "Kevesebbet",
+ "status.show_less": "Kevesebb megjelenítése",
"status.show_less_all": "Kevesebbet mindenhol",
"status.show_more": "Többet",
"status.show_more_all": "Többet mindenhol",
"status.show_thread": "Szál mutatása",
- "status.uncached_media_warning": "Nem elérhető",
+ "status.uncached_media_warning": "Nem érhető el",
"status.unmute_conversation": "Beszélgetés némításának kikapcsolása",
"status.unpin": "Kitűzés eltávolítása a profilodról",
"suggestions.dismiss": "Javaslat elvetése",
"suggestions.header": "Esetleg érdekelhet…",
"tabs_bar.federated_timeline": "Föderációs",
- "tabs_bar.home": "Saját",
+ "tabs_bar.home": "Kezdőlap",
"tabs_bar.local_timeline": "Helyi",
"tabs_bar.notifications": "Értesítések",
"tabs_bar.search": "Keresés",
@@ -393,18 +420,24 @@
"time_remaining.minutes": "{number, plural, one {# perc} other {# perc}} van hátra",
"time_remaining.moments": "Pillanatok vannak hátra",
"time_remaining.seconds": "{number, plural, one {# másodperc} other {# másodperc}} van hátra",
+ "timeline_hint.remote_resource_not_displayed": "más szerverekről származó {resource} tartalmakat nem mutatjuk.",
+ "timeline_hint.resources.followers": "Követő",
+ "timeline_hint.resources.follows": "Követett",
+ "timeline_hint.resources.statuses": "Régi tülkök",
"trends.count_by_accounts": "{count} {rawCount, plural, one {résztvevő} other {résztvevő}} beszélget",
- "trends.trending_now": "Most trendi",
- "ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Mastodon-t.",
+ "trends.trending_now": "Most felkapott",
+ "ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Mastodont.",
"upload_area.title": "Húzd ide a feltöltéshez",
- "upload_button.label": "Média hozzáadása (JPEG, PNG, GIF, WebM, MP4, MOV)",
- "upload_error.limit": "Túllépted a fájl feltöltési limitet.",
+ "upload_button.label": "Média hozzáadása ({formats})",
+ "upload_error.limit": "Túllépted a fájlfeltöltési korlátot.",
"upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.",
+ "upload_form.audio_description": "Írja le a hallássérültek számára",
"upload_form.description": "Leírás látáskorlátozottak számára",
"upload_form.edit": "Szerkesztés",
- "upload_form.undo": "Mégsem",
+ "upload_form.undo": "Törlés",
+ "upload_form.video_description": "Írja le a hallás- vagy látássérültek számára",
"upload_modal.analyzing_picture": "Kép elemzése…",
- "upload_modal.apply": "Alkalmazás",
+ "upload_modal.apply": "Alkalmaz",
"upload_modal.description_placeholder": "A gyors, barna róka átugrik a lusta kutya fölött",
"upload_modal.detect_text": "Szöveg felismerése a képről",
"upload_modal.edit_media": "Média szerkesztése",
@@ -412,12 +445,13 @@
"upload_modal.preview_label": "Előnézet ({ratio})",
"upload_progress.label": "Feltöltés...",
"video.close": "Videó bezárása",
+ "video.download": "Fájl letöltése",
"video.exit_fullscreen": "Kilépés teljes képernyőből",
"video.expand": "Videó nagyítása",
"video.fullscreen": "Teljes képernyő",
"video.hide": "Videó elrejtése",
- "video.mute": "Hang némitása",
+ "video.mute": "Hang némítása",
"video.pause": "Szünet",
"video.play": "Lejátszás",
- "video.unmute": "Hang némitásának vége"
+ "video.unmute": "Hang némításának vége"
}
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 69af86bf2..4c1547a69 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -1,61 +1,71 @@
{
- "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Աւելացնել կամ հեռացնել ցանկերից",
"account.badges.bot": "Բոտ",
+ "account.badges.group": "Խումբ",
"account.block": "Արգելափակել @{name}֊ին",
- "account.block_domain": "Թաքցնել ամենը հետեւյալ տիրույթից՝ {domain}",
- "account.blocked": "Blocked",
- "account.cancel_follow_request": "Cancel follow request",
- "account.direct": "Direct Message @{name}",
- "account.domain_blocked": "Domain hidden",
+ "account.block_domain": "Թաքցնել ամէնը հետեւեալ տիրոյթից՝ {domain}",
+ "account.blocked": "Արգելափակուած է",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "չեղարկել հետեւելու հայցը",
+ "account.direct": "Նամակ գրել @{name} -ին",
+ "account.domain_blocked": "Տիրոյթը արգելափակուած է",
"account.edit_profile": "Խմբագրել անձնական էջը",
- "account.endorse": "Feature on profile",
+ "account.endorse": "Ցուցադրել անձնական էջում",
"account.follow": "Հետեւել",
"account.followers": "Հետեւողներ",
- "account.followers.empty": "No one follows this user yet.",
+ "account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։",
"account.follows": "Հետեւում է",
- "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։",
"account.follows_you": "Հետեւում է քեզ",
"account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները",
- "account.last_status": "Last active",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
- "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.last_status": "Վերջին թութը",
+ "account.link_verified_on": "Սոյն յղման տիրապետումը ստուգուած է՝ {date}֊ին",
+ "account.locked_info": "Սոյն հաշուի գաղտնիութեան մակարդակը նշուած է որպէս՝ փակ։ Հաշուի տէրն ընտրում է, թէ ով կարող է հետեւել իրեն։",
"account.media": "Մեդիա",
"account.mention": "Նշել @{name}֊ին",
- "account.moved_to": "{name}֊ը տեղափոխվել է՝",
+ "account.moved_to": "{name}֊ը տեղափոխուել է՝",
"account.mute": "Լռեցնել @{name}֊ին",
"account.mute_notifications": "Անջատել ծանուցումները @{name}֊ից",
- "account.muted": "Muted",
- "account.never_active": "Never",
- "account.posts": "Գրառումներ",
- "account.posts_with_replies": "Toots with replies",
- "account.report": "Բողոքել @{name}֊ից",
+ "account.muted": "Լռեցուած",
+ "account.never_active": "Երբեք",
+ "account.posts": "Թութ",
+ "account.posts_with_replies": "Թթեր եւ պատասխաններ",
+ "account.report": "Բողոքել @{name}֊ի մասին",
"account.requested": "Հաստատման կարիք ունի։ Սեղմիր՝ հետեւելու հայցը չեղարկելու համար։",
- "account.share": "Կիսվել @{name}֊ի էջով",
+ "account.share": "Կիսուել @{name}֊ի էջով",
"account.show_reblogs": "Ցուցադրել @{name}֊ի տարածածները",
"account.unblock": "Ապաարգելափակել @{name}֊ին",
- "account.unblock_domain": "Ցուցադրել {domain} թաքցված տիրույթի գրառումները",
- "account.unendorse": "Don't feature on profile",
- "account.unfollow": "Չհետեւել",
+ "account.unblock_domain": "Ցուցադրել {domain} թաքցուած տիրոյթի գրառումները",
+ "account.unendorse": "Չցուցադրել անձնական էջում",
+ "account.unfollow": "Ապահետեւել",
"account.unmute": "Ապալռեցնել @{name}֊ին",
"account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
- "alert.unexpected.message": "An unexpected error occurred.",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Փորձէք որոշ ժամանակ անց՝ {retry_time, time, medium}։",
+ "alert.rate_limited.title": "Գործողութիւնների յաճախութիւնը գերազանցում է թոյլատրելին",
+ "alert.unexpected.message": "Անսպասելի սխալ տեղի ունեցաւ։",
"alert.unexpected.title": "Վա՜յ",
- "autosuggest_hashtag.per_week": "{count} per week",
- "boost_modal.combo": "Կարող ես սեղմել {combo}՝ սա հաջորդ անգամ բաց թողնելու համար",
- "bundle_column_error.body": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանվեց։",
+ "announcement.announcement": "Յայտարարութիւններ",
+ "autosuggest_hashtag.per_week": "շաբաթը՝ {count}",
+ "boost_modal.combo": "Կարող ես սեղմել {combo}՝ սա յաջորդ անգամ բաց թողնելու համար",
+ "bundle_column_error.body": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։",
"bundle_column_error.retry": "Կրկին փորձել",
"bundle_column_error.title": "Ցանցային սխալ",
"bundle_modal_error.close": "Փակել",
"bundle_modal_error.message": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանվեց։",
"bundle_modal_error.retry": "Կրկին փորձել",
"column.blocks": "Արգելափակված օգտատերեր",
+ "column.bookmarks": "Էջանիշեր",
"column.community": "Տեղական հոսք",
- "column.direct": "Direct messages",
- "column.directory": "Browse profiles",
- "column.domain_blocks": "Hidden domains",
- "column.favourites": "Հավանածներ",
+ "column.direct": "Հասցէագրուած հաղորդագրութիւններ",
+ "column.directory": "Զննել անձնական էջերը",
+ "column.domain_blocks": "Թաքցուած տիրոյթները",
+ "column.favourites": "Հաւանածներ",
"column.follow_requests": "Հետեւելու հայցեր",
"column.home": "Հիմնական",
"column.lists": "Ցանկեր",
@@ -65,33 +75,37 @@
"column.public": "Դաշնային հոսք",
"column_back_button.label": "Ետ",
"column_header.hide_settings": "Թաքցնել կարգավորումները",
- "column_header.moveLeft_settings": "Տեղաշարժել սյունը ձախ",
- "column_header.moveRight_settings": "Տեղաշարժել սյունը աջ",
+ "column_header.moveLeft_settings": "Տեղաշարժել սիւնը ձախ",
+ "column_header.moveRight_settings": "Տեղաշարժել սիւնը աջ",
"column_header.pin": "Ամրացնել",
"column_header.show_settings": "Ցուցադրել կարգավորումները",
"column_header.unpin": "Հանել",
"column_subheading.settings": "Կարգավորումներ",
+ "community.column_settings.local_only": "Միայն ներքին",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Միայն հեռակա",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
- "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.direct_message_warning_learn_more": "Իմանալ ավելին",
"compose_form.hashtag_warning": "Այս թութը չի հաշվառվի որեւէ պիտակի տակ, քանզի այն ծածուկ է։ Միայն հրապարակային թթերը հնարավոր է որոնել պիտակներով։",
- "compose_form.lock_disclaimer": "Քո հաշիվը {locked} չէ։ Յուրաքանչյուր ոք կարող է հետեւել քեզ եւ տեսնել միայն հետեւողների համար նախատեսված գրառումները։",
+ "compose_form.lock_disclaimer": "Քո հաշիւը {locked} չէ։ Իւրաքանչիւրութիւն ոք կարող է հետեւել քեզ եւ տեսնել միայն հետեւողների համար նախատեսուած գրառումները։",
"compose_form.lock_disclaimer.lock": "փակ",
"compose_form.placeholder": "Ի՞նչ կա մտքիդ",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Աւելացնել տարբերակ",
+ "compose_form.poll.duration": "Հարցման տեւողութիւնը",
+ "compose_form.poll.option_placeholder": "Տարբերակ {number}",
+ "compose_form.poll.remove_option": "Հեռացնել այս տարբերակը",
+ "compose_form.poll.switch_to_multiple": "Հարցումը դարձնել բազմակի ընտրութեամբ",
+ "compose_form.poll.switch_to_single": "Հարցումը դարձնել եզակի ընտրութեամբ",
"compose_form.publish": "Թթել",
"compose_form.publish_loud": "Թթե՜լ",
- "compose_form.sensitive.hide": "Mark media as sensitive",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
- "compose_form.spoiler.marked": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.sensitive.hide": "Նշել մեդիան որպէս դիւրազգաց",
+ "compose_form.sensitive.marked": "Մեդիան նշուած է որպէս դիւրազգաց",
+ "compose_form.sensitive.unmarked": "Մեդիան նշուած չէ որպէս դիւրազգաց",
+ "compose_form.spoiler.marked": "Տեքստը թաքցուած է զգուշացման ետեւում",
+ "compose_form.spoiler.unmarked": "Տեքստը թաքցուած չէ",
"compose_form.spoiler_placeholder": "Գրիր նախազգուշացումդ այստեղ",
"confirmation_modal.cancel": "Չեղարկել",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Արգելափակել եւ բողոքել",
"confirmations.block.confirm": "Արգելափակել",
"confirmations.block.message": "Վստա՞հ ես, որ ուզում ես արգելափակել {name}֊ին։",
"confirmations.delete.confirm": "Ջնջել",
@@ -100,212 +114,222 @@
"confirmations.delete_list.message": "Վստա՞հ ես, որ ուզում ես մշտապես ջնջել այս ցանկը։",
"confirmations.domain_block.confirm": "Թաքցնել ամբողջ տիրույթը",
"confirmations.domain_block.message": "Հաստատ֊հաստա՞տ վստահ ես, որ ուզում ես արգելափակել ամբողջ {domain} տիրույթը։ Սովորաբար մի երկու թիրախավորված արգելափակում կամ լռեցում բավական է ու նախընտրելի։",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.logout.confirm": "Ելք",
+ "confirmations.logout.message": "Համոզո՞ւած ես, որ ուզում ես դուրս գալ",
"confirmations.mute.confirm": "Լռեցնել",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Սա թաքցնելու ա իրենց գրառումներն, ինչպէս նաեւ իրենց նշող գրառումներն, բայց իրենք միեւնոյն է կը կարողանան հետեւել ձեզ եւ տեսնել ձեր գրառումները։",
"confirmations.mute.message": "Վստա՞հ ես, որ ուզում ես {name}֊ին լռեցնել։",
- "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.confirm": "Ջնջել եւ խմբագրել նորից",
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "Պատասխանել",
+ "confirmations.reply.message": "Այս պահին պատասխանելը կը չեղարկի ձեր՝ այս պահին անաւարտ հաղորդագրութիւնը։ Համոզուա՞ծ էք։",
"confirmations.unfollow.confirm": "Ապահետեւել",
"confirmations.unfollow.message": "Վստա՞հ ես, որ ուզում ես այլեւս չհետեւել {name}֊ին։",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
- "embed.instructions": "Այս թութը քո կայքում ներդնելու համար կարող ես պատճենել ներքոհիշյալ կոդը։",
+ "conversation.delete": "Ջնջել խօսակցութիւնը",
+ "conversation.mark_as_read": "Նշել որպէս ընթերցուած",
+ "conversation.open": "Դիտել խօսակցութիւնը",
+ "conversation.with": "{names}֊երի հետ",
+ "directory.federated": "Յայտնի դաշնեզերքից",
+ "directory.local": "{domain} տիրոյթից միայն",
+ "directory.new_arrivals": "Նորեկներ",
+ "directory.recently_active": "Վերջերս ակտիւ",
+ "embed.instructions": "Այս թութը քո կայքում ներդնելու համար կարող ես պատճէնել ներքինանալ կոդը։",
"embed.preview": "Ահա, թե ինչ տեսք կունենա այն՝",
"emoji_button.activity": "Զբաղմունքներ",
"emoji_button.custom": "Հատուկ",
"emoji_button.flags": "Դրոշներ",
"emoji_button.food": "Կերուխում",
"emoji_button.label": "Էմոջի ավելացնել",
- "emoji_button.nature": "Բնություն",
+ "emoji_button.nature": "Բնութիւն",
"emoji_button.not_found": "Նման էմոջիներ դեռ չեն հայտնաբերվել։ (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Առարկաներ",
"emoji_button.people": "Մարդիկ",
"emoji_button.recent": "Հաճախ օգտագործվող",
"emoji_button.search": "Որոնել…",
- "emoji_button.search_results": "Որոնման արդյունքներ",
+ "emoji_button.search_results": "Որոնման արդիւնքներ",
"emoji_button.symbols": "Նշաններ",
- "emoji_button.travel": "Ուղեւորություն եւ տեղանքներ",
- "empty_column.account_timeline": "No toots here!",
- "empty_column.account_unavailable": "Profile unavailable",
- "empty_column.blocks": "You haven't blocked any users yet.",
+ "emoji_button.travel": "Ուղեւորութիւն եւ տեղանքներ",
+ "empty_column.account_timeline": "Այստեղ թթեր չկա՛ն։",
+ "empty_column.account_unavailable": "Անձնական էջը հասանելի չի",
+ "empty_column.blocks": "Դու դեռ ոչ մէկի չես արգելափակել։",
+ "empty_column.bookmarked_statuses": "Դու դեռ չունես որեւէ էջանշւած թութ։ Երբ էջանշես, դրանք կերեւան այստեղ։",
"empty_column.community": "Տեղական հոսքը դատա՛րկ է։ Հրապարակային մի բան գրիր շարժիչը խոդ տալու համար։",
- "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
- "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
- "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
- "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.direct": "Դու դեռ չունես ոչ մի հասցէագրուած հաղորդագրութիւն։ Երբ ուղարկես կամ ստանաս որեւէ անձնական նամակ, այն այստեղ կերեւայ։",
+ "empty_column.domain_blocks": "Թաքցուած տիրոյթներ դեռ չկան։",
+ "empty_column.favourited_statuses": "Դու դեռ չունես որեւէ հաւանած թութ։ Երբ հաւանես, դրանք կերեւան այստեղ։",
+ "empty_column.favourites": "Այս թութը ոչ մէկ դեռ չի հաւանել։ Հաւանողները կերեւան այստեղ, երբ նշեն թութը հաւանած։",
+ "empty_column.follow_requests": "Դու դեռ չունես որեւէ հետեւելու յայտ։ Բոլոր նման յայտերը կը յայտնուեն այստեղ։",
"empty_column.hashtag": "Այս պիտակով դեռ ոչինչ չկա։",
"empty_column.home": "Քո հիմնական հոսքը դատա՛րկ է։ Այցելի՛ր {public}ը կամ օգտվիր որոնումից՝ այլ մարդկանց հանդիպելու համար։",
"empty_column.home.public_timeline": "հրապարակային հոսք",
"empty_column.list": "Այս ցանկում դեռ ոչինչ չկա։ Երբ ցանկի անդամներից որեւէ մեկը նոր թութ գրի, այն կհայտնվի այստեղ։",
- "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
- "empty_column.mutes": "You haven't muted any users yet.",
- "empty_column.notifications": "Ոչ մի ծանուցում դեռ չունես։ Բզիր մյուսներին՝ խոսակցությունը սկսելու համար։",
- "empty_column.public": "Այստեղ բան չկա՛։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգույցներից էակների՝ այն լցնելու համար։",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "empty_column.lists": "Դուք դեռ չունեք ստեղծած ցանկ։ Ցանկ ստեղծելուն պես այն կհայտնվի այստեղ։",
+ "empty_column.mutes": "Առայժմ ոչ ոքի չեք լռեցրել։",
+ "empty_column.notifications": "Ոչ մի ծանուցում դեռ չունես։ Բզիր միւսներին՝ խօսակցութիւնը սկսելու համար։",
+ "empty_column.public": "Այստեղ բան չկա՛յ։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգոյցներից էակների՝ այն լցնելու համար։",
+ "error.unexpected_crash.explanation": "Մեր ծրագրակազմում վրիպակի կամ դիտարկչի անհամատեղելիութեան պատճառով այս էջը չի կարող լիարժէք պատկերուել։",
+ "error.unexpected_crash.next_steps": "Փորձիր թարմացնել էջը։ Եթե դա չօգնի ապա կարող ես օգտվել Մաստադոնից ուրիշ դիտարկիչով կամ հավելվածով։",
+ "errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին",
+ "errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին",
"follow_request.authorize": "Վավերացնել",
"follow_request.reject": "Մերժել",
- "getting_started.developers": "Developers",
- "getting_started.directory": "Profile directory",
- "getting_started.documentation": "Documentation",
+ "follow_requests.unlocked_explanation": "Այս հարցումը ուղարկված է հաշվից, որի համար {domain}-ի անձնակազմը միացրել է ձեռքով ստուգում։",
+ "getting_started.developers": "Մշակողներ",
+ "getting_started.directory": "Օգտատէրերի շտեմարան",
+ "getting_started.documentation": "Փաստաթղթեր",
"getting_started.heading": "Ինչպես սկսել",
- "getting_started.invite": "Invite people",
+ "getting_started.invite": "Հրաւիրել մարդկանց",
"getting_started.open_source_notice": "Մաստոդոնը բաց ելատեքստով ծրագրակազմ է։ Կարող ես ներդրում անել կամ վրեպներ զեկուցել ԳիթՀաբում՝ {github}։",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
+ "getting_started.security": "Հաշուի կարգաւորումներ",
+ "getting_started.terms": "Ծառայութեան պայմանները",
+ "hashtag.column_header.tag_mode.all": "եւ {additional}",
+ "hashtag.column_header.tag_mode.any": "կամ {additional}",
+ "hashtag.column_header.tag_mode.none": "առանց {additional}",
+ "hashtag.column_settings.select.no_options_message": "Առաջարկներ չկան",
+ "hashtag.column_settings.select.placeholder": "Ավելացրու հեշթեգեր…",
+ "hashtag.column_settings.tag_mode.all": "Բոլորը",
+ "hashtag.column_settings.tag_mode.any": "Ցանկացածը",
+ "hashtag.column_settings.tag_mode.none": "Ոչ մեկը",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Հիմնական",
"home.column_settings.show_reblogs": "Ցուցադրել տարածածները",
"home.column_settings.show_replies": "Ցուցադրել պատասխանները",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
- "introduction.federation.federated.headline": "Federated",
- "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
- "introduction.federation.home.headline": "Home",
- "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
- "introduction.federation.local.headline": "Local",
- "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "home.hide_announcements": "Թաքցնել յայտարարութիւնները",
+ "home.show_announcements": "Ցուցադրել յայտարարութիւնները",
+ "intervals.full.days": "{number, plural, one {# օր} other {# օր}}",
+ "intervals.full.hours": "{number, plural, one {# ժամ} other {# ժամ}}",
+ "intervals.full.minutes": "{number, plural, one {# րոպե} other {# րոպե}}",
+ "introduction.federation.action": "Հաջորդ",
+ "introduction.federation.federated.headline": "Դաշնային",
+ "introduction.federation.federated.text": "Դաշնեզերքի հարեւան հանգոյցների հանրային գրառումները կը յայտնուեն դաշնային հոսքում։",
+ "introduction.federation.home.headline": "Հիմնական",
+ "introduction.federation.home.text": "Այն անձանց թթերը ում հետևում ես, կը յայտնուեն հիմնական հոսքում։ Դու կարող ես հետեւել ցանկացած անձի ցանկացած հանգոյցից։",
+ "introduction.federation.local.headline": "Տեղային",
+ "introduction.federation.local.text": "Տեղական հոսքում կարող ես տեսնել քո հանգոյցի բոլոր հանրային գրառումները։",
"introduction.interactions.action": "Finish toot-orial!",
- "introduction.interactions.favourite.headline": "Favourite",
- "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
- "introduction.interactions.reblog.headline": "Boost",
- "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
- "introduction.interactions.reply.headline": "Reply",
- "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "First steps",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "introduction.interactions.favourite.headline": "Նախընտրելի",
+ "introduction.interactions.favourite.text": "Փոխանցիր հեղինակին որ քեզ դուր է եկել իր թութը հավանելով այն։",
+ "introduction.interactions.reblog.headline": "Տարածել",
+ "introduction.interactions.reblog.text": "Կիսիր այլ օգտատէրերի թութերը քո հետեւողների հետ տարածելով դրանք քո անձնական էջում։",
+ "introduction.interactions.reply.headline": "Պատասխանել",
+ "introduction.interactions.reply.text": "Արձագանքիր ուրիշների եւ քո թթերին, դրանք կը դարսուեն մէկ ընդհանուր քննարկման շղթայով։",
+ "introduction.welcome.action": "Գնացի՜նք։",
+ "introduction.welcome.headline": "Առաջին քայլեր",
+ "introduction.welcome.text": "Դաշնեզերքը ողջունում է ձեզ։ Շուտով կը կարողանաս ուղարկել նամակներ ու շփուել տարբեր հանգոյցների ընկերներիդ հետ։ Բայց մտապահիր {domain} հանգոյցը, այն իւրայատուկ է, այստեղ է պահւում քո հաշիւը։",
"keyboard_shortcuts.back": "ետ նավարկելու համար",
- "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.blocked": "արգելափակված օգտատերերի ցանկը բացելու համար",
"keyboard_shortcuts.boost": "տարածելու համար",
- "keyboard_shortcuts.column": "սյուներից մեկի վրա սեւեռվելու համար",
+ "keyboard_shortcuts.column": "սիւներից մէկի վրայ սեւեռուելու համար",
"keyboard_shortcuts.compose": "շարադրման տիրույթին սեւեռվելու համար",
- "keyboard_shortcuts.description": "Նկարագրություն",
- "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.description": "Նկարագրութիւն",
+ "keyboard_shortcuts.direct": "հասցեագրված գրվածքների հոսքը բացելու համար",
"keyboard_shortcuts.down": "ցանկով ներքեւ շարժվելու համար",
"keyboard_shortcuts.enter": "թութը բացելու համար",
"keyboard_shortcuts.favourite": "հավանելու համար",
- "keyboard_shortcuts.favourites": "to open favourites list",
- "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.favourites": "էջանիշերի ցուցակը բացելու համար",
+ "keyboard_shortcuts.federated": "դաշնային հոսքին անցնելու համար",
"keyboard_shortcuts.heading": "Ստեղնաշարի կարճատներ",
- "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.home": "անձնական հոսքին անցնելու համար",
"keyboard_shortcuts.hotkey": "Հատուկ ստեղն",
"keyboard_shortcuts.legend": "այս ձեռնարկը ցուցադրելու համար",
- "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.local": "տեղական հոսքին անցնելու համար",
"keyboard_shortcuts.mention": "հեղինակին նշելու համար",
- "keyboard_shortcuts.muted": "to open muted users list",
- "keyboard_shortcuts.my_profile": "to open your profile",
- "keyboard_shortcuts.notifications": "to open notifications column",
- "keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.muted": "լռեցված օգտատերերի ցանկը բացելու համար",
+ "keyboard_shortcuts.my_profile": "սեփական էջին անցնելու համար",
+ "keyboard_shortcuts.notifications": "ծանուցումների սիւնակը բացելու համար",
+ "keyboard_shortcuts.open_media": "ցուցադրել մեդիան",
+ "keyboard_shortcuts.pinned": "ամրացուած թթերի ցանկը բացելու համար",
+ "keyboard_shortcuts.profile": "հեղինակի անձնական էջը բացելու համար",
"keyboard_shortcuts.reply": "պատասխանելու համար",
- "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.requests": "հետեւելու հայցերի ցանկը դիտելու համար",
"keyboard_shortcuts.search": "որոնման դաշտին սեւեռվելու համար",
- "keyboard_shortcuts.start": "to open \"get started\" column",
- "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
- "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "«սկսել» սիւնակը բացելու համար",
+ "keyboard_shortcuts.toggle_hidden": "CW֊ի ետեւի տեքստը ցուցադրել֊թաքցնելու համար",
+ "keyboard_shortcuts.toggle_sensitivity": "մեդիան ցուցադրել֊թաքցնելու համար",
"keyboard_shortcuts.toot": "թարմ թութ սկսելու համար",
"keyboard_shortcuts.unfocus": "տեքստի/որոնման տիրույթից ապասեւեռվելու համար",
"keyboard_shortcuts.up": "ցանկով վերեւ շարժվելու համար",
"lightbox.close": "Փակել",
"lightbox.next": "Հաջորդ",
"lightbox.previous": "Նախորդ",
- "lightbox.view_context": "View context",
+ "lightbox.view_context": "Տեսնել ենթատեքստը",
"lists.account.add": "Ավելացնել ցանկին",
"lists.account.remove": "Հանել ցանկից",
"lists.delete": "Ջնջել ցանկը",
"lists.edit": "Փոփոխել ցանկը",
- "lists.edit.submit": "Change title",
+ "lists.edit.submit": "Փոխել վերնագիրը",
"lists.new.create": "Ավելացնել ցանկ",
"lists.new.title_placeholder": "Նոր ցանկի վերնագիր",
"lists.search": "Փնտրել քո հետեւած մարդկանց մեջ",
"lists.subheading": "Քո ցանկերը",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "load_pending": "{count, plural, one {# նոր նիւթ} other {# նոր նիւթ}}",
"loading_indicator.label": "Բեռնվում է…",
"media_gallery.toggle_visible": "Ցուցադրել/թաքցնել",
"missing_indicator.label": "Չգտնվեց",
- "missing_indicator.sublabel": "This resource could not be found",
+ "missing_indicator.sublabel": "Պաշարը չի գտնւում",
"mute_modal.hide_notifications": "Թաքցնե՞լ ցանուցումներն այս օգտատիրոջից։",
- "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.apps": "Դիւրակիր յաւելուածներ",
"navigation_bar.blocks": "Արգելափակված օգտատերեր",
+ "navigation_bar.bookmarks": "Էջանիշեր",
"navigation_bar.community_timeline": "Տեղական հոսք",
- "navigation_bar.compose": "Compose new toot",
- "navigation_bar.direct": "Direct messages",
- "navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.compose": "Գրել նոր թութ",
+ "navigation_bar.direct": "Հասցէագրուած",
+ "navigation_bar.discover": "Բացայայտել",
+ "navigation_bar.domain_blocks": "Թաքցուած տիրոյթներ",
"navigation_bar.edit_profile": "Խմբագրել անձնական էջը",
- "navigation_bar.favourites": "Հավանածներ",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.favourites": "Հաւանածներ",
+ "navigation_bar.filters": "Լռեցուած բառեր",
"navigation_bar.follow_requests": "Հետեւելու հայցեր",
- "navigation_bar.follows_and_followers": "Follows and followers",
- "navigation_bar.info": "Այս հանգույցի մասին",
+ "navigation_bar.follows_and_followers": "Հետեւածներ եւ հետեւողներ",
+ "navigation_bar.info": "Այս հանգոյցի մասին",
"navigation_bar.keyboard_shortcuts": "Ստեղնաշարի կարճատներ",
"navigation_bar.lists": "Ցանկեր",
"navigation_bar.logout": "Դուրս գալ",
"navigation_bar.mutes": "Լռեցրած օգտատերեր",
"navigation_bar.personal": "Անձնական",
"navigation_bar.pins": "Ամրացված թթեր",
- "navigation_bar.preferences": "Նախապատվություններ",
+ "navigation_bar.preferences": "Նախապատուութիւններ",
"navigation_bar.public_timeline": "Դաշնային հոսք",
- "navigation_bar.security": "Անվտանգություն",
+ "navigation_bar.security": "Անվտանգութիւն",
"notification.favourite": "{name} հավանեց թութդ",
"notification.follow": "{name} սկսեց հետեւել քեզ",
+ "notification.follow_request": "{name} քեզ հետեւելու հայց է ուղարկել",
"notification.mention": "{name} նշեց քեզ",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.own_poll": "Հարցումդ աւարտուեց",
+ "notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։",
"notification.reblog": "{name} տարածեց թութդ",
"notifications.clear": "Մաքրել ծանուցումները",
"notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապես մաքրել քո բոլոր ծանուցումները։",
"notifications.column_settings.alert": "Աշխատատիրույթի ծանուցումներ",
- "notifications.column_settings.favourite": "Հավանածներից՝",
- "notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.favourite": "Հաւանածներից՝",
+ "notifications.column_settings.filter_bar.advanced": "Ցուցադրել բոլոր կատեգորիաները",
+ "notifications.column_settings.filter_bar.category": "Արագ զտման վահանակ",
+ "notifications.column_settings.filter_bar.show": "Ցուցադրել",
"notifications.column_settings.follow": "Նոր հետեւողներ՝",
+ "notifications.column_settings.follow_request": "Նոր հետեւելու հայցեր:",
"notifications.column_settings.mention": "Նշումներ՝",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Հարցման արդիւնքները՝",
"notifications.column_settings.push": "Հրելու ծանուցումներ",
"notifications.column_settings.reblog": "Տարածածներից՝",
- "notifications.column_settings.show": "Ցուցադրել սյունում",
+ "notifications.column_settings.show": "Ցուցադրել սիւնում",
"notifications.column_settings.sound": "Ձայն հանել",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Boosts",
- "notifications.filter.favourites": "Favourites",
- "notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
- "notifications.group": "{count} notifications",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
- "privacy.change": "Կարգավորել թթի գաղտնիությունը",
+ "notifications.filter.all": "Բոլորը",
+ "notifications.filter.boosts": "Տարածածները",
+ "notifications.filter.favourites": "Հաւանածները",
+ "notifications.filter.follows": "Հետեւածները",
+ "notifications.filter.mentions": "Նշումները",
+ "notifications.filter.polls": "Հարցման արդիւնքները",
+ "notifications.group": "{count} ծանուցում",
+ "poll.closed": "Փակ",
+ "poll.refresh": "Թարմացնել",
+ "poll.total_people": "{count, plural, one {# հոգի} other {# հոգի}}",
+ "poll.total_votes": "{count, plural, one {# ձայն} other {# ձայն}}",
+ "poll.vote": "Քուէարկել",
+ "poll.voted": "Դու քուէարկել ես այս տարբերակի համար",
+ "poll_button.add_poll": "Աւելացնել հարցում",
+ "poll_button.remove_poll": "Հեռացնել հարցումը",
+ "privacy.change": "Կարգաւորել թթի գաղտնիութիւնը",
"privacy.direct.long": "Թթել միայն նշված օգտատերերի համար",
"privacy.direct.short": "Հասցեագրված",
"privacy.private.long": "Թթել միայն հետեւողների համար",
@@ -314,108 +338,118 @@
"privacy.public.short": "Հրապարակային",
"privacy.unlisted.long": "Չթթել հրապարակային հոսքերում",
"privacy.unlisted.short": "Ծածուկ",
- "refresh": "Refresh",
- "regeneration_indicator.label": "Loading…",
- "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "refresh": "Թարմացնել",
+ "regeneration_indicator.label": "Բեռնւում է…",
+ "regeneration_indicator.sublabel": "պատրաստւում է հիմնական հոսքդ",
"relative_time.days": "{number}օր",
"relative_time.hours": "{number}ժ",
"relative_time.just_now": "նոր",
"relative_time.minutes": "{number}ր",
"relative_time.seconds": "{number}վ",
+ "relative_time.today": "Այսօր",
"reply_indicator.cancel": "Չեղարկել",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.forward": "Փոխանցել {target}֊ին",
+ "report.forward_hint": "Այս հաշիւ այլ հանգոյցից է։ Ուղարկե՞մ այնտեղ էլ այս բողոքի անոնիմ պատճէնը։",
"report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
- "report.placeholder": "Լրացուցիչ մեկնաբանություններ",
+ "report.placeholder": "Լրացուցիչ մեկնաբանութիւններ",
"report.submit": "Ուղարկել",
"report.target": "Բողոքել {target}֊ի մասին",
"search.placeholder": "Փնտրել",
"search_popout.search_format": "Փնտրելու առաջադեմ ձեւ",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.full_text": "Պարզ տեքստը վերադարձնում է գրառումներդ, հաւանածներդ, տարածածներդ, որտեղ ես նշուած եղել, ինչպէս նաեւ նման օգտանուններ, անուններ եւ պիտակներ։",
"search_popout.tips.hashtag": "պիտակ",
"search_popout.tips.status": "թութ",
"search_popout.tips.text": "Հասարակ տեքստը կվերադարձնի համընկնող անուններ, օգտանուններ ու պիտակներ",
"search_popout.tips.user": "օգտատեր",
"search_results.accounts": "Մարդիկ",
- "search_results.hashtags": "Hashtags",
- "search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
- "search_results.total": "{count, number} {count, plural, one {արդյունք} other {արդյունք}}",
- "status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
+ "search_results.hashtags": "Պիտակներ",
+ "search_results.statuses": "Թթեր",
+ "search_results.statuses_fts_disabled": "Այս հանգոյցում միացուած չէ ըստ բովանդակութեան թթեր փնտրելու հնարաւորութիւնը։",
+ "search_results.total": "{count, number} {count, plural, one {արդիւնք} other {արդիւնք}}",
+ "status.admin_account": "Բացել @{name} օգտատիրոջ մոդերացիայի դիմերէսը։",
+ "status.admin_status": "Բացել այս գրառումը մոդերատորի դիմերէսի մէջ",
"status.block": "Արգելափակել @{name}֊ին",
- "status.cancel_reblog_private": "Unboost",
+ "status.bookmark": "Էջանիշ",
+ "status.cancel_reblog_private": "Ապատարածել",
"status.cannot_reblog": "Այս թութը չի կարող տարածվել",
- "status.copy": "Copy link to status",
+ "status.copy": "Պատճենել գրառման հղումը",
"status.delete": "Ջնջել",
- "status.detailed_status": "Detailed conversation view",
- "status.direct": "Direct message @{name}",
+ "status.detailed_status": "Շղթայի ընդլայնված դիտում",
+ "status.direct": "Նամակ գրել {name} -ին",
"status.embed": "Ներդնել",
"status.favourite": "Հավանել",
- "status.filtered": "Filtered",
+ "status.filtered": "Զտված",
"status.load_more": "Բեռնել ավելին",
- "status.media_hidden": "մեդիաբովանդակությունը թաքցված է",
+ "status.media_hidden": "մեդիաբովանդակութիւնը թաքցուած է",
"status.mention": "Նշել @{name}֊ին",
"status.more": "Ավելին",
"status.mute": "Լռեցնել @{name}֊ին",
- "status.mute_conversation": "Լռեցնել խոսակցությունը",
+ "status.mute_conversation": "Լռեցնել խօսակցութիւնը",
"status.open": "Ընդարձակել այս թութը",
"status.pin": "Ամրացնել անձնական էջում",
- "status.pinned": "Pinned toot",
- "status.read_more": "Read more",
+ "status.pinned": "Ամրացված թութ",
+ "status.read_more": "Կարդալ ավելին",
"status.reblog": "Տարածել",
- "status.reblog_private": "Boost to original audience",
+ "status.reblog_private": "Տարածել սեփական լսարանին",
"status.reblogged_by": "{name} տարածել է",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
- "status.redraft": "Delete & re-draft",
+ "status.reblogs.empty": "Այս թութը ոչ մէկ դեռ չի տարածել։ Տարածողները կերեւան այստեղ, երբ որեւէ մէկը տարածի։",
+ "status.redraft": "Ջնջել եւ վերակազմել",
+ "status.remove_bookmark": "Հեռացնել էջանիշերից",
"status.reply": "Պատասխանել",
"status.replyAll": "Պատասխանել թելին",
"status.report": "Բողոքել @{name}֊ից",
- "status.sensitive_warning": "Կասկածելի բովանդակություն",
+ "status.sensitive_warning": "Կասկածելի բովանդակութիւն",
"status.share": "Կիսվել",
"status.show_less": "Պակաս",
- "status.show_less_all": "Show less for all",
+ "status.show_less_all": "Թաքցնել բոլոր նախազգուշացնումները",
"status.show_more": "Ավելին",
- "status.show_more_all": "Show more for all",
- "status.show_thread": "Show thread",
- "status.uncached_media_warning": "Not available",
- "status.unmute_conversation": "Ապալռեցնել խոսակցությունը",
+ "status.show_more_all": "Ցուցադրել բոլոր նախազգուշացնումները",
+ "status.show_thread": "Բացել շղթան",
+ "status.uncached_media_warning": "Անհասանելի",
+ "status.unmute_conversation": "Ապալռեցնել խօսակցութիւնը",
"status.unpin": "Հանել անձնական էջից",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Անտեսել առաջարկը",
+ "suggestions.header": "Միգուցե քեզ հետաքրքրի…",
"tabs_bar.federated_timeline": "Դաշնային",
"tabs_bar.home": "Հիմնական",
"tabs_bar.local_timeline": "Տեղական",
"tabs_bar.notifications": "Ծանուցումներ",
"tabs_bar.search": "Փնտրել",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "trends.trending_now": "Trending now",
+ "time_remaining.days": "{number, plural, one {մնաց # օր} other {մնաց # օր}}",
+ "time_remaining.hours": "{number, plural, one {# ժամ} other {# ժամ}} անց",
+ "time_remaining.minutes": "{number, plural, one {# րոպե} other {# րոպե}} անց",
+ "time_remaining.moments": "Մնացել է մի քանի վարկեան",
+ "time_remaining.seconds": "{number, plural, one {# վարկեան} other {# վարկեան}} անց",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {հոգի} other {հոգի}} խոսում է սրա մասին",
+ "trends.trending_now": "Այժմ արդիական",
"ui.beforeunload": "Քո սեւագիրը կկորի, եթե լքես Մաստոդոնը։",
"upload_area.title": "Քաշիր ու նետիր՝ վերբեռնելու համար",
"upload_button.label": "Ավելացնել մեդիա",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
- "upload_form.description": "Նկարագրություն ավելացրու տեսողական խնդիրներ ունեցողների համար",
- "upload_form.edit": "Edit",
+ "upload_error.limit": "Ֆայլի վերբեռնման սահմանաչափը գերազանցված է։",
+ "upload_error.poll": "Հարցումների հետ նիշք կցել հնարաւոր չէ։",
+ "upload_form.audio_description": "Նկարագրիր ձայնագրութեան բովանդակութիւնը լսողական խնդիրներով անձանց համար",
+ "upload_form.description": "Նկարագիր՝ տեսողական խնդիրներ ունեցողների համար",
+ "upload_form.edit": "Խմբագրել",
"upload_form.undo": "Հետարկել",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_form.video_description": "Նկարագրիր տեսանիւթը լսողական կամ տեսողական խնդիրներով անձանց համար",
+ "upload_modal.analyzing_picture": "Լուսանկարի վերլուծում…",
+ "upload_modal.apply": "Կիրառել",
+ "upload_modal.description_placeholder": "Բել դղյակի ձախ ժամն օֆ ազգությանը ցպահանջ չճշտած վնաս էր եւ փառք։",
+ "upload_modal.detect_text": "Հայտնբերել տեքստը նկարից",
+ "upload_modal.edit_media": "Խմբագրել մեդիան",
+ "upload_modal.hint": "Սեղմէք եւ տեղաշարժէք նախադիտման շրջանակը՝ որ ընտրէք մանրապատկերում միշտ տեսանելի կէտը։",
+ "upload_modal.preview_label": "Նախադիտում ({ratio})",
"upload_progress.label": "Վերբեռնվում է…",
- "video.close": "Փակել տեսագրությունը",
+ "video.close": "Փակել տեսագրութիւնը",
+ "video.download": "Ներբեռնել ֆայլը",
"video.exit_fullscreen": "Անջատել լիաէկրան դիտումը",
- "video.expand": "Ընդարձակել տեսագրությունը",
+ "video.expand": "Ընդարձակել տեսագրութիւնը",
"video.fullscreen": "Լիաէկրան",
- "video.hide": "Թաքցնել տեսագրությունը",
+ "video.hide": "Թաքցնել տեսագրութիւնը",
"video.mute": "Լռեցնել ձայնը",
"video.pause": "Դադար տալ",
"video.play": "Նվագել",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 371922a4d..f3080d4fc 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Tambah atau Hapus dari daftar",
"account.badges.bot": "Bot",
+ "account.badges.group": "Grup",
"account.block": "Blokir @{name}",
"account.block_domain": "Sembunyikan segalanya dari {domain}",
"account.blocked": "Terblokir",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Batalkan permintaan ikuti",
"account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain disembunyikan",
@@ -38,10 +42,15 @@
"account.unfollow": "Berhenti mengikuti",
"account.unmute": "Berhenti membisukan @{name}",
"account.unmute_notifications": "Munculkan notifikasi dari @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Tolong ulangi setelah {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "alert.rate_limited.title": "Batasan tingkat",
"alert.unexpected.message": "Terjadi kesalahan yang tidak terduga.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Pengumuman",
"autosuggest_hashtag.per_week": "{count} per minggu",
"boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini",
"bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Kesalahan terjadi saat memuat komponen ini.",
"bundle_modal_error.retry": "Coba lagi",
"column.blocks": "Pengguna diblokir",
+ "column.bookmarks": "Markah",
"column.community": "Linimasa Lokal",
"column.direct": "Pesan langsung",
"column.directory": "Jelajahi profil",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Tampilkan pengaturan",
"column_header.unpin": "Lepaskan",
"column_subheading.settings": "Pengaturan",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Hanya media",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya",
"compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah di set sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Durasi jajak pendapat",
"compose_form.poll.option_placeholder": "Pilihan {number}",
"compose_form.poll.remove_option": "Hapus opsi ini",
+ "compose_form.poll.switch_to_multiple": "Ubah japat menjadi pilihan ganda",
+ "compose_form.poll.switch_to_single": "Ubah japat menjadi pilihan tunggal",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Tandai sebagai media sensitif",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Tidak ada toot di sini!",
"empty_column.account_unavailable": "Profil tidak tersedia",
"empty_column.blocks": "Anda belum memblokir siapapun.",
+ "empty_column.bookmarked_statuses": "Anda belum memiliki toot termarkah. Saat Anda menandainya sebagai markah, ia akan muncul di sini.",
"empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!",
"empty_column.direct": "Anda belum memiliki pesan langsung. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.",
"empty_column.domain_blocks": "Tidak ada topik tersembunyi.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Laporkan masalah",
"follow_request.authorize": "Izinkan",
"follow_request.reject": "Tolak",
+ "follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.",
"getting_started.developers": "Pengembang",
"getting_started.directory": "Direktori profil",
"getting_started.documentation": "Dokumentasi",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Dasar",
"home.column_settings.show_reblogs": "Tampilkan boost",
"home.column_settings.show_replies": "Tampilkan balasan",
+ "home.hide_announcements": "Sembunyikan pengumuman",
+ "home.show_announcements": "Tampilkan pengumuman",
"intervals.full.days": "{number, plural, other {# hari}}",
"intervals.full.hours": "{number, plural, other {# jam}}",
"intervals.full.minutes": "{number, plural, other {# menit}}",
@@ -219,17 +237,19 @@
"keyboard_shortcuts.muted": "buka daftar pengguna terbisukan",
"keyboard_shortcuts.my_profile": "buka profil Anda",
"keyboard_shortcuts.notifications": "buka kolom notifikasi",
+ "keyboard_shortcuts.open_media": "membuka media",
"keyboard_shortcuts.pinned": "buka daftar toot tersemat",
"keyboard_shortcuts.profile": "buka profil pencipta",
"keyboard_shortcuts.reply": "balas",
"keyboard_shortcuts.requests": "buka daftar permintaan ikuti",
"keyboard_shortcuts.search": "untuk fokus mencari",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "buka kolom \"memulai\"",
"keyboard_shortcuts.toggle_hidden": "tampilkan/sembunyikan teks di belakang CW",
"keyboard_shortcuts.toggle_sensitivity": "tampilkan/sembunyikan media",
"keyboard_shortcuts.toot": "mulai toot baru",
- "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
- "keyboard_shortcuts.up": "to move up in the list",
+ "keyboard_shortcuts.unfocus": "untuk tidak fokus pada area teks/pencarian",
+ "keyboard_shortcuts.up": "untuk memindah ke atas pada daftar",
"lightbox.close": "Tutup",
"lightbox.next": "Selanjutnya",
"lightbox.previous": "Sebelumnya",
@@ -243,7 +263,7 @@
"lists.new.title_placeholder": "Judul daftar baru",
"lists.search": "Cari di antara orang yang Anda ikuti",
"lists.subheading": "Daftar Anda",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "load_pending": "{count, plural, other {# item baru}}",
"loading_indicator.label": "Tunggu sebentar...",
"media_gallery.toggle_visible": "Tampil/Sembunyikan",
"missing_indicator.label": "Tidak ditemukan",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Sembunyikan notifikasi dari pengguna ini?",
"navigation_bar.apps": "Aplikasi mobile",
"navigation_bar.blocks": "Pengguna diblokir",
+ "navigation_bar.bookmarks": "Markah",
"navigation_bar.community_timeline": "Linimasa lokal",
"navigation_bar.compose": "Tulis toot baru",
"navigation_bar.direct": "Pesan langsung",
@@ -260,7 +281,7 @@
"navigation_bar.favourites": "Favorit",
"navigation_bar.filters": "Kata yang dibisukan",
"navigation_bar.follow_requests": "Permintaan mengikuti",
- "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.follows_and_followers": "Ikuti dan pengikut",
"navigation_bar.info": "Informasi selengkapnya",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Daftar",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Keamanan",
"notification.favourite": "{name} menyukai status anda",
"notification.follow": "{name} mengikuti anda",
+ "notification.follow_request": "{name} ingin mengikuti Anda",
"notification.mention": "{name} menyebut Anda",
+ "notification.own_poll": "Japat Anda telah berakhir",
"notification.poll": "Japat yang Anda ikuti telah berakhir",
"notification.reblog": "{name} mem-boost status anda",
"notifications.clear": "Hapus notifikasi",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Bilah penyaring cepat",
"notifications.column_settings.filter_bar.show": "Tampilkan",
"notifications.column_settings.follow": "Pengikut baru:",
+ "notifications.column_settings.follow_request": "Permintaan mengikuti baru:",
"notifications.column_settings.mention": "Balasan:",
"notifications.column_settings.poll": "Hasil japat:",
"notifications.column_settings.push": "Notifikasi dorong",
@@ -299,12 +323,12 @@
"notifications.group": "{count} notifikasi",
"poll.closed": "Ditutup",
"poll.refresh": "Segarkan",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll.total_people": "{count, plural, other {# orang}}",
+ "poll.total_votes": "{count, plural, other {# suara}}",
+ "poll.vote": "Memilih",
+ "poll.voted": "Anda memilih jawaban ini",
+ "poll_button.add_poll": "Tambah japat",
+ "poll_button.remove_poll": "Hapus japat",
"privacy.change": "Tentukan privasi status",
"privacy.direct.long": "Kirim hanya ke pengguna yang disebut",
"privacy.direct.short": "Langsung",
@@ -314,110 +338,120 @@
"privacy.public.short": "Publik",
"privacy.unlisted.long": "Tidak ditampilkan di linimasa publik",
"privacy.unlisted.short": "Tak Terdaftar",
- "refresh": "Refresh",
- "regeneration_indicator.label": "Loading…",
+ "refresh": "Segarkan",
+ "regeneration_indicator.label": "Memuat…",
"regeneration_indicator.sublabel": "Linimasa anda sedang disiapkan!",
- "relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
- "relative_time.just_now": "now",
- "relative_time.minutes": "{number}m",
- "relative_time.seconds": "{number}s",
+ "relative_time.days": "{number}h",
+ "relative_time.hours": "{number}j",
+ "relative_time.just_now": "sekarang",
+ "relative_time.minutes": "{number}b",
+ "relative_time.seconds": "{number}d",
+ "relative_time.today": "hari ini",
"reply_indicator.cancel": "Batal",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.forward": "Teruskan ke {target}",
+ "report.forward_hint": "Akun dari server lain. Kirim salinan laporan scr anonim ke sana?",
"report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
"report.placeholder": "Komentar tambahan",
"report.submit": "Kirim",
"report.target": "Melaporkan",
"search.placeholder": "Pencarian",
- "search_popout.search_format": "Advanced search format",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.search_format": "Format pencarian mahir",
+ "search_popout.tips.full_text": "Teks simpel menampilkan status yang Anda tulis, favoritkan, boost-kan, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.",
"search_popout.tips.hashtag": "tagar",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
- "search_popout.tips.user": "user",
- "search_results.accounts": "People",
- "search_results.hashtags": "Hashtags",
- "search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_popout.tips.text": "Teks sederhana menampilkan nama yang ditampilkan, nama pengguna, dan tagar yang cocok",
+ "search_popout.tips.user": "pengguna",
+ "search_results.accounts": "Orang",
+ "search_results.hashtags": "Tagar",
+ "search_results.statuses": "Toot",
+ "search_results.statuses_fts_disabled": "Pencarian toot berdasarkan konten tidak diaktifkan di server Mastadon ini.",
"search_results.total": "{count, number} {count, plural, one {hasil} other {hasil}}",
- "status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
- "status.block": "Block @{name}",
- "status.cancel_reblog_private": "Unboost",
- "status.cannot_reblog": "This post cannot be boosted",
- "status.copy": "Copy link to status",
+ "status.admin_account": "Buka antar muka moderasi untuk @{name}",
+ "status.admin_status": "Buka status ini dalam antar muka moderasi",
+ "status.block": "Blokir @{name}",
+ "status.bookmark": "Markah",
+ "status.cancel_reblog_private": "Batalkan boost",
+ "status.cannot_reblog": "Pos ini tak dapat di-boost",
+ "status.copy": "Salin tautan ke status",
"status.delete": "Hapus",
- "status.detailed_status": "Detailed conversation view",
- "status.direct": "Direct message @{name}",
- "status.embed": "Embed",
+ "status.detailed_status": "Tampilan detail percakapan",
+ "status.direct": "Pesan langsung @{name}",
+ "status.embed": "Tanam",
"status.favourite": "Difavoritkan",
- "status.filtered": "Filtered",
+ "status.filtered": "Disaring",
"status.load_more": "Tampilkan semua",
"status.media_hidden": "Media disembunyikan",
"status.mention": "Balasan @{name}",
- "status.more": "More",
- "status.mute": "Mute @{name}",
- "status.mute_conversation": "Mute conversation",
+ "status.more": "Lebih banyak",
+ "status.mute": "Bisukan @{name}",
+ "status.mute_conversation": "Bisukan percakapan",
"status.open": "Tampilkan status ini",
- "status.pin": "Pin on profile",
- "status.pinned": "Pinned toot",
- "status.read_more": "Read more",
+ "status.pin": "Sematkan pada profil",
+ "status.pinned": "Toot tersemat",
+ "status.read_more": "Baca lebih banyak",
"status.reblog": "Boost",
- "status.reblog_private": "Boost to original audience",
+ "status.reblog_private": "Boost ke audiens asli",
"status.reblogged_by": "di-boost {name}",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
- "status.redraft": "Delete & re-draft",
+ "status.reblogs.empty": "Belum ada yang mem-boost toot ini. Ketika seseorang melakukannya, maka akan muncul di sini.",
+ "status.redraft": "Hapus & redraf",
+ "status.remove_bookmark": "Hapus markah",
"status.reply": "Balas",
"status.replyAll": "Balas ke semua",
"status.report": "Laporkan @{name}",
"status.sensitive_warning": "Konten sensitif",
- "status.share": "Share",
+ "status.share": "Bagikan",
"status.show_less": "Tampilkan lebih sedikit",
- "status.show_less_all": "Show less for all",
+ "status.show_less_all": "Tampilkan lebih sedikit",
"status.show_more": "Tampilkan semua",
- "status.show_more_all": "Show more for all",
- "status.show_thread": "Show thread",
- "status.uncached_media_warning": "Not available",
- "status.unmute_conversation": "Unmute conversation",
- "status.unpin": "Unpin from profile",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "status.show_more_all": "Tampilkan lebih banyak",
+ "status.show_thread": "Tampilkan utas",
+ "status.uncached_media_warning": "Tak tersedia",
+ "status.unmute_conversation": "Bunyikan percakapan",
+ "status.unpin": "Hapus sematan dari profil",
+ "suggestions.dismiss": "Hentikan saran",
+ "suggestions.header": "Anda mungkin tertarik dg…",
"tabs_bar.federated_timeline": "Gabungan",
"tabs_bar.home": "Beranda",
"tabs_bar.local_timeline": "Lokal",
"tabs_bar.notifications": "Notifikasi",
- "tabs_bar.search": "Search",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "trends.trending_now": "Trending now",
+ "tabs_bar.search": "Cari",
+ "time_remaining.days": "{number, plural, other {# hari}} tersisa",
+ "time_remaining.hours": "{number, plural, other {# jam}} tersisa",
+ "time_remaining.minutes": "{number, plural, other {# menit}} tersisa",
+ "time_remaining.moments": "Momen tersisa",
+ "time_remaining.seconds": "{number, plural, other {# detik}} tersisa",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, other {orang}} berbicara",
+ "trends.trending_now": "Sedang tren sekarang",
"ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Mastodon.",
"upload_area.title": "Seret & lepaskan untuk mengunggah",
"upload_button.label": "Tambahkan media",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.limit": "Batas unggah berkas terlampaui.",
+ "upload_error.poll": "Unggah berkas tak diizinkan di japat ini.",
+ "upload_form.audio_description": "Penjelasan untuk orang dengan gangguan pendengaran",
"upload_form.description": "Deskripsikan untuk mereka yang tidak bisa melihat dengan jelas",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "Sunting",
"upload_form.undo": "Undo",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_form.video_description": "Penjelasan untuk orang dengan gangguan pendengaran atau penglihatan",
+ "upload_modal.analyzing_picture": "Analisis gambar…",
+ "upload_modal.apply": "Terapkan",
+ "upload_modal.description_placeholder": "Muharjo seorang xenofobia universal yang takut pada warga jazirah, contohnya Qatar",
+ "upload_modal.detect_text": "Deteksi teks pada gambar",
+ "upload_modal.edit_media": "Sunting media",
+ "upload_modal.hint": "Klik atau seret lingkaran pada pratinjau untuk memilih titik fokus yang akan ditampilkan pada semua gambar kecil.",
+ "upload_modal.preview_label": "Pratinjau ({ratio})",
"upload_progress.label": "Mengunggah...",
- "video.close": "Close video",
+ "video.close": "Tutup video",
+ "video.download": "Unduh berkas",
"video.exit_fullscreen": "Keluar dari layar penuh",
"video.expand": "Perbesar video",
- "video.fullscreen": "Full screen",
- "video.hide": "Hide video",
- "video.mute": "Mute sound",
- "video.pause": "Pause",
- "video.play": "Play",
- "video.unmute": "Unmute sound"
+ "video.fullscreen": "Layar penuh",
+ "video.hide": "Sembunyikan video",
+ "video.mute": "Bisukan suara",
+ "video.pause": "Jeda",
+ "video.play": "Putar",
+ "video.unmute": "Bunyikan suara"
}
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 076835218..05c8ffd02 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
+ "account.badges.group": "Group",
"account.block": "Blokusar @{name}",
"account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain hidden",
@@ -38,10 +42,15 @@
"account.unfollow": "Ne plus sequar",
"account.unmute": "Ne plus celar @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo",
"bundle_column_error.body": "Something went wrong while loading this component.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Blokusita uzeri",
+ "column.bookmarks": "Bookmarks",
"column.community": "Lokala tempolineo",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.settings": "Settings",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Siflar",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "La lokala tempolineo esas vakua. Skribez ulo publike por iniciar la agiveso!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Yurizar",
"follow_request.reject": "Refuzar",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Simpla",
"home.column_settings.show_reblogs": "Montrar repeti",
"home.column_settings.show_replies": "Montrar respondi",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blokusita uzeri",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Lokala tempolineo",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Security",
"notification.favourite": "{name} favorizis tua mesajo",
"notification.follow": "{name} sequeskis tu",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mencionis tu",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} repetis tua mesajo",
"notifications.clear": "Efacar savigi",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "Nova sequanti:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Mencioni:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
@@ -322,6 +346,7 @@
"relative_time.just_now": "now",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Nihiligar",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} repetita",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Respondar",
"status.replyAll": "Respondar a filo",
"status.report": "Denuncar @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
@@ -400,9 +431,11 @@
"upload_button.label": "Adjuntar kontenajo",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
"upload_form.undo": "Desfacar",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Kargante...",
"video.close": "Close video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
new file mode 100644
index 000000000..547b6c061
--- /dev/null
+++ b/app/javascript/mastodon/locales/is.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Bæta á eða fjarlægja af listum",
+ "account.badges.bot": "Róbót",
+ "account.badges.group": "Hópur",
+ "account.block": "Útiloka @{name}",
+ "account.block_domain": "Fela allt frá {domain}",
+ "account.blocked": "Útilokaður",
+ "account.browse_more_on_origin_server": "Skoða nánari upplýsingar á notandasniðinu",
+ "account.cancel_follow_request": "Hætta við beiðni um að fylgjast með",
+ "account.direct": "Bein skilaboð til @{name}",
+ "account.domain_blocked": "Lén falið",
+ "account.edit_profile": "Breyta notandasniði",
+ "account.endorse": "Birta á notandasniði",
+ "account.follow": "Fylgjast með",
+ "account.followers": "Fylgjendur",
+ "account.followers.empty": "Ennþá fylgist enginn með þessum notanda.",
+ "account.follows": "Fylgist með",
+ "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.",
+ "account.follows_you": "Fylgir þér",
+ "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}",
+ "account.last_status": "Síðasta virkni",
+ "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}",
+ "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.",
+ "account.media": "Myndskrár",
+ "account.mention": "Minnast á @{name}",
+ "account.moved_to": "{name} hefur verið færður til:",
+ "account.mute": "Þagga niður í @{name}",
+ "account.mute_notifications": "Þagga tilkynningar frá @{name}",
+ "account.muted": "Þaggað",
+ "account.never_active": "Aldrei",
+ "account.posts": "Tíst",
+ "account.posts_with_replies": "Tíst og svör",
+ "account.report": "Kæra @{name}",
+ "account.requested": "Bíður eftir samþykki. Smelltu til að hætta við beiðni um að fylgjast með",
+ "account.share": "Deila notandasniði fyrir @{name}",
+ "account.show_reblogs": "Sýna endurbirtingar frá @{name}",
+ "account.unblock": "Aflétta útilokun af @{name}",
+ "account.unblock_domain": "Hætta að fela {domain}",
+ "account.unendorse": "Ekki birta á notandasniði",
+ "account.unfollow": "Hætta að fylgja",
+ "account.unmute": "Hætta að þagga niður í @{name}",
+ "account.unmute_notifications": "Hætta að þagga tilkynningar frá @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Prófaðu aftur eftir {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Með takmörkum",
+ "alert.unexpected.message": "Upp kom óvænt villa.",
+ "alert.unexpected.title": "Úbbs!",
+ "announcement.announcement": "Auglýsing",
+ "autosuggest_hashtag.per_week": "{count} á viku",
+ "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst",
+ "bundle_column_error.body": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.",
+ "bundle_column_error.retry": "Reyndu aftur",
+ "bundle_column_error.title": "Villa í netkerfi",
+ "bundle_modal_error.close": "Loka",
+ "bundle_modal_error.message": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.",
+ "bundle_modal_error.retry": "Reyndu aftur",
+ "column.blocks": "Útilokaðir notendur",
+ "column.bookmarks": "Bókamerki",
+ "column.community": "Staðvær tímalína",
+ "column.direct": "Bein skilaboð",
+ "column.directory": "Skoða notandasnið",
+ "column.domain_blocks": "Falin lén",
+ "column.favourites": "Eftirlæti",
+ "column.follow_requests": "Fylgja beiðnum",
+ "column.home": "Heim",
+ "column.lists": "Listar",
+ "column.mutes": "Þaggaðir notendur",
+ "column.notifications": "Tilkynningar",
+ "column.pins": "Föst tíst",
+ "column.public": "Sameiginleg tímalína",
+ "column_back_button.label": "Til baka",
+ "column_header.hide_settings": "Fela stillingar",
+ "column_header.moveLeft_settings": "Færa dálk til vinstri",
+ "column_header.moveRight_settings": "Færa dálk til hægri",
+ "column_header.pin": "Festa",
+ "column_header.show_settings": "Birta stillingar",
+ "column_header.unpin": "Losa",
+ "column_subheading.settings": "Stillingar",
+ "community.column_settings.local_only": "Einungis staðvært",
+ "community.column_settings.media_only": "Einungis myndskrár",
+ "community.column_settings.remote_only": "Einungis fjartengt",
+ "compose_form.direct_message_warning": "Þetta tíst verður aðeins sent á notendur sem minnst er á.",
+ "compose_form.direct_message_warning_learn_more": "Kanna nánar",
+ "compose_form.hashtag_warning": "Þetta tíst verður ekki talið með undir nokkru myllumerki þar sem það er óskráð. Einungis er hægt að leita að opinberum tístum eftir myllumerkjum.",
+ "compose_form.lock_disclaimer": "Aðgangurinn þinn er ekki {locked}. Hver sem er getur fylgst með þeim færslum þínum sem einungis eru til fylgjenda þinna.",
+ "compose_form.lock_disclaimer.lock": "læst",
+ "compose_form.placeholder": "Hvað varstu að hugsa?",
+ "compose_form.poll.add_option": "Bæta við valkosti",
+ "compose_form.poll.duration": "Tímalengd könnunar",
+ "compose_form.poll.option_placeholder": "Valkostur {number}",
+ "compose_form.poll.remove_option": "Fjarlægja þennan valkost",
+ "compose_form.poll.switch_to_multiple": "Breyta könnun svo hægt sé að hafa marga valkosti",
+ "compose_form.poll.switch_to_single": "Breyta könnun svo hægt sé að hafa einn stakan valkost",
+ "compose_form.publish": "Tíst",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Merkja myndir sem viðkvæmar",
+ "compose_form.sensitive.marked": "Mynd er merkt sem viðkvæm",
+ "compose_form.sensitive.unmarked": "Mynd er ekki merkt sem viðkvæm",
+ "compose_form.spoiler.marked": "Texti er falinn á bak við aðvörun",
+ "compose_form.spoiler.unmarked": "Texti er ekki falinn",
+ "compose_form.spoiler_placeholder": "Skrifaðu aðvörunina þína hér",
+ "confirmation_modal.cancel": "Hætta við",
+ "confirmations.block.block_and_report": "Útiloka og kæra",
+ "confirmations.block.confirm": "Útiloka",
+ "confirmations.block.message": "Ertu viss um að þú viljir loka á {name}?",
+ "confirmations.delete.confirm": "Eyða",
+ "confirmations.delete.message": "Ertu viss um að þú viljir eyða þessari stöðufærslu?",
+ "confirmations.delete_list.confirm": "Eyða",
+ "confirmations.delete_list.message": "Ertu viss um að þú viljir eyða þessum lista endanlega?",
+ "confirmations.domain_block.confirm": "Fela allt lénið",
+ "confirmations.domain_block.message": "Ertu alveg algjörlega viss um að þú viljir loka á allt {domain}? Í flestum tilfellum er vænlegra að nota færri en markvissari útilokanir eða að þagga niður tiltekna aðila. Þú munt ekki sjá efni frá þessu léni í neinum opinberum tímalínum eða í tilkynningunum þínum. Fylgjendur þínir frá þessu léni verða fjarlægðir.",
+ "confirmations.logout.confirm": "Skrá út",
+ "confirmations.logout.message": "Ertu viss um að þú viljir skrá þig út?",
+ "confirmations.mute.confirm": "Þagga",
+ "confirmations.mute.explanation": "Þetta mun fela færslur frá þeim og þær færslur þar sem minnst er á þau, en það mun samt sem áður gera þeim kleift að sjá færslurnar þínar og að fylgjast með þér.",
+ "confirmations.mute.message": "Ertu viss um að þú viljir þagga niður í {name}?",
+ "confirmations.redraft.confirm": "Eyða og enduvinna drög",
+ "confirmations.redraft.message": "Ertu viss um að þú viljir eyða þessari stöðufærslu og enduvinna drögin? Eftirlæti og endurbirtingar munu tapast og svör við upprunalegu fæerslunni munu verða munaðarlaus.",
+ "confirmations.reply.confirm": "Svara",
+ "confirmations.reply.message": "Ef þú svarar núna verður skrifað yfir skilaboðin sem þú ert að semja núna. Ertu viss um að þú viljir halda áfram?",
+ "confirmations.unfollow.confirm": "Hætta að fylgja",
+ "confirmations.unfollow.message": "Ertu viss um að þú viljir hætta að fylgjast með {name}?",
+ "conversation.delete": "Eyða samtali",
+ "conversation.mark_as_read": "Merkja sem lesið",
+ "conversation.open": "Skoða samtal",
+ "conversation.with": "Með {names}",
+ "directory.federated": "Frá samtengdum vefþjónum",
+ "directory.local": "Einungis frá {domain}",
+ "directory.new_arrivals": "Nýkomnir",
+ "directory.recently_active": "Nýleg virkni",
+ "embed.instructions": "Felldu þessa færslu inn í vefsvæðið þitt með því að afrita kóðann hér fyrir neðan.",
+ "embed.preview": "Svona mun þetta líta út:",
+ "emoji_button.activity": "Virkni",
+ "emoji_button.custom": "Sérsniðið",
+ "emoji_button.flags": "Flögg",
+ "emoji_button.food": "Matur og drykkur",
+ "emoji_button.label": "Setja inn tjáningartákn",
+ "emoji_button.nature": "Náttúra",
+ "emoji_button.not_found": "Engin tjáningartákn!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Hlutir",
+ "emoji_button.people": "Fólk",
+ "emoji_button.recent": "Oft notað",
+ "emoji_button.search": "Leita...",
+ "emoji_button.search_results": "Leitarniðurstöður",
+ "emoji_button.symbols": "Tákn",
+ "emoji_button.travel": "Ferðalög og staðir",
+ "empty_column.account_timeline": "Engin tíst hér!",
+ "empty_column.account_unavailable": "Notandasnið ekki tiltækt",
+ "empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.",
+ "empty_column.bookmarked_statuses": "Þú ert ekki ennþá með nein bókamerkt tíst. Þegar þú gefur tísti bókamerki, munu það birtast hér.",
+ "empty_column.community": "Staðværa tímalínan er tóm. Skrifaðu eitthvað opinberlega til að láta boltann fara að rúlla!",
+ "empty_column.direct": "Þú átt ennþá engin bein skilaboð. Þegar þú sendir eða tekur á móti slíkum skilaboðum, munu þau birtast hér.",
+ "empty_column.domain_blocks": "Það eru engin falin lén ennþá.",
+ "empty_column.favourited_statuses": "Þú átt ennþá engin eftirlætistíst. Þegar þú setur tíst í eftirlæti, munu þau birtast hér.",
+ "empty_column.favourites": "Enginn hefur ennþá set þetta tíst í eftirlæti. Þegar einhverjir gera það, munu þeir birtast hér.",
+ "empty_column.follow_requests": "Þú átt ennþá engar beiðnir um að fylgja þér. Þegar þú færð slíkar beiðnir, munu þær birtast hér.",
+ "empty_column.hashtag": "Það er ekkert ennþá undir þessu myllumerki.",
+ "empty_column.home": "Heimatímalínan þín er tóm! Skoðaðu {public} eða notaðu leitina til að komast í ganf og finna annað fólk.",
+ "empty_column.home.public_timeline": "opinbera tímalínan",
+ "empty_column.list": "Það er ennþá ekki neitt á þessum lista. Þegar meðlimir á listanum senda inn nýjar stöðufærslur, munu þær birtast hér.",
+ "empty_column.lists": "Þú ert ennþá ekki með neina lista. Þegar þú byrð til einhvern lista, munu hann birtast hér.",
+ "empty_column.mutes": "Þú hefur ekki þaggað niður í neinum notendum ennþá.",
+ "empty_column.notifications": "Þú ert ekki ennþá með neinar tilkynningar. Vertu í samskiptum við aðra til að umræður fari af stað.",
+ "empty_column.public": "Það er ekkert hér! Skrifaðu eitthvað opinberlega, eða fylgstu með notendum á öðrum netþjónum til að fylla upp í þetta",
+ "error.unexpected_crash.explanation": "Vegna villu í kóðanum okkar eða samhæfnivandamála í vafra er ekki hægt að birta þessa síðu svo vel sé.",
+ "error.unexpected_crash.next_steps": "Prófaðu að endurlesa síðuna. Ef það hjálpar ekki til, má samt vera að þú getir notað Mastodon í gegnum annan vafra eða forrit.",
+ "errors.unexpected_crash.copy_stacktrace": "Afrita rakningarupplýsingar (stacktrace) á klippispjald",
+ "errors.unexpected_crash.report_issue": "Tilkynna vandamál",
+ "follow_request.authorize": "Heimila",
+ "follow_request.reject": "Hafna",
+ "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.",
+ "getting_started.developers": "Forritarar",
+ "getting_started.directory": "Notandasniðamappa",
+ "getting_started.documentation": "Hjálparskjöl",
+ "getting_started.heading": "Komast í gang",
+ "getting_started.invite": "Bjóða fólki",
+ "getting_started.open_source_notice": "Mastodon er opinn og frjáls hugbúnaður. Þú getur lagt þitt af mörkum eða tilkynnt um vandamál á GitHub á slóðinni {github}.",
+ "getting_started.security": "Stillingar notandaaðgangs",
+ "getting_started.terms": "Þjónustuskilmálar",
+ "hashtag.column_header.tag_mode.all": "og {additional}",
+ "hashtag.column_header.tag_mode.any": "eða {additional}",
+ "hashtag.column_header.tag_mode.none": "án {additional}",
+ "hashtag.column_settings.select.no_options_message": "Engar tillögur fundust",
+ "hashtag.column_settings.select.placeholder": "Settu inn myllumerki…",
+ "hashtag.column_settings.tag_mode.all": "Allt þetta",
+ "hashtag.column_settings.tag_mode.any": "Hvað sem er af þessu",
+ "hashtag.column_settings.tag_mode.none": "Ekkert af þessu",
+ "hashtag.column_settings.tag_toggle": "Taka með viðbótarmerki fyrir þennan dálk",
+ "home.column_settings.basic": "Einfalt",
+ "home.column_settings.show_reblogs": "Sýna endurbirtingar",
+ "home.column_settings.show_replies": "Birta svör",
+ "home.hide_announcements": "Fela auglýsingar",
+ "home.show_announcements": "Birta auglýsingar",
+ "intervals.full.days": "{number, plural, one {# dagur} other {# dagar}}",
+ "intervals.full.hours": "{number, plural, one {# klukkustund} other {# klukkustundir}}",
+ "intervals.full.minutes": "{number, plural, one {# mínúta} other {# mínútur}}",
+ "introduction.federation.action": "Næsta",
+ "introduction.federation.federated.headline": "Sameiginlegt",
+ "introduction.federation.federated.text": "Opinberar færslur frá öðrum vefþjónum í skýjasambandinu birtast á sameiginlegu tímalínunni.",
+ "introduction.federation.home.headline": "Heim",
+ "introduction.federation.home.text": "Færslur frá fólki sem þú fylgist með birtast í heimastreyminu þínu. Þú getur fylgst með hverjum sem er á hvaða vefþjóni sem er!",
+ "introduction.federation.local.headline": "Staðvært",
+ "introduction.federation.local.text": "Opinberar færslur frá fólki á sama vefþjóni og þú birtast á staðværu tímalínunni.",
+ "introduction.interactions.action": "Ljúka leiðarvísinum!",
+ "introduction.interactions.favourite.headline": "Eftirlæti",
+ "introduction.interactions.favourite.text": "Þú getur vistað tíst til að eiga í handraðanum og látið höfundinn vita að þér hafi líkað það með því að setja það í eftirlætin þín.",
+ "introduction.interactions.reblog.headline": "Endurbirting",
+ "introduction.interactions.reblog.text": "Þú getur deilt tístum frá öðru fólki til þeirra sem fylgjast með þér með því að endurbirta færslurnar.",
+ "introduction.interactions.reply.headline": "Svara",
+ "introduction.interactions.reply.text": "Þú getur svarað tístum frá öðru fólki og eins sjálfum þér, sem mun binda tístin saman í samtal.",
+ "introduction.welcome.action": "Drífum okkur!",
+ "introduction.welcome.headline": "Fyrstu skrefin",
+ "introduction.welcome.text": "Velkomin í skýjasambandið (fediverse)! Eftir augnablik geturðu farið að útvarpa skilaboðum og spjalla við vini þína úti um víða veröld, allt í gegnum ýmsar gerðir vefþjóna sem samt geta talað saman. En þessi vefþjónn, {domain}, er sérstakur — hann hýsir notandasniðið þitt, þannig að þú skalt muna hvað hann heitir.",
+ "keyboard_shortcuts.back": "að fara til baka",
+ "keyboard_shortcuts.blocked": "að opna lista yfir útilokaða notendur",
+ "keyboard_shortcuts.boost": "að endurbirta",
+ "keyboard_shortcuts.column": "að setja virkni á stöðufærslu í einum af dálkunum",
+ "keyboard_shortcuts.compose": "að setja virkni á textainnsetningarreit",
+ "keyboard_shortcuts.description": "Lýsing",
+ "keyboard_shortcuts.direct": "að opna dálk með beinum skilaboðum",
+ "keyboard_shortcuts.down": "að fara neðar í listanum",
+ "keyboard_shortcuts.enter": "að opna stöðufærslu",
+ "keyboard_shortcuts.favourite": "að setja í eftirlæti",
+ "keyboard_shortcuts.favourites": "að opna eftirlætislista",
+ "keyboard_shortcuts.federated": "að opna sameiginlega tímalínu",
+ "keyboard_shortcuts.heading": "Flýtileiðir á lyklaborði",
+ "keyboard_shortcuts.home": "að opna heimatímalínu",
+ "keyboard_shortcuts.hotkey": "Flýtilykill",
+ "keyboard_shortcuts.legend": "að birta þessa skýringu",
+ "keyboard_shortcuts.local": "að opna staðværa tímalínu",
+ "keyboard_shortcuts.mention": "að minnast á höfund",
+ "keyboard_shortcuts.muted": "að opna lista yfir þaggaða notendur",
+ "keyboard_shortcuts.my_profile": "að opna notandasniðið þitt",
+ "keyboard_shortcuts.notifications": "að opna tilkynningadálk",
+ "keyboard_shortcuts.open_media": "til að opna margmiðlunargögn",
+ "keyboard_shortcuts.pinned": "að opna lista yfir föst tíst",
+ "keyboard_shortcuts.profile": "að opna notandasnið höfundar",
+ "keyboard_shortcuts.reply": "að svara",
+ "keyboard_shortcuts.requests": "að opna lista yfir fylgjendabeiðnir",
+ "keyboard_shortcuts.search": "að setja virkni í leit",
+ "keyboard_shortcuts.spoilers": "til að birta/fela reit með aðvörun vegna efnis",
+ "keyboard_shortcuts.start": "að opna \"komast í gang\" dálk",
+ "keyboard_shortcuts.toggle_hidden": "að birta/fela texta á bak við aðvörun vegna efnis",
+ "keyboard_shortcuts.toggle_sensitivity": "að birta/fela myndir",
+ "keyboard_shortcuts.toot": "að byrja glænýtt tíst",
+ "keyboard_shortcuts.unfocus": "að taka virkni úr textainnsetningarreit eða leit",
+ "keyboard_shortcuts.up": "að fara ofar í listanum",
+ "lightbox.close": "Loka",
+ "lightbox.next": "Næsta",
+ "lightbox.previous": "Fyrra",
+ "lightbox.view_context": "Skoða samhengi",
+ "lists.account.add": "Bæta á lista",
+ "lists.account.remove": "Fjarlægja af lista",
+ "lists.delete": "Eyða lista",
+ "lists.edit": "Breyta lista",
+ "lists.edit.submit": "Breyta titli",
+ "lists.new.create": "Bæta við lista",
+ "lists.new.title_placeholder": "Titill á nýjum lista",
+ "lists.search": "Leita meðal þeirra sem þú fylgist með",
+ "lists.subheading": "Listarnir þínir",
+ "load_pending": "{count, plural, one {# nýtt atriði} other {# ný atriði}}",
+ "loading_indicator.label": "Hleð inn...",
+ "media_gallery.toggle_visible": "Víxla sýnileika",
+ "missing_indicator.label": "Fannst ekki",
+ "missing_indicator.sublabel": "Tilfangið fannst ekki",
+ "mute_modal.hide_notifications": "Fela tilkynningar frá þessum notanda?",
+ "navigation_bar.apps": "Farsímaforrit",
+ "navigation_bar.blocks": "Útilokaðir notendur",
+ "navigation_bar.bookmarks": "Bókamerki",
+ "navigation_bar.community_timeline": "Staðvær tímalína",
+ "navigation_bar.compose": "Semja nýtt tíst",
+ "navigation_bar.direct": "Bein skilaboð",
+ "navigation_bar.discover": "Uppgötva",
+ "navigation_bar.domain_blocks": "Falin lén",
+ "navigation_bar.edit_profile": "Breyta notandasniði",
+ "navigation_bar.favourites": "Eftirlæti",
+ "navigation_bar.filters": "Þögguð orð",
+ "navigation_bar.follow_requests": "Beiðnir um að fylgjast með",
+ "navigation_bar.follows_and_followers": "Fylgist með og fylgjendur",
+ "navigation_bar.info": "Um þennan vefþjón",
+ "navigation_bar.keyboard_shortcuts": "Flýtilyklar",
+ "navigation_bar.lists": "Listar",
+ "navigation_bar.logout": "Útskráning",
+ "navigation_bar.mutes": "Þaggaðir notendur",
+ "navigation_bar.personal": "Einka",
+ "navigation_bar.pins": "Föst tíst",
+ "navigation_bar.preferences": "Kjörstillingar",
+ "navigation_bar.public_timeline": "Sameiginleg tímalína",
+ "navigation_bar.security": "Öryggi",
+ "notification.favourite": "{name} setti stöðufærslu þína í eftirlæti",
+ "notification.follow": "{name} fylgist með þér",
+ "notification.follow_request": "{name} hefur beðið um að fylgjast með þér",
+ "notification.mention": "{name} minntist á þig",
+ "notification.own_poll": "Könnuninni þinni er lokið",
+ "notification.poll": "Könnun sem þú tókst þátt í er lokið",
+ "notification.reblog": "{name} endurbirti stöðufærsluna þína",
+ "notifications.clear": "Hreinsa tilkynningar",
+ "notifications.clear_confirmation": "Ertu viss um að þú viljir endanlega eyða öllum tilkynningunum þínum?",
+ "notifications.column_settings.alert": "Tilkynningar á skjáborði",
+ "notifications.column_settings.favourite": "Eftirlæti:",
+ "notifications.column_settings.filter_bar.advanced": "Birta alla flokka",
+ "notifications.column_settings.filter_bar.category": "Skyndisíustika",
+ "notifications.column_settings.filter_bar.show": "Sýna",
+ "notifications.column_settings.follow": "Nýir fylgjendur:",
+ "notifications.column_settings.follow_request": "Nýjar beiðnir um að fylgjast með:",
+ "notifications.column_settings.mention": "Tilvísanir:",
+ "notifications.column_settings.poll": "Niðurstöður könnunar:",
+ "notifications.column_settings.push": "Ýti-tilkynningar",
+ "notifications.column_settings.reblog": "Endurbirtingar:",
+ "notifications.column_settings.show": "Sýna í dálki",
+ "notifications.column_settings.sound": "Spila hljóð",
+ "notifications.filter.all": "Allt",
+ "notifications.filter.boosts": "Endurbirtingar",
+ "notifications.filter.favourites": "Eftirlæti",
+ "notifications.filter.follows": "Fylgist með",
+ "notifications.filter.mentions": "Tilvísanir",
+ "notifications.filter.polls": "Niðurstöður könnunar",
+ "notifications.group": "{count} tilkynningar",
+ "poll.closed": "Lokað",
+ "poll.refresh": "Endurlesa",
+ "poll.total_people": "{count, plural, one {# aðili} other {# aðilar}}",
+ "poll.total_votes": "{count, plural, one {# atkvæði} other {# atkvæði}}",
+ "poll.vote": "Greiða atkvæði",
+ "poll.voted": "Þú kaust þetta svar",
+ "poll_button.add_poll": "Bæta við könnun",
+ "poll_button.remove_poll": "Fjarlægja könnun",
+ "privacy.change": "Aðlaga gagnaleynd stöðufærslu",
+ "privacy.direct.long": "Senda einungis á notendur sem minnst er á",
+ "privacy.direct.short": "Beint",
+ "privacy.private.long": "Senda einungis á fylgjendur",
+ "privacy.private.short": "Einungis fylgjendur",
+ "privacy.public.long": "Senda á opinberar tímalínur",
+ "privacy.public.short": "Opinbert",
+ "privacy.unlisted.long": "Ekki senda á opinberar tímalínur",
+ "privacy.unlisted.short": "Óskráð",
+ "refresh": "Endurlesa",
+ "regeneration_indicator.label": "Hleð inn…",
+ "regeneration_indicator.sublabel": "Verið er að útbúa heimastreymið þitt!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}kl.",
+ "relative_time.just_now": "núna",
+ "relative_time.minutes": "{number}mín",
+ "relative_time.seconds": "{number}sek",
+ "relative_time.today": "í dag",
+ "reply_indicator.cancel": "Hætta við",
+ "report.forward": "Áframsenda til {target}",
+ "report.forward_hint": "Notandaaðgangurinn er af öðrum vefþjóni. Á einnig að senda nafnlaust afrit af kærunni þangað?",
+ "report.hint": "Kæran verður send á umsjónarmenn vefþjónsins þíns. Þú getur gefið skýringu hér fyrir neðan á því af hverju þú ert að kæra þennan notandaaðgang:",
+ "report.placeholder": "Viðbótarathugasemdir",
+ "report.submit": "Senda inn",
+ "report.target": "Kæri {target}",
+ "search.placeholder": "Leita",
+ "search_popout.search_format": "Snið ítarlegrar leitar",
+ "search_popout.tips.full_text": "Einfaldur texti skilar stöðufærslum sem þú hefur skrifað, sett í eftirlæti, endurbirt eða verið minnst á þig í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.",
+ "search_popout.tips.hashtag": "myllumerki",
+ "search_popout.tips.status": "stöðufærsla",
+ "search_popout.tips.text": "Einfaldur texti skilar samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum",
+ "search_popout.tips.user": "notandi",
+ "search_results.accounts": "Fólk",
+ "search_results.hashtags": "Myllumerki",
+ "search_results.statuses": "Tíst",
+ "search_results.statuses_fts_disabled": "Að leita í efni tísta er ekki virk á þessum Mastodon-þjóni.",
+ "search_results.total": "{count, number} {count, plural, one {niðurstaða} other {niðurstöður}}",
+ "status.admin_account": "Opna umsjónarviðmót fyrir @{name}",
+ "status.admin_status": "Opna þessa stöðufærslu í umsjónarviðmótinu",
+ "status.block": "Útiloka @{name}",
+ "status.bookmark": "Bókamerki",
+ "status.cancel_reblog_private": "Taka úr endurbirtingu",
+ "status.cannot_reblog": "Þessa færslu er ekki hægt að endurbirta",
+ "status.copy": "Afrita tengil í stöðufærslu",
+ "status.delete": "Eyða",
+ "status.detailed_status": "Nákvæm spjallþráðasýn",
+ "status.direct": "Bein skilaboð @{name}",
+ "status.embed": "Ívefja",
+ "status.favourite": "Eftirlæti",
+ "status.filtered": "Síað",
+ "status.load_more": "Hlaða inn meiru",
+ "status.media_hidden": "Mynd er falin",
+ "status.mention": "Minnast á @{name}",
+ "status.more": "Meira",
+ "status.mute": "Þagga niður í @{name}",
+ "status.mute_conversation": "Þagga niður í samtali",
+ "status.open": "Útliða þessa stöðu",
+ "status.pin": "Festa á notandasnið",
+ "status.pinned": "Fast tíst",
+ "status.read_more": "Lesa meira",
+ "status.reblog": "Endurbirting",
+ "status.reblog_private": "Endurbirta til upphaflegra lesenda",
+ "status.reblogged_by": "{name} endurbirti",
+ "status.reblogs.empty": "Enginn hefur ennþá endurbirt þetta tíst. Þegar einhverjir gera það, munu þeir birtast hér.",
+ "status.redraft": "Eyða og enduvinna drög",
+ "status.remove_bookmark": "Fjarlægja bókamerki",
+ "status.reply": "Svara",
+ "status.replyAll": "Svara þræði",
+ "status.report": "Kæra @{name}",
+ "status.sensitive_warning": "Viðkvæmt efni",
+ "status.share": "Deila",
+ "status.show_less": "Sýna minna",
+ "status.show_less_all": "Sýna minna fyrir allt",
+ "status.show_more": "Sýna meira",
+ "status.show_more_all": "Sýna meira fyrir allt",
+ "status.show_thread": "Birta þráð",
+ "status.uncached_media_warning": "Ekki tiltækt",
+ "status.unmute_conversation": "Hætta að þagga niður í samtali",
+ "status.unpin": "Losa af notandasniði",
+ "suggestions.dismiss": "Hafna tillögu",
+ "suggestions.header": "Þú gætir haft áhuga á…",
+ "tabs_bar.federated_timeline": "Sameiginlegt",
+ "tabs_bar.home": "Heim",
+ "tabs_bar.local_timeline": "Staðvært",
+ "tabs_bar.notifications": "Tilkynningar",
+ "tabs_bar.search": "Leita",
+ "time_remaining.days": "{number, plural, one {# dagur} other {# dagar}} eftir",
+ "time_remaining.hours": "{number, plural, one {# klukkustund} other {# klukkustundir}} eftir",
+ "time_remaining.minutes": "{number, plural, one {# mínúta} other {# mínútur}} eftir",
+ "time_remaining.moments": "Tími eftir",
+ "time_remaining.seconds": "{number, plural, one {# sekúnda} other {# sekúndur}} eftir",
+ "timeline_hint.remote_resource_not_displayed": "{resource} frá öðrum netþjónum er ekki birt.",
+ "timeline_hint.resources.followers": "Fylgjendur",
+ "timeline_hint.resources.follows": "Fylgist með",
+ "timeline_hint.resources.statuses": "Eldri tíst",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {aðili} other {aðilar}} að tala",
+ "trends.trending_now": "Í umræðunni núna",
+ "ui.beforeunload": "Drögin tapast ef þú ferð út úr Mastodon.",
+ "upload_area.title": "Dragðu-og-slepptu hér til að senda inn",
+ "upload_button.label": "Bæta við ({formats}) myndskrá",
+ "upload_error.limit": "Fór yfir takmörk á innsendingum skráa.",
+ "upload_error.poll": "Innsending skráa er ekki leyfð í könnunum.",
+ "upload_form.audio_description": "Lýstu þessu fyrir heyrnarskerta",
+ "upload_form.description": "Lýstu þessu fyrir sjónskerta",
+ "upload_form.edit": "Breyta",
+ "upload_form.undo": "Eyða",
+ "upload_form.video_description": "Lýstu þessu fyrir fólk sem heyrir illa eða er með skerta sjón",
+ "upload_modal.analyzing_picture": "Greini mynd…",
+ "upload_modal.apply": "Virkja",
+ "upload_modal.description_placeholder": "Öllum dýrunum í skóginum þætti bezt að vera vinir",
+ "upload_modal.detect_text": "Skynja texta úr mynd",
+ "upload_modal.edit_media": "Breyta myndskrá",
+ "upload_modal.hint": "Smelltu eða dragðu til hringinn á forskoðuninni til að velja miðpunktinn sem verður alltaf sýnilegastur á öllum smámyndum.",
+ "upload_modal.preview_label": "Forskoðun ({ratio})",
+ "upload_progress.label": "Er að senda inn...",
+ "video.close": "Loka myndskeiði",
+ "video.download": "Sækja skrá",
+ "video.exit_fullscreen": "Hætta í skjáfylli",
+ "video.expand": "Stækka myndskeið",
+ "video.fullscreen": "Skjáfylli",
+ "video.hide": "Fela myndskeið",
+ "video.mute": "Þagga hljóð",
+ "video.pause": "Gera hlé",
+ "video.play": "Spila",
+ "video.unmute": "Kveikja á hljóði"
+}
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 8d4b8f66e..03597e06f 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -1,24 +1,28 @@
{
- "account.add_or_remove_from_list": "Aggiungi o togli dalle liste",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Aggiungi o Rimuovi dagli elenchi",
"account.badges.bot": "Bot",
+ "account.badges.group": "Gruppo",
"account.block": "Blocca @{name}",
- "account.block_domain": "Nascondi tutto da {domain}",
+ "account.block_domain": "Blocca dominio {domain}",
"account.blocked": "Bloccato",
- "account.cancel_follow_request": "Annulla richiesta di seguito",
- "account.direct": "Invia messaggio privato a @{name}",
- "account.domain_blocked": "Dominio nascosto",
+ "account.browse_more_on_origin_server": "Naviga di più sul profilo originale",
+ "account.cancel_follow_request": "Annulla richiesta di seguirti",
+ "account.direct": "Messaggio diretto a @{name}",
+ "account.domain_blocked": "Dominio bloccato",
"account.edit_profile": "Modifica profilo",
- "account.endorse": "Metti in evidenza sul profilo",
+ "account.endorse": "Mostra sul profilo",
"account.follow": "Segui",
"account.followers": "Seguaci",
"account.followers.empty": "Ancora nessuno segue questo utente.",
"account.follows": "Segue",
"account.follows.empty": "Questo utente non segue ancora nessuno.",
"account.follows_you": "Ti segue",
- "account.hide_reblogs": "Nascondi condivisioni da @{name}",
+ "account.hide_reblogs": "Nascondi incrementi da @{name}",
"account.last_status": "Ultima attività",
"account.link_verified_on": "La proprietà di questo link è stata controllata il {date}",
- "account.locked_info": "Il livello di privacy di questo account è impostato a \"bloccato\". Il proprietario esamina manualmente le richieste di seguirlo.",
+ "account.locked_info": "Lo stato di privacy del profilo è impostato a bloccato. Il proprietario revisiona manualmente chi lo può seguire.",
"account.media": "Media",
"account.mention": "Menziona @{name}",
"account.moved_to": "{name} si è trasferito su:",
@@ -29,115 +33,126 @@
"account.posts": "Toot",
"account.posts_with_replies": "Toot e risposte",
"account.report": "Segnala @{name}",
- "account.requested": "In attesa di approvazione",
+ "account.requested": "In attesa di approvazione. Clicca per annullare la richiesta di seguire",
"account.share": "Condividi il profilo di @{name}",
- "account.show_reblogs": "Mostra condivisioni da @{name}",
+ "account.show_reblogs": "Mostra incrementi da @{name}",
"account.unblock": "Sblocca @{name}",
- "account.unblock_domain": "Non nascondere {domain}",
- "account.unendorse": "Non mettere in evidenza sul profilo",
- "account.unfollow": "Non seguire",
+ "account.unblock_domain": "Sblocca il dominio {domain}",
+ "account.unendorse": "Non mostrare sul profilo",
+ "account.unfollow": "Smetti di seguire",
"account.unmute": "Non silenziare @{name}",
- "account.unmute_notifications": "Non silenziare più le notifiche da @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account.unmute_notifications": "Non silenziare le notifiche da @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Sei pregato di riprovare tra {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Intervallo limitato",
"alert.unexpected.message": "Si è verificato un errore inatteso.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Annuncio",
"autosuggest_hashtag.per_week": "{count} per settimana",
"boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta",
"bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.",
"bundle_column_error.retry": "Riprova",
"bundle_column_error.title": "Errore di rete",
"bundle_modal_error.close": "Chiudi",
- "bundle_modal_error.message": "C'è stato un errore mentre questo componente veniva caricato.",
+ "bundle_modal_error.message": "Qualcosa è andato storto durante il caricamento di questo componente.",
"bundle_modal_error.retry": "Riprova",
"column.blocks": "Utenti bloccati",
- "column.community": "Timeline locale",
+ "column.bookmarks": "Segnalibri",
+ "column.community": "Fuso orario locale",
"column.direct": "Messaggi diretti",
- "column.directory": "Sfoglia profili",
- "column.domain_blocks": "Domini nascosti",
- "column.favourites": "Apprezzati",
- "column.follow_requests": "Richieste di amicizia",
+ "column.directory": "Naviga profili",
+ "column.domain_blocks": "Domini bloccati",
+ "column.favourites": "Preferiti",
+ "column.follow_requests": "Richieste di seguirti",
"column.home": "Home",
- "column.lists": "Liste",
+ "column.lists": "Elenchi",
"column.mutes": "Utenti silenziati",
"column.notifications": "Notifiche",
- "column.pins": "Toot fissati in cima",
- "column.public": "Timeline federata",
+ "column.pins": "Toot in evidenza",
+ "column.public": "Fuso orario federato",
"column_back_button.label": "Indietro",
"column_header.hide_settings": "Nascondi impostazioni",
"column_header.moveLeft_settings": "Sposta colonna a sinistra",
"column_header.moveRight_settings": "Sposta colonna a destra",
- "column_header.pin": "Fissa in cima",
+ "column_header.pin": "Evidenzia",
"column_header.show_settings": "Mostra impostazioni",
- "column_header.unpin": "Non fissare in cima",
+ "column_header.unpin": "Non mettere in evidenza",
"column_subheading.settings": "Impostazioni",
- "community.column_settings.media_only": "Solo media",
- "compose_form.direct_message_warning": "Questo toot sarà mandato solo a tutti gli utenti menzionati.",
- "compose_form.direct_message_warning_learn_more": "Per saperne di più",
- "compose_form.hashtag_warning": "Questo toot non è listato, quindi non sarà trovato nelle ricerche per hashtag. Solo i toot pubblici possono essere cercati per hashtag.",
- "compose_form.lock_disclaimer": "Il tuo account non è {bloccato}. Chiunque può decidere di seguirti per vedere i tuoi post per soli seguaci.",
+ "community.column_settings.local_only": "Solo Locale",
+ "community.column_settings.media_only": "Solo Media",
+ "community.column_settings.remote_only": "Solo Remoto",
+ "compose_form.direct_message_warning": "Questo toot sarà inviato solo agli utenti menzionati.",
+ "compose_form.direct_message_warning_learn_more": "Scopri di più",
+ "compose_form.hashtag_warning": "Questo toot non sarà elencato sotto alcun hashtag poiché senza elenco. Solo i toot pubblici possono essere ricercati per hashtag.",
+ "compose_form.lock_disclaimer": "Il tuo profilo non è {locked}. Chiunque può seguirti per vedere i tuoi post solo per seguaci.",
"compose_form.lock_disclaimer.lock": "bloccato",
"compose_form.placeholder": "A cosa stai pensando?",
"compose_form.poll.add_option": "Aggiungi una scelta",
"compose_form.poll.duration": "Durata del sondaggio",
"compose_form.poll.option_placeholder": "Scelta {number}",
"compose_form.poll.remove_option": "Rimuovi questa scelta",
+ "compose_form.poll.switch_to_multiple": "Modifica sondaggio per consentire scelte multiple",
+ "compose_form.poll.switch_to_single": "Modifica sondaggio per consentire una singola scelta",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Segna media come sensibile",
"compose_form.sensitive.marked": "Questo media è contrassegnato come sensibile",
"compose_form.sensitive.unmarked": "Questo media non è contrassegnato come sensibile",
- "compose_form.spoiler.marked": "Il testo è nascosto dall'avviso",
+ "compose_form.spoiler.marked": "Il testo è nascosto dietro l'avviso",
"compose_form.spoiler.unmarked": "Il testo non è nascosto",
- "compose_form.spoiler_placeholder": "Content warning",
+ "compose_form.spoiler_placeholder": "Scrivi qui il tuo avviso",
"confirmation_modal.cancel": "Annulla",
"confirmations.block.block_and_report": "Blocca & Segnala",
"confirmations.block.confirm": "Blocca",
"confirmations.block.message": "Sei sicuro di voler bloccare {name}?",
"confirmations.delete.confirm": "Cancella",
- "confirmations.delete.message": "Sei sicuro di voler cancellare questo status?",
+ "confirmations.delete.message": "Sei sicuro di voler cancellare questo toot?",
"confirmations.delete_list.confirm": "Cancella",
"confirmations.delete_list.message": "Sei sicuro di voler cancellare definitivamente questa lista?",
- "confirmations.domain_block.confirm": "Nascondi intero dominio",
- "confirmations.domain_block.message": "Sei davvero sicuro che vuoi bloccare l'intero {domain}? Nella maggior parte dei casi, pochi blocchi o silenziamenti mirati sono sufficienti e preferibili. Non vedrai nessun contenuto di quel dominio né nelle timeline pubbliche né nelle notifiche. I tuoi seguaci di quel dominio saranno eliminati.",
- "confirmations.logout.confirm": "Esci",
- "confirmations.logout.message": "Sei sicuro di voler uscire?",
+ "confirmations.domain_block.confirm": "Blocca l'intero dominio",
+ "confirmations.domain_block.message": "Sei davvero, davvero sicuro di voler bloccare l'intero {domain}? In molti casi pochi blocchi di destinazione o muti sono sufficienti e preferibili. Non vedrai il contenuto da quel dominio in alcuna linea temporale pubblica o nelle tue notifiche. i tuoi seguaci saranno rimossi da quel dominio.",
+ "confirmations.logout.confirm": "Disconnettiti",
+ "confirmations.logout.message": "Sei sicuro di volerti disconnettere?",
"confirmations.mute.confirm": "Silenzia",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Questo nasconderà i post da loro ed i post che li menzionano, ma consentirà ancora loro di vedere i tuoi post e di seguirti.",
"confirmations.mute.message": "Sei sicuro di voler silenziare {name}?",
- "confirmations.redraft.confirm": "Cancella e riscrivi",
- "confirmations.redraft.message": "Sei sicuro di voler cancellare questo stato e riscriverlo? Perderai tutte le risposte, condivisioni e preferiti.",
+ "confirmations.redraft.confirm": "Cancella e rivali",
+ "confirmations.redraft.message": "Sei sicuro di voler eliminare questo toot e riscriverlo? I preferiti e gli incrementi saranno persi e le risposte al post originale saranno perse.",
"confirmations.reply.confirm": "Rispondi",
- "confirmations.reply.message": "Se rispondi ora, il messaggio che stai componendo sarà sovrascritto. Sei sicuro di voler continuare?",
+ "confirmations.reply.message": "Rispondere ora sovrascriverà il messaggio che stai correntemente componendo. Sei sicuro di voler procedere?",
"confirmations.unfollow.confirm": "Smetti di seguire",
- "confirmations.unfollow.message": "Sei sicuro che non vuoi più seguire {name}?",
+ "confirmations.unfollow.message": "Sei sicuro di non voler più seguire {name}?",
"conversation.delete": "Elimina conversazione",
"conversation.mark_as_read": "Segna come letto",
"conversation.open": "Visualizza conversazione",
"conversation.with": "Con {names}",
- "directory.federated": "Da un fediverso noto",
+ "directory.federated": "Da un fediverse noto",
"directory.local": "Solo da {domain}",
"directory.new_arrivals": "Nuovi arrivi",
"directory.recently_active": "Attivo di recente",
- "embed.instructions": "Inserisci questo status nel tuo sito copiando il codice qui sotto.",
+ "embed.instructions": "Incorpora questo toot sul tuo sito web copiando il codice sotto.",
"embed.preview": "Ecco come apparirà:",
"emoji_button.activity": "Attività",
"emoji_button.custom": "Personalizzato",
- "emoji_button.flags": "Bandiere",
- "emoji_button.food": "Cibo e bevande",
+ "emoji_button.flags": "Segnalazioni",
+ "emoji_button.food": "Cibo & Bevande",
"emoji_button.label": "Inserisci emoji",
"emoji_button.nature": "Natura",
"emoji_button.not_found": "Nessun emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Oggetti",
"emoji_button.people": "Persone",
- "emoji_button.recent": "Usati di frequente",
+ "emoji_button.recent": "Usati frequentemente",
"emoji_button.search": "Cerca...",
"emoji_button.search_results": "Risultati della ricerca",
"emoji_button.symbols": "Simboli",
- "emoji_button.travel": "Viaggi e luoghi",
- "empty_column.account_timeline": "Non ci sono toot qui!",
+ "emoji_button.travel": "Viaggi & Luoghi",
+ "empty_column.account_timeline": "Nessun toot qui!",
"empty_column.account_unavailable": "Profilo non disponibile",
- "empty_column.blocks": "Non hai ancora bloccato nessun utente.",
+ "empty_column.blocks": "Non hai ancora bloccato alcun utente.",
+ "empty_column.bookmarked_statuses": "Non hai ancora segnato alcun toot. Quando ne segni uno, sarà mostrato qui.",
"empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!",
"empty_column.direct": "Non hai ancora nessun messaggio privato. Quando ne manderai o riceverai qualcuno, apparirà qui.",
"empty_column.domain_blocks": "Non vi sono domini nascosti.",
@@ -152,12 +167,13 @@
"empty_column.mutes": "Non hai ancora silenziato nessun utente.",
"empty_column.notifications": "Non hai ancora nessuna notifica. Interagisci con altri per iniziare conversazioni.",
"empty_column.public": "Qui non c'è nulla! Scrivi qualcosa pubblicamente, o aggiungi utenti da altri server per riempire questo spazio",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "A causa di un bug nel nostro codice o di un problema di compatibilità del browser, questa pagina non può essere visualizzata correttamente.",
+ "error.unexpected_crash.next_steps": "Prova ad aggiornare la pagina. Se non funziona, potresti ancora essere in grado di utilizzare Mastodon attraverso un browser diverso o un'app nativa.",
+ "errors.unexpected_crash.copy_stacktrace": "Copia stacktrace negli appunti",
+ "errors.unexpected_crash.report_issue": "Segnala il problema",
"follow_request.authorize": "Autorizza",
"follow_request.reject": "Rifiuta",
+ "follow_requests.unlocked_explanation": "Anche se il tuo account non è bloccato, lo staff di {domain} ha pensato che potresti voler esaminare manualmente le richieste di seguirti di questi account.",
"getting_started.developers": "Sviluppatori",
"getting_started.directory": "Directory dei profili",
"getting_started.documentation": "Documentazione",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Semplice",
"home.column_settings.show_reblogs": "Mostra post condivisi",
"home.column_settings.show_replies": "Mostra risposte",
+ "home.hide_announcements": "Nascondi annunci",
+ "home.show_announcements": "Mostra annunci",
"intervals.full.days": "{number, plural, one {# giorno} other {# giorni}}",
"intervals.full.hours": "{number, plural, one {# ora} other {# ore}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "per aprire l'elenco degli utenti silenziati",
"keyboard_shortcuts.my_profile": "per aprire il tuo profilo",
"keyboard_shortcuts.notifications": "per aprire la colonna delle notifiche",
+ "keyboard_shortcuts.open_media": "per aprire media",
"keyboard_shortcuts.pinned": "per aprire l'elenco dei toot fissati in cima",
"keyboard_shortcuts.profile": "per aprire il profilo dell'autore",
"keyboard_shortcuts.reply": "per rispondere",
"keyboard_shortcuts.requests": "per aprire l'elenco delle richieste di seguirti",
"keyboard_shortcuts.search": "per spostare il focus sulla ricerca",
+ "keyboard_shortcuts.spoilers": "per mostrare/nascondere il campo CW",
"keyboard_shortcuts.start": "per aprire la colonna \"Come iniziare\"",
"keyboard_shortcuts.toggle_hidden": "per mostrare/nascondere il testo dei CW",
"keyboard_shortcuts.toggle_sensitivity": "mostrare/nascondere media",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Nascondere le notifiche da quest'utente?",
"navigation_bar.apps": "App per dispositivi mobili",
"navigation_bar.blocks": "Utenti bloccati",
+ "navigation_bar.bookmarks": "Segnalibri",
"navigation_bar.community_timeline": "Timeline locale",
"navigation_bar.compose": "Componi nuovo toot",
"navigation_bar.direct": "Messaggi diretti",
@@ -259,7 +280,7 @@
"navigation_bar.edit_profile": "Modifica profilo",
"navigation_bar.favourites": "Apprezzati",
"navigation_bar.filters": "Parole silenziate",
- "navigation_bar.follow_requests": "Richieste di amicizia",
+ "navigation_bar.follow_requests": "Richieste di seguirti",
"navigation_bar.follows_and_followers": "Seguiti e seguaci",
"navigation_bar.info": "Informazioni su questo server",
"navigation_bar.keyboard_shortcuts": "Tasti di scelta rapida",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Sicurezza",
"notification.favourite": "{name} ha apprezzato il tuo post",
"notification.follow": "{name} ha iniziato a seguirti",
+ "notification.follow_request": "{name} ha chiesto di seguirti",
"notification.mention": "{name} ti ha menzionato",
+ "notification.own_poll": "Il tuo sondaggio è terminato",
"notification.poll": "Un sondaggio in cui hai votato è terminato",
"notification.reblog": "{name} ha condiviso il tuo post",
"notifications.clear": "Cancella notifiche",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Filtro rapido",
"notifications.column_settings.filter_bar.show": "Mostra",
"notifications.column_settings.follow": "Nuovi seguaci:",
+ "notifications.column_settings.follow_request": "Nuove richieste di seguirti:",
"notifications.column_settings.mention": "Menzioni:",
"notifications.column_settings.poll": "Risultati del sondaggio:",
"notifications.column_settings.push": "Notifiche push",
@@ -299,10 +323,10 @@
"notifications.group": "{count} notifiche",
"poll.closed": "Chiuso",
"poll.refresh": "Aggiorna",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, one {# persona} other {# persone}}",
"poll.total_votes": "{count, plural, one {# voto} other {# voti}}",
"poll.vote": "Vota",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "Hai votato per questa risposta",
"poll_button.add_poll": "Aggiungi un sondaggio",
"poll_button.remove_poll": "Rimuovi sondaggio",
"privacy.change": "Modifica privacy del post",
@@ -314,7 +338,7 @@
"privacy.public.short": "Pubblico",
"privacy.unlisted.long": "Non mostrare sulla timeline pubblica",
"privacy.unlisted.short": "Non elencato",
- "refresh": "Refresh",
+ "refresh": "Aggiorna",
"regeneration_indicator.label": "Caricamento in corso…",
"regeneration_indicator.sublabel": "Stiamo preparando il tuo home feed!",
"relative_time.days": "{number}g",
@@ -322,6 +346,7 @@
"relative_time.just_now": "ora",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "oggi",
"reply_indicator.cancel": "Annulla",
"report.forward": "Inoltra a {target}",
"report.forward_hint": "Questo account appartiene a un altro server. Mandare anche là una copia anonima del rapporto?",
@@ -344,6 +369,7 @@
"status.admin_account": "Apri interfaccia di moderazione per @{name}",
"status.admin_status": "Apri questo status nell'interfaccia di moderazione",
"status.block": "Blocca @{name}",
+ "status.bookmark": "Aggiungi segnalibro",
"status.cancel_reblog_private": "Annulla condivisione",
"status.cannot_reblog": "Questo post non può essere condiviso",
"status.copy": "Copia link allo status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} ha condiviso",
"status.reblogs.empty": "Nessuno ha ancora condiviso questo toot. Quando qualcuno lo farà, comparirà qui.",
"status.redraft": "Cancella e riscrivi",
+ "status.remove_bookmark": "Elimina segnalibro",
"status.reply": "Rispondi",
"status.replyAll": "Rispondi alla conversazione",
"status.report": "Segnala @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minuto} other {# minuti}} left",
"time_remaining.moments": "Restano pochi istanti",
"time_remaining.seconds": "{number, plural, one {# secondo} other {# secondi}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource] da altri server non sono mostrati.",
+ "timeline_hint.resources.followers": "Seguaci",
+ "timeline_hint.resources.follows": "Segue",
+ "timeline_hint.resources.statuses": "Toot meno recenti",
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona ne sta} other {persone ne stanno}} parlando",
"trends.trending_now": "Di tendenza ora",
"ui.beforeunload": "La bozza andrà persa se esci da Mastodon.",
@@ -400,11 +431,13 @@
"upload_button.label": "Aggiungi file multimediale",
"upload_error.limit": "Limite al caricamento di file superato.",
"upload_error.poll": "Caricamento file non consentito nei sondaggi.",
+ "upload_form.audio_description": "Descrizione per persone con difetti uditivi",
"upload_form.description": "Descrizione per utenti con disabilità visive",
"upload_form.edit": "Modifica",
"upload_form.undo": "Cancella",
+ "upload_form.video_description": "Descrizione per persone con difetti uditivi o visivi",
"upload_modal.analyzing_picture": "Analisi immagine…",
- "upload_modal.apply": "Apply",
+ "upload_modal.apply": "Applica",
"upload_modal.description_placeholder": "Ma la volpe col suo balzo ha raggiunto il quieto Fido",
"upload_modal.detect_text": "Rileva testo dall'immagine",
"upload_modal.edit_media": "Modifica media",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Anteprima ({ratio})",
"upload_progress.label": "Sto caricando...",
"video.close": "Chiudi video",
+ "video.download": "Scarica file",
"video.exit_fullscreen": "Esci da modalità a schermo intero",
"video.expand": "Espandi video",
"video.fullscreen": "Schermo intero",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 5561e9da1..8e21c2d24 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -1,12 +1,16 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "リストから追加または外す",
"account.badges.bot": "Bot",
+ "account.badges.group": "Group",
"account.block": "@{name}さんをブロック",
- "account.block_domain": "{domain}全体を非表示",
+ "account.block_domain": "{domain}全体をブロック",
"account.blocked": "ブロック済み",
+ "account.browse_more_on_origin_server": "リモートで表示",
"account.cancel_follow_request": "フォローリクエストを取り消す",
"account.direct": "@{name}さんにダイレクトメッセージ",
- "account.domain_blocked": "ドメイン非表示中",
+ "account.domain_blocked": "ドメインブロック中",
"account.edit_profile": "プロフィール編集",
"account.endorse": "プロフィールで紹介する",
"account.follow": "フォロー",
@@ -33,15 +37,20 @@
"account.share": "@{name}さんのプロフィールを共有する",
"account.show_reblogs": "@{name}さんからのブーストを表示",
"account.unblock": "@{name}さんのブロックを解除",
- "account.unblock_domain": "{domain}の非表示を解除",
+ "account.unblock_domain": "{domain}のブロックを解除",
"account.unendorse": "プロフィールから外す",
"account.unfollow": "フォロー解除",
"account.unmute": "@{name}さんのミュートを解除",
"account.unmute_notifications": "@{name}さんからの通知を受け取るようにする",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "{retry_time, time, medium} 以降に再度実行してください。",
"alert.rate_limited.title": "制限に達しました",
"alert.unexpected.message": "不明なエラーが発生しました。",
"alert.unexpected.title": "エラー!",
+ "announcement.announcement": "お知らせ",
"autosuggest_hashtag.per_week": "{count} 回 / 週",
"boost_modal.combo": "次からは{combo}を押せばスキップできます",
"bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。",
@@ -51,10 +60,11 @@
"bundle_modal_error.message": "コンポーネントの読み込み中に問題が発生しました。",
"bundle_modal_error.retry": "再試行",
"column.blocks": "ブロックしたユーザー",
+ "column.bookmarks": "ブックマーク",
"column.community": "ローカルタイムライン",
"column.direct": "ダイレクトメッセージ",
"column.directory": "ディレクトリ",
- "column.domain_blocks": "非表示にしたドメイン",
+ "column.domain_blocks": "ブロックしたドメイン",
"column.favourites": "お気に入り",
"column.follow_requests": "フォローリクエスト",
"column.home": "ホーム",
@@ -71,7 +81,9 @@
"column_header.show_settings": "設定を表示",
"column_header.unpin": "ピン留めを外す",
"column_subheading.settings": "設定",
+ "community.column_settings.local_only": "ローカルのみ表示",
"community.column_settings.media_only": "メディアのみ表示",
+ "community.column_settings.remote_only": "リモートのみ表示",
"compose_form.direct_message_warning": "このトゥートはメンションされた人にのみ送信されます。",
"compose_form.direct_message_warning_learn_more": "もっと詳しく",
"compose_form.hashtag_warning": "このトゥートは公開設定ではないのでハッシュタグの一覧に表示されません。公開トゥートだけがハッシュタグで検索できます。",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "アンケート期間",
"compose_form.poll.option_placeholder": "項目 {number}",
"compose_form.poll.remove_option": "この項目を削除",
+ "compose_form.poll.switch_to_multiple": "複数選択に変更",
+ "compose_form.poll.switch_to_single": "単一選択に変更",
"compose_form.publish": "トゥート",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "メディアを閲覧注意にする",
@@ -98,12 +112,12 @@
"confirmations.delete.message": "本当に削除しますか?",
"confirmations.delete_list.confirm": "削除",
"confirmations.delete_list.message": "本当にこのリストを完全に削除しますか?",
- "confirmations.domain_block.confirm": "ドメイン全体を非表示",
+ "confirmations.domain_block.confirm": "ドメイン全体をブロック",
"confirmations.domain_block.message": "本当に{domain}全体を非表示にしますか? 多くの場合は個別にブロックやミュートするだけで充分であり、また好ましいです。公開タイムラインにそのドメインのコンテンツが表示されなくなり、通知も届かなくなります。そのドメインのフォロワーはアンフォローされます。",
"confirmations.logout.confirm": "ログアウト",
"confirmations.logout.message": "本当にログアウトしますか?",
"confirmations.mute.confirm": "ミュート",
- "confirmations.mute.explanation": "これにより相手のトゥートと返信は見えなくなりますが、引き続きあなたをフォローしトゥートを見ることはできます。",
+ "confirmations.mute.explanation": "これにより相手のトゥートと返信は見えなくなりますが、相手はあなたをフォローし続けトゥートを見ることができます。",
"confirmations.mute.message": "本当に{name}さんをミュートしますか?",
"confirmations.redraft.confirm": "削除して下書きに戻す",
"confirmations.redraft.message": "本当にこのトゥートを削除して下書きに戻しますか? このトゥートへのお気に入り登録やブーストは失われ、返信は孤立することになります。",
@@ -138,9 +152,10 @@
"empty_column.account_timeline": "トゥートがありません!",
"empty_column.account_unavailable": "プロフィールは利用できません",
"empty_column.blocks": "まだ誰もブロックしていません。",
+ "empty_column.bookmarked_statuses": "まだ何もブックマーク登録していません。ブックマーク登録するとここに表示されます。",
"empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!",
"empty_column.direct": "ダイレクトメッセージはまだありません。ダイレクトメッセージをやりとりすると、ここに表示されます。",
- "empty_column.domain_blocks": "非表示にしているドメインはありません。",
+ "empty_column.domain_blocks": "ブロックしているドメインはありません。",
"empty_column.favourited_statuses": "まだ何もお気に入り登録していません。お気に入り登録するとここに表示されます。",
"empty_column.favourites": "まだ誰もお気に入り登録していません。お気に入り登録されるとここに表示されます。",
"empty_column.follow_requests": "まだフォローリクエストを受けていません。フォローリクエストを受けるとここに表示されます。",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "問題を報告",
"follow_request.authorize": "許可",
"follow_request.reject": "拒否",
+ "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain} のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。",
"getting_started.developers": "開発",
"getting_started.directory": "ディレクトリ",
"getting_started.documentation": "ドキュメント",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "基本設定",
"home.column_settings.show_reblogs": "ブースト表示",
"home.column_settings.show_replies": "返信表示",
+ "home.hide_announcements": "お知らせを隠す",
+ "home.show_announcements": "お知らせを表示",
"intervals.full.days": "{number}日",
"intervals.full.hours": "{number}時間",
"intervals.full.minutes": "{number}分",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "ミュートしたユーザーのリストを開く",
"keyboard_shortcuts.my_profile": "自分のプロフィールを開く",
"keyboard_shortcuts.notifications": "通知カラムを開く",
+ "keyboard_shortcuts.open_media": "メディアを開く",
"keyboard_shortcuts.pinned": "固定したトゥートのリストを開く",
"keyboard_shortcuts.profile": "プロフィールを開く",
"keyboard_shortcuts.reply": "返信",
"keyboard_shortcuts.requests": "フォローリクエストのリストを開く",
"keyboard_shortcuts.search": "検索欄に移動",
+ "keyboard_shortcuts.spoilers": "閲覧注意を表示する/隠す",
"keyboard_shortcuts.start": "\"スタート\" カラムを開く",
"keyboard_shortcuts.toggle_hidden": "CWで隠れた文を見る/隠す",
"keyboard_shortcuts.toggle_sensitivity": "非表示のメディアを見る/隠す",
@@ -245,17 +265,18 @@
"lists.subheading": "あなたのリスト",
"load_pending": "{count} 件の新着",
"loading_indicator.label": "読み込み中...",
- "media_gallery.toggle_visible": "表示切り替え",
+ "media_gallery.toggle_visible": "メディアを隠す",
"missing_indicator.label": "見つかりません",
"missing_indicator.sublabel": "見つかりませんでした",
"mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?",
"navigation_bar.apps": "アプリ",
"navigation_bar.blocks": "ブロックしたユーザー",
+ "navigation_bar.bookmarks": "ブックマーク",
"navigation_bar.community_timeline": "ローカルタイムライン",
"navigation_bar.compose": "トゥートの新規作成",
"navigation_bar.direct": "ダイレクトメッセージ",
"navigation_bar.discover": "見つける",
- "navigation_bar.domain_blocks": "非表示にしたドメイン",
+ "navigation_bar.domain_blocks": "ブロックしたドメイン",
"navigation_bar.edit_profile": "プロフィールを編集",
"navigation_bar.favourites": "お気に入り",
"navigation_bar.filters": "フィルター設定",
@@ -273,7 +294,9 @@
"navigation_bar.security": "セキュリティ",
"notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました",
"notification.follow": "{name}さんにフォローされました",
+ "notification.follow_request": "{name} さんがあなたにフォローリクエストしました",
"notification.mention": "{name}さんがあなたに返信しました",
+ "notification.own_poll": "アンケートが終了しました",
"notification.poll": "アンケートが終了しました",
"notification.reblog": "{name}さんがあなたのトゥートをブーストしました",
"notifications.clear": "通知を消去",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "クイックフィルターバー",
"notifications.column_settings.filter_bar.show": "表示",
"notifications.column_settings.follow": "新しいフォロワー:",
+ "notifications.column_settings.follow_request": "新しいフォローリクエスト:",
"notifications.column_settings.mention": "返信:",
"notifications.column_settings.poll": "アンケート結果:",
"notifications.column_settings.push": "プッシュ通知",
@@ -306,13 +330,13 @@
"poll_button.add_poll": "アンケートを追加",
"poll_button.remove_poll": "アンケートを削除",
"privacy.change": "公開範囲を変更",
- "privacy.direct.long": "メンションしたユーザーだけに公開",
+ "privacy.direct.long": "送信した相手のみ閲覧可",
"privacy.direct.short": "ダイレクト",
- "privacy.private.long": "フォロワーだけに公開",
+ "privacy.private.long": "フォロワーのみ閲覧可",
"privacy.private.short": "フォロワー限定",
- "privacy.public.long": "公開TLに投稿する",
+ "privacy.public.long": "誰でも閲覧可、公開TLに表示",
"privacy.public.short": "公開",
- "privacy.unlisted.long": "公開TLで表示しない",
+ "privacy.unlisted.long": "誰でも閲覧可、公開TLに非表示",
"privacy.unlisted.short": "未収載",
"refresh": "更新",
"regeneration_indicator.label": "読み込み中…",
@@ -322,6 +346,7 @@
"relative_time.just_now": "今",
"relative_time.minutes": "{number}分前",
"relative_time.seconds": "{number}秒前",
+ "relative_time.today": "今日",
"reply_indicator.cancel": "キャンセル",
"report.forward": "{target} に転送する",
"report.forward_hint": "このアカウントは別のサーバーに所属しています。通報内容を匿名で転送しますか?",
@@ -344,6 +369,7 @@
"status.admin_account": "@{name} のモデレーション画面を開く",
"status.admin_status": "このトゥートをモデレーション画面で開く",
"status.block": "@{name}さんをブロック",
+ "status.bookmark": "ブックマーク",
"status.cancel_reblog_private": "ブースト解除",
"status.cannot_reblog": "この投稿はブーストできません",
"status.copy": "トゥートへのリンクをコピー",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name}さんがブースト",
"status.reblogs.empty": "まだ誰もブーストしていません。ブーストされるとここに表示されます。",
"status.redraft": "削除して下書きに戻す",
+ "status.remove_bookmark": "ブックマークを削除",
"status.reply": "返信",
"status.replyAll": "全員に返信",
"status.report": "@{name}さんを通報",
@@ -393,16 +420,22 @@
"time_remaining.minutes": "残り{number}分",
"time_remaining.moments": "まもなく終了",
"time_remaining.seconds": "残り{number}秒",
+ "timeline_hint.remote_resource_not_displayed": "他のサーバーの{resource}は表示されません。",
+ "timeline_hint.resources.followers": "フォロワー",
+ "timeline_hint.resources.follows": "フォロー",
+ "timeline_hint.resources.statuses": "以前のトゥート",
"trends.count_by_accounts": "{count}人がトゥート",
"trends.trending_now": "トレンドタグ",
"ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。",
"upload_area.title": "ドラッグ&ドロップでアップロード",
- "upload_button.label": "メディアを追加 ({formats})",
+ "upload_button.label": "メディアを追加 (複数の画像または1つの動画か音声ファイル)",
"upload_error.limit": "アップロードできる上限を超えています。",
"upload_error.poll": "アンケートではファイルをアップロードできません。",
- "upload_form.description": "視覚障害者のための説明",
+ "upload_form.audio_description": "聴取が難しいユーザーへの説明",
+ "upload_form.description": "閲覧が難しいユーザーへの説明",
"upload_form.edit": "編集",
"upload_form.undo": "削除",
+ "upload_form.video_description": "視聴が難しいユーザーへの説明",
"upload_modal.analyzing_picture": "画像を解析中…",
"upload_modal.apply": "適用",
"upload_modal.description_placeholder": "あのイーハトーヴォのすきとおった風",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "プレビュー ({ratio})",
"upload_progress.label": "アップロード中...",
"video.close": "動画を閉じる",
+ "video.download": "ダウンロード",
"video.exit_fullscreen": "全画面を終了する",
"video.expand": "動画を拡大する",
"video.fullscreen": "全画面",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 35789374a..720dfe4c7 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "ბოტი",
+ "account.badges.group": "Group",
"account.block": "დაბლოკე @{name}",
"account.block_domain": "დაიმალოს ყველაფერი დომენიდან {domain}",
"account.blocked": "დაიბლოკა",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "პირდაპირი წერილი @{name}-ს",
"account.domain_blocked": "დომენი დამალულია",
@@ -38,11 +42,16 @@
"account.unfollow": "ნუღარ მიჰყვები",
"account.unmute": "ნუღარ აჩუმებ @{name}-ს",
"account.unmute_notifications": "ნუღარ აჩუმებ შეტყობინებებს @{name}-სგან",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "წარმოიშვა მოულოდნელი შეცდომა.",
"alert.unexpected.title": "უპს!",
- "autosuggest_hashtag.per_week": "{count} per week",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "კვირაში {count}",
"boost_modal.combo": "შეგიძლიათ დააჭიროთ {combo}-ს რათა შემდეგ ჯერზე გამოტოვოთ ეს",
"bundle_column_error.body": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.",
"bundle_column_error.retry": "სცადეთ კიდევ ერთხელ",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.",
"bundle_modal_error.retry": "სცადეთ კიდევ ერთხელ",
"column.blocks": "დაბლოკილი მომხმარებლები",
+ "column.bookmarks": "Bookmarks",
"column.community": "ლოკალური თაიმლაინი",
"column.direct": "პირდაპირი წერილები",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "პარამეტრების ჩვენება",
"column_header.unpin": "პინის მოხსნა",
"column_subheading.settings": "პარამეტრები",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "მხოლოდ მედია",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "ეს ტუტი გაეგზავნება მხოლოდ ნახსენებ მომხმარებლებს.",
"compose_form.direct_message_warning_learn_more": "გაიგე მეტი",
"compose_form.hashtag_warning": "ეს ტუტი არ მოექცევა ჰეშტეგების ქვეს, რამეთუ ის არაა მითითებული. მხოლოდ ღია ტუტები მოიძებნება ჰეშტეგით.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "ტუტი",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "ლოკალური თაიმლაინი ცარიელია. დაწერეთ რაიმე ღიად ან ქენით რაიმე სხვა!",
"empty_column.direct": "ჯერ პირდაპირი წერილები არ გაქვთ. როდესაც მიიღებთ ან გააგზავნით, გამოჩნდება აქ.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "ავტორიზაცია",
"follow_request.reject": "უარყოფა",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "დეველოპერები",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "დოკუმენტაცია",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "ძირითადი",
"home.column_settings.show_reblogs": "ბუსტების ჩვენება",
"home.column_settings.show_replies": "პასუხების ჩვენება",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "ავტორის პროფილის გასახსნელად",
"keyboard_shortcuts.reply": "პასუხისთვის",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "ძიებაზე ფოკუსირებისთვის",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "გაფრთხილების უკან ტექსტის გამოსაჩენად/დასამალვად",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "დავმალოთ შეტყობინებები ამ მომხმარებლისგან?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "დაბლოკილი მომხმარებლები",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "ლოკალური თაიმლაინი",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "პირდაპირი წერილები",
@@ -273,7 +294,9 @@
"navigation_bar.security": "უსაფრთხოება",
"notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად",
"notification.follow": "{name} გამოგყვათ",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name}-მა გასახელათ",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name}-მა დაბუსტა თქვენი სტატუსი",
"notifications.clear": "შეტყობინებების გასუფთავება",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "ახალი მიმდევრები:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "ხსენებები:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "ფუშ შეტყობინებები",
@@ -322,6 +346,7 @@
"relative_time.just_now": "ახლა",
"relative_time.minutes": "{number}წთ",
"relative_time.seconds": "{number}წმ",
+ "relative_time.today": "today",
"reply_indicator.cancel": "უარყოფა",
"report.forward": "ფორვარდი {target}-ს",
"report.forward_hint": "ანგარიში სხვა სერვერიდანაა. გავაგზავნოთ რეპორტის ანონიმური ასლიც?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "დაბლოკე @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "ბუსტის მოშორება",
"status.cannot_reblog": "ეს პოსტი ვერ დაიბუსტება",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} დაიბუსტა",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "გაუქმდეს და გადანაწილდეს",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "პასუხი",
"status.replyAll": "უპასუხე თემას",
"status.report": "დაარეპორტე @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} საუბრობს",
"trends.trending_now": "Trending now",
"ui.beforeunload": "თქვენი დრაფტი გაუქმდება თუ დატოვებთ მასტოდონს.",
@@ -400,9 +431,11 @@
"upload_button.label": "მედიის დამატება",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "აღწერილობა ვიზუალურად უფასურისთვის",
"upload_form.edit": "Edit",
"upload_form.undo": "გაუქმება",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "იტვირთება...",
"video.close": "ვიდეოს დახურვა",
+ "video.download": "Download file",
"video.exit_fullscreen": "სრულ ეკრანზე ჩვენების გათიშვა",
"video.expand": "ვიდეოს გაფართოება",
"video.fullscreen": "ჩვენება სრულ ეკრანზე",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
new file mode 100644
index 000000000..1eccc74ee
--- /dev/null
+++ b/app/javascript/mastodon/locales/kab.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Rnu neɣ kkes seg tebdarin",
+ "account.badges.bot": "Aṛubut",
+ "account.badges.group": "Agraw",
+ "account.block": "Seḥbes @{name}",
+ "account.block_domain": "Ffer kra i d-yekkan seg {domain}",
+ "account.blocked": "Yettuseḥbes",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Sefsex asuter n uḍfaṛ",
+ "account.direct": "Izen usrid i @{name}",
+ "account.domain_blocked": "Taɣult yeffren",
+ "account.edit_profile": "Ẓreg amaɣnu",
+ "account.endorse": "Welleh fell-as deg umaɣnu-inek",
+ "account.follow": "Ḍfeṛ",
+ "account.followers": "Imeḍfaṛen",
+ "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.",
+ "account.follows": "I yeṭṭafaṛ",
+ "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.",
+ "account.follows_you": "Yeṭṭafaṛ-ik",
+ "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}",
+ "account.last_status": "Armud aneggaru",
+ "account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}",
+ "account.locked_info": "Amiḍan-agi uslig isekweṛ. D bab-is kan i izemren ad yeǧǧ, s ufus-is, win ara t-iḍefṛen.",
+ "account.media": "Amidya",
+ "account.mention": "Bder-d @{name}",
+ "account.moved_to": "{name} ibeddel ɣer:",
+ "account.mute": "Sgugem @{name}",
+ "account.mute_notifications": "Sgugem tilɣa sγur @{name}",
+ "account.muted": "Yettwasgugem",
+ "account.never_active": "Werǧin",
+ "account.posts": "Tijewwaqin",
+ "account.posts_with_replies": "Tijewwaqin akked tririyin",
+ "account.report": "Cetki ɣef @{name}",
+ "account.requested": "Di laɛḍil ad yettwaqbel. Ssit i wakken ad yefsex usuter n uḍfar",
+ "account.share": "Bḍu amaɣnu n @{name}",
+ "account.show_reblogs": "Ssken-d inebḍa n @{name}",
+ "account.unblock": "Serreḥ i @{name}",
+ "account.unblock_domain": "Ssken-d {domain}",
+ "account.unendorse": "Ur ttwellih ara fell-as deg umaɣnu-inek",
+ "account.unfollow": "Ur ṭṭafaṛ ara",
+ "account.unmute": "Kkes asgugem ɣef @{name}",
+ "account.unmute_notifications": "Serreḥ ilɣa sɣur @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Ma ulac aɣilif ɛreḍ tikelt-nniḍen akka {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Aktum s talast",
+ "alert.unexpected.message": "Yeḍra-d unezri ur netturaǧu ara.",
+ "alert.unexpected.title": "Ayhuh!",
+ "announcement.announcement": "Ulɣu",
+ "autosuggest_hashtag.per_week": "{count} i yimalas",
+ "boost_modal.combo": "Tzemreḍ ad tetekkiḍ ɣef {combo} akken ad tessurfeḍ aya tikelt-nniḍen",
+ "bundle_column_error.body": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.",
+ "bundle_column_error.retry": "Ɛreḍ tikelt-nniḍen",
+ "bundle_column_error.title": "Tuccḍa deg uẓeṭṭa",
+ "bundle_modal_error.close": "Mdel",
+ "bundle_modal_error.message": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.",
+ "bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen",
+ "column.blocks": "Imiḍanen yettusḥebsen",
+ "column.bookmarks": "Ticraḍ",
+ "column.community": "Tasuddemt tadigant",
+ "column.direct": "Iznan usriden",
+ "column.directory": "Inig deg imaɣnuten",
+ "column.domain_blocks": "Taɣulin yeffren",
+ "column.favourites": "Ismenyifen",
+ "column.follow_requests": "Isuturen n teḍfeṛt",
+ "column.home": "Agejdan",
+ "column.lists": "Tibdarin",
+ "column.mutes": "Imiḍanen yettwasgugmen",
+ "column.notifications": "Tilɣa",
+ "column.pins": "Tijewwaqin yettwasenṭḍen",
+ "column.public": "Tasuddemt tamatut",
+ "column_back_button.label": "Tuɣalin",
+ "column_header.hide_settings": "Ffer iɣewwaṛen",
+ "column_header.moveLeft_settings": "Err ajgu ɣer tama tazelmaḍt",
+ "column_header.moveRight_settings": "Err ajgu ɣer tama tayfust",
+ "column_header.pin": "Senteḍ",
+ "column_header.show_settings": "Ssken iɣewwaṛen",
+ "column_header.unpin": "Kkes asenteḍ",
+ "column_subheading.settings": "Iɣewwaṛen",
+ "community.column_settings.local_only": "Adigan kan",
+ "community.column_settings.media_only": "Allal n teywalt kan",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "Tajewwaqt-a ad d-tettwasken kan i yimseqdacen i d-yettwabedren.",
+ "compose_form.direct_message_warning_learn_more": "Issin ugar",
+ "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "compose_form.lock_disclaimer": "Amiḍan-ik ur yelli ara {locked}. Menwala yezmer ad k-yeḍfeṛ akken ad iẓer acu tbeṭṭuḍ akked yimeḍfaṛen-ik.",
+ "compose_form.lock_disclaimer.lock": "yettwacekkel",
+ "compose_form.placeholder": "D acu i itezzin deg uqaṛṛu-ik?",
+ "compose_form.poll.add_option": "Rnu afran",
+ "compose_form.poll.duration": "Tanzagt n tefrant",
+ "compose_form.poll.option_placeholder": "Afran {number}",
+ "compose_form.poll.remove_option": "Sfeḍ afran-agi",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "Jewweq",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Creḍ allal n teywalt d anafri",
+ "compose_form.sensitive.marked": "Allal n teywalt yettwacreḍ d anafri",
+ "compose_form.sensitive.unmarked": "Allal n teywalt ur yettwacreḍ ara d anafri",
+ "compose_form.spoiler.marked": "Aḍris yeffer deffir n walɣu",
+ "compose_form.spoiler.unmarked": "Aḍris ur yettwaffer ara",
+ "compose_form.spoiler_placeholder": "Aru alɣu-inek da",
+ "confirmation_modal.cancel": "Sefsex",
+ "confirmations.block.block_and_report": "Sewḥel & sewɛed",
+ "confirmations.block.confirm": "Sewḥel",
+ "confirmations.block.message": "Tebγiḍ s tidet ad tesḥebseḍ {name}?",
+ "confirmations.delete.confirm": "Kkes",
+ "confirmations.delete.message": "Tebɣiḍ s tidet ad tekkseḍ tasuffeɣt-agi?",
+ "confirmations.delete_list.confirm": "Kkes",
+ "confirmations.delete_list.message": "Tebɣiḍ s tidet ad tekkseḍ umuɣ-agi i lebda?",
+ "confirmations.domain_block.confirm": "Ffer taɣult meṛṛa",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.logout.confirm": "Ffeɣ",
+ "confirmations.logout.message": "D tidet tebɣiḍ ad teffɣeḍ?",
+ "confirmations.mute.confirm": "Sgugem",
+ "confirmations.mute.explanation": "Aya ad yeffer iznan-is d wid i deg d-yettwabder neɣ d-tettwabder, maca xas akka yezmer neɣ tezmer awali n yiznan-inek d uḍfaṛ-ik.",
+ "confirmations.mute.message": "Tetḥeqqeḍ belli tebɣiḍ ad ttegugmeḍ {name}?",
+ "confirmations.redraft.confirm": "Sfeḍ & Ɛiwed tira",
+ "confirmations.redraft.message": "Tetḥeqqeḍ belli tebɣiḍ tuksa n waddad-agi iwakken ad s-tɛiwdeḍ tira? Ismenyifen d beḍḍuwat ad ṛuḥen, ma d tiririyin-is ad uɣalent d tigujilin.",
+ "confirmations.reply.confirm": "Err",
+ "confirmations.reply.message": "Tiririt akka tura ad k-degger izen-agi i tettaruḍ. Tebɣiḍ ad tkemmleḍ?",
+ "confirmations.unfollow.confirm": "Ur ḍḍafaṛ ara",
+ "confirmations.unfollow.message": "Tetḥeqqeḍ belli tebɣiḍ ur teṭafaṛeḍ ara {name}?",
+ "conversation.delete": "Sfeḍ adiwenni",
+ "conversation.mark_as_read": "Creḍ yettwaɣṛa",
+ "conversation.open": "Ssken adiwenni",
+ "conversation.with": "Akked {names}",
+ "directory.federated": "Deg fedivers yettwasnen",
+ "directory.local": "Seg {domain} kan",
+ "directory.new_arrivals": "Imaynuten id yewḍen",
+ "directory.recently_active": "Yermed xas melmi kan",
+ "embed.instructions": "Ẓẓu addad-agi deg usmel-inek s wenγal n tangalt yellan sdaw-agi.",
+ "embed.preview": "Akka ara d-iban:",
+ "emoji_button.activity": "Aqeddic",
+ "emoji_button.custom": "Udmawan",
+ "emoji_button.flags": "Innayen",
+ "emoji_button.food": "Tegwella & Tissit",
+ "emoji_button.label": "Sekcem imuji",
+ "emoji_button.nature": "Agama",
+ "emoji_button.not_found": "Ulac izamulen n yiḥulfan !! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Tiɣawsiwin",
+ "emoji_button.people": "Medden",
+ "emoji_button.recent": "Wid yettuseqdacen s waṭas",
+ "emoji_button.search": "Nadi…",
+ "emoji_button.search_results": "Igemmaḍ n unadi",
+ "emoji_button.symbols": "Izamulen",
+ "emoji_button.travel": "Imeḍqan d Yinigen",
+ "empty_column.account_timeline": "Ulac tijewwaqin dagi!",
+ "empty_column.account_unavailable": "Ur nufi ara amaɣnu-ayi",
+ "empty_column.blocks": "Ur tesḥebseḍ ula yiwen n umseqdac ar tura.",
+ "empty_column.bookmarked_statuses": "Ulac tijewwaqin i terniḍ ɣer yismenyifen-ik ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.",
+ "empty_column.community": "Tasuddemt tazayezt tadigant n yisallen d tilemt. Aru ihi kra akken ad tt-teččareḍ!",
+ "empty_column.direct": "Ulac ɣur-k ula yiwen n yizen usrid. Ad d-yettwasken da, ticki tuzneḍ neɣ teṭṭfeḍ-d yiwen.",
+ "empty_column.domain_blocks": "Ulac kra n taɣult yettwaffren ar tura.",
+ "empty_column.favourited_statuses": "Ulac ula yiwet n tjewwaqt deg yismenyifen-ik ar tura. Ticki Tella-d yiwet, ad d-ban da.",
+ "empty_column.favourites": "Ula yiwen ur yerri tajewwaqt-agi deg yismenyifen-is. Melmi i d-yella waya, ad d-yettwasken da.",
+ "empty_column.follow_requests": "Ulac ɣur-k ula yiwen n usuter n teḍfeṛt. Ticki teṭṭfeḍ-d yiwen ad d-yettwasken da.",
+ "empty_column.hashtag": "Ar tura ulac kra n ugbur yesɛan assaɣ ɣer uhacṭag-agi.",
+ "empty_column.home": "Tasuddemt tagejdant n yisallen d tilemt! Ẓer {public} neɣ nadi ad tafeḍ imseqdacen-nniḍen ad ten-ḍefṛeḍ.",
+ "empty_column.home.public_timeline": "tasuddemt tazayezt n yisallen",
+ "empty_column.list": "Ar tura ur yelli kra deg umuɣ-a. Ad d-yettwasken da ticki iɛeggalen n wumuɣ-a suffɣen-d kra.",
+ "empty_column.lists": "Ulac ɣur-k kra n wumuɣ yakan. Ad d-tettwasken da ticki tesluleḍ-d yiwet.",
+ "empty_column.mutes": "Ulac ɣur-k imseqdacen i yettwasgugmen.",
+ "empty_column.notifications": "Ulac ɣur-k tilɣa. Sedmer akked yemdanen-nniḍen akken ad tebduḍ adiwenni.",
+ "empty_column.public": "Ulac kra da! Aru kra, neɣ ḍfeṛ imdanen i yellan deg yiqeddacen-nniḍen akken ad d-teččar tsuddemt tazayezt",
+ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.next_steps": "Smiren asebter-a, ma ur yekkis ara wugur, ẓer d akken tzemreḍ ad tesqedceḍ Maṣṭudun deg yiminig-nniḍen neɣ deg usnas anaṣli.",
+ "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "errors.unexpected_crash.report_issue": "Mmel ugur",
+ "follow_request.authorize": "Ssireg",
+ "follow_request.reject": "Agi",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "Ineflayen",
+ "getting_started.directory": "Akaram n imaɣnuten",
+ "getting_started.documentation": "Amnir",
+ "getting_started.heading": "Bdu",
+ "getting_started.invite": "Snebgi-d imdanen",
+ "getting_started.open_source_notice": "Maṣṭudun d aseɣzan s uɣbalu yeldin. Tzemreḍ ad tɛiwneḍ neɣ ad temmleḍ uguren deg GitHub {github}.",
+ "getting_started.security": "Iɣewwaṛen n umiḍan",
+ "getting_started.terms": "Tiwetlin n useqdec",
+ "hashtag.column_header.tag_mode.all": "d {additional}",
+ "hashtag.column_header.tag_mode.any": "neɣ {additional}",
+ "hashtag.column_header.tag_mode.none": "war {additional}",
+ "hashtag.column_settings.select.no_options_message": "Ulac isumar",
+ "hashtag.column_settings.select.placeholder": "Rnu-d ihacṭagen…",
+ "hashtag.column_settings.tag_mode.all": "Kra yellan",
+ "hashtag.column_settings.tag_mode.any": "Yiwen seg-sen",
+ "hashtag.column_settings.tag_mode.none": "Yiwen ala seg-sen",
+ "hashtag.column_settings.tag_toggle": "Glu-d s yihacṭagen imerna i ujgu-agi",
+ "home.column_settings.basic": "Igejdanen",
+ "home.column_settings.show_reblogs": "Ssken-d beṭṭu",
+ "home.column_settings.show_replies": "Ssken-d tiririyin",
+ "home.hide_announcements": "Ffer ulɣuyen",
+ "home.show_announcements": "Ssken-d ulɣuyen",
+ "intervals.full.days": "{number, plural, one {# n wass} other {# n wussan}}",
+ "intervals.full.hours": "{number, plural, one {# n usarag} other {# n yesragen}}",
+ "intervals.full.minutes": "{number, plural, one {# n tesdat} other {# n tesdatin}}",
+ "introduction.federation.action": "Uḍfiṛ",
+ "introduction.federation.federated.headline": "Amatu",
+ "introduction.federation.federated.text": "Iznan izuyaz i d-yekkan seg yiqeddacen-nniḍen n fediverse ad banen deg tsuddemt tazayezt tamatut n yisallen.",
+ "introduction.federation.home.headline": "Agejdan",
+ "introduction.federation.home.text": "Iznan n yemdanen i teṭṭafaṛeḍ ad banen deg tsuddemt n umagger. Tzemreḍ ad tḍefṛeḍ win tebɣiḍ deg uqeddac i tebɣiḍ!",
+ "introduction.federation.local.headline": "Adigan",
+ "introduction.federation.local.text": "Iznan izuyaz n yemdanen i yellan deg yiwen uqeddac akked kečč ad d-banen deg tsuddemt tazayezt tadigant.",
+ "introduction.interactions.action": "Fakk tameskant!",
+ "introduction.interactions.favourite.headline": "Ismenyifen",
+ "introduction.interactions.favourite.text": "Tzemreḍ ad teǧǧeḍ kra n tjewwaqt i ticki, daγen ad tiniḍ i bab-is d akken taɛǧeb-ik, s tmerna-ines ɣer yismenyifen-ik.",
+ "introduction.interactions.reblog.headline": "Bḍu tikelt-nniḍen",
+ "introduction.interactions.reblog.text": "Tzemreḍ ad tebḍuḍ tijewwaqin n medden akk d yimeḍfaṛen-ik s beṭṭu-nsent tikelt-nniḍen.",
+ "introduction.interactions.reply.headline": "Err",
+ "introduction.interactions.reply.text": "Tzemreḍ ad terreḍ ɣef tjewwaqin-ik·im akked tid n medden-nniḍen, aya atent-id-icudd ta deffir ta deg yiwen udiwenni.",
+ "introduction.welcome.action": "Bdu!",
+ "introduction.welcome.headline": "Isurifen imenza",
+ "introduction.welcome.text": "Anṣuf ɣer fediverse! Deg kra n yimiren, ad tizmireḍ ad tzzuzreḍ iznan neγ ad tmeslayeḍ i yemddukkal deg waṭas n yiqeddacen. Maca aqeddac-agi, {domain}, mačči am wiyaḍ - deg-s i yella umaɣnu-ik, ihi cfu ɣef yisem-is.",
+ "keyboard_shortcuts.back": "i tuɣalin ɣer deffir",
+ "keyboard_shortcuts.blocked": "akken ad teldiḍ umuɣ n yimseqdacen yettwasḥebsen",
+ "keyboard_shortcuts.boost": "i beṭṭu tikelt-nniḍen",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "Aglam",
+ "keyboard_shortcuts.direct": "akken ad teldiḍ ajgu n yiznan usriden",
+ "keyboard_shortcuts.down": "i kennu ɣer wadda n tebdart",
+ "keyboard_shortcuts.enter": "i tildin n tsuffeɣt",
+ "keyboard_shortcuts.favourite": "akken ad ternuḍ ɣer yismenyifen",
+ "keyboard_shortcuts.favourites": "i tildin umuɣ n yismenyifen",
+ "keyboard_shortcuts.federated": "i tildin n tsuddemt tamatut n yisallen",
+ "keyboard_shortcuts.heading": "Inegzumen n unasiw",
+ "keyboard_shortcuts.home": "i tildin n tsuddemt tagejdant n yisallen",
+ "keyboard_shortcuts.hotkey": "Inegzumen",
+ "keyboard_shortcuts.legend": "akken ad tsekneḍ taneffust-agi",
+ "keyboard_shortcuts.local": "i tildin n tsuddemt tadigant n yisallen",
+ "keyboard_shortcuts.mention": "akken ad d-bedreḍ ameskar",
+ "keyboard_shortcuts.muted": "akken ad teldiḍ tabdart n yimseqdacen yettwasgugmen",
+ "keyboard_shortcuts.my_profile": "akken ad d-teldiḍ amaɣnu-ik",
+ "keyboard_shortcuts.notifications": "akken ad d-teldiḍ ajgu n tilɣa",
+ "keyboard_shortcuts.open_media": "i taɣwalin yeldin ",
+ "keyboard_shortcuts.pinned": "akken ad teldiḍ tabdart n tjewwiqin yettwasentḍen",
+ "keyboard_shortcuts.profile": "akken ad d-teldiḍ amaɣnu n umeskar",
+ "keyboard_shortcuts.reply": "i tririt",
+ "keyboard_shortcuts.requests": "akken ad d-teldiḍ tabdert n yisuturen n teḍfeṛt",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "akken ad d-teldiḍ ajgu n \"bdu\"",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "i teskent/tuffra n yimidyaten",
+ "keyboard_shortcuts.toot": "i wakken attebdud tajewwaqt tamaynut",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "i tulin ɣer d asawen n tebdart",
+ "lightbox.close": "Mdel",
+ "lightbox.next": "Γer zdat",
+ "lightbox.previous": "Γer deffir",
+ "lightbox.view_context": "Ẓer amnaḍ",
+ "lists.account.add": "Rnu ɣer tebdart",
+ "lists.account.remove": "Kkes seg tebdart",
+ "lists.delete": "Kkes tabdart",
+ "lists.edit": "Ẓreg tabdart",
+ "lists.edit.submit": "Beddel azwel",
+ "lists.new.create": "Rnu tabdart",
+ "lists.new.title_placeholder": "Azwel amaynut n tebdart",
+ "lists.search": "Nadi gar yemdanen i teṭṭafaṛeḍ",
+ "lists.subheading": "Tibdarin-ik·im",
+ "load_pending": "{count, plural, one {# n uferdis amaynut} other {# n yiferdisen imaynuten}}",
+ "loading_indicator.label": "Yessalay-d…",
+ "media_gallery.toggle_visible": "Ffer {number, plural, one {tugna} other {tugniwin}}",
+ "missing_indicator.label": "Ulac-it",
+ "missing_indicator.sublabel": "Ur nufi ara aɣbalu-a",
+ "mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?",
+ "navigation_bar.apps": "Isnasen izirazen",
+ "navigation_bar.blocks": "Imseqdacen yettusḥebsen",
+ "navigation_bar.bookmarks": "Ticraḍ",
+ "navigation_bar.community_timeline": "Tasuddemt tadigant",
+ "navigation_bar.compose": "Aru tajewwiqt tamaynut",
+ "navigation_bar.direct": "Iznan usridden",
+ "navigation_bar.discover": "Ẓer",
+ "navigation_bar.domain_blocks": "Tiɣula yeffren",
+ "navigation_bar.edit_profile": "Ẓreg amaɣnu",
+ "navigation_bar.favourites": "Ismenyifen",
+ "navigation_bar.filters": "Awalen i yettwasgugmen",
+ "navigation_bar.follow_requests": "Isuturen n teḍfeṛt",
+ "navigation_bar.follows_and_followers": "Imeḍfaṛen akked wid i teṭṭafaṛeḍ",
+ "navigation_bar.info": "Ɣef uqeddac-agi",
+ "navigation_bar.keyboard_shortcuts": "Inegzumen n unasiw",
+ "navigation_bar.lists": "Tibdarin",
+ "navigation_bar.logout": "Ffeɣ",
+ "navigation_bar.mutes": "Iseqdacen yettwasusmen",
+ "navigation_bar.personal": "Udmawan",
+ "navigation_bar.pins": "Tijewwiqin yettwasentḍen",
+ "navigation_bar.preferences": "Imenyafen",
+ "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut",
+ "navigation_bar.security": "Taɣellist",
+ "notification.favourite": "{name} yesmenyef tasuffeɣt-ik·im",
+ "notification.follow": "{name} yeṭṭafaṛ-ik",
+ "notification.follow_request": "{name} yessuter-d ad k-yeḍfeṛ",
+ "notification.mention": "{name} yebder-ik-id",
+ "notification.own_poll": "Your poll has ended",
+ "notification.poll": "A poll you have voted in has ended",
+ "notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen",
+ "notifications.clear": "Sfeḍ tilɣa",
+ "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?",
+ "notifications.column_settings.alert": "Tilɣa n tnarit",
+ "notifications.column_settings.favourite": "Ismenyifen:",
+ "notifications.column_settings.filter_bar.advanced": "Ssken-d meṛṛa tiggayin",
+ "notifications.column_settings.filter_bar.category": "Iri n usizdeg uzrib",
+ "notifications.column_settings.filter_bar.show": "Ssken",
+ "notifications.column_settings.follow": "Imeḍfaṛen imaynuten:",
+ "notifications.column_settings.follow_request": "Isuturen imaynuten n teḍfeṛt:",
+ "notifications.column_settings.mention": "Abdar:",
+ "notifications.column_settings.poll": "Igemmaḍ n usenqed:",
+ "notifications.column_settings.push": "Tilɣa yettudemmren",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Ssken-d tilɣa deg ujgu",
+ "notifications.column_settings.sound": "Rmed imesli",
+ "notifications.filter.all": "Akk",
+ "notifications.filter.boosts": "Boosts",
+ "notifications.filter.favourites": "Ismenyifen",
+ "notifications.filter.follows": "Yeṭafaṛ",
+ "notifications.filter.mentions": "Abdar",
+ "notifications.filter.polls": "Igemmaḍ n usenqed",
+ "notifications.group": "{count} n tilɣa",
+ "poll.closed": "Ifukk",
+ "poll.refresh": "Smiren",
+ "poll.total_people": "{count, plural, one {# n wemdan} other {# n yemdanen}}",
+ "poll.total_votes": "{count, plural, one {# n udɣaṛ} other {# n yedɣaṛen}}",
+ "poll.vote": "Dɣeṛ",
+ "poll.voted": "Tdeɣṛeḍ ɣef tririt-ayi",
+ "poll_button.add_poll": "Rnu asenqed",
+ "poll_button.remove_poll": "Kkes asenqed",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Bḍu gar yimseqdacen i tbedreḍ kan",
+ "privacy.direct.short": "Usrid",
+ "privacy.private.long": "Bḍu i yimeḍfaṛen-ik kan",
+ "privacy.private.short": "Imeḍfaṛen kan",
+ "privacy.public.long": "Bḍu deg tsuddemt tazayezt",
+ "privacy.public.short": "Azayez",
+ "privacy.unlisted.long": "Ur beṭṭu ara deg tsuddemt tazayezt",
+ "privacy.unlisted.short": "War tabdert",
+ "refresh": "Smiren",
+ "regeneration_indicator.label": "Yessalay-d…",
+ "regeneration_indicator.sublabel": "Tasuddemt tagejdant ara d-tettwaheggay!",
+ "relative_time.days": "{number}u",
+ "relative_time.hours": "{number}isr",
+ "relative_time.just_now": "tura",
+ "relative_time.minutes": "{number}tis",
+ "relative_time.seconds": "{number}tas",
+ "relative_time.today": "assa",
+ "reply_indicator.cancel": "Sefsex",
+ "report.forward": "Bren-it ɣeṛ {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Iwenniten-nniḍen",
+ "report.submit": "Azen",
+ "report.target": "Mmel {target}",
+ "search.placeholder": "Nadi",
+ "search_popout.search_format": "Anadi yenneflin",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "ahacṭag",
+ "search_popout.tips.status": "addad",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "amseqdac",
+ "search_results.accounts": "Medden",
+ "search_results.hashtags": "Ihacṭagen",
+ "search_results.statuses": "Tibeṛṛaniyin",
+ "search_results.statuses_fts_disabled": "Anadi ɣef tjewwiqin s ugbur-nsent ur yermid ara deg uqeddac-agi n Maṣṭudun.",
+ "search_results.total": "{count, number} {count, plural, one {n ugemmuḍ} other {n yigemmuḍen}}",
+ "status.admin_account": "Open moderation interface for @{name}",
+ "status.admin_status": "Open this status in the moderation interface",
+ "status.block": "Seḥbes @{name}",
+ "status.bookmark": "Creḍ",
+ "status.cancel_reblog_private": "Sefsex beṭṭu",
+ "status.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen",
+ "status.copy": "Nɣel assaɣ ɣer tasuffeɣt",
+ "status.delete": "Kkes",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Izen usrid i @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Rnu ɣer yismenyifen",
+ "status.filtered": "Yettwasizdeg",
+ "status.load_more": "Sali ugar",
+ "status.media_hidden": "Taɣwalt tettwaffer",
+ "status.mention": "Bder-d @{name}",
+ "status.more": "Ugar",
+ "status.mute": "Sussem @{name}",
+ "status.mute_conversation": "Sgugem adiwenni",
+ "status.open": "Semɣeṛ tasuffeɣt-ayi",
+ "status.pin": "Senteḍ-itt deg umaɣnu",
+ "status.pinned": "Tijewwiqin yettwasentḍen",
+ "status.read_more": "Issin ugar",
+ "status.reblog": "Bḍu",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.",
+ "status.redraft": "Kkes tɛiwdeḍ tira",
+ "status.remove_bookmark": "Kkes tacreḍt",
+ "status.reply": "Err",
+ "status.replyAll": "Err i lxiḍ",
+ "status.report": "Cetki ɣef @{name}",
+ "status.sensitive_warning": "Agbur amḥulfu",
+ "status.share": "Bḍu",
+ "status.show_less": "Ssken-d drus",
+ "status.show_less_all": "Semẓi akk tisuffγin",
+ "status.show_more": "Ssken-d ugar",
+ "status.show_more_all": "Ẓerr ugar lebda",
+ "status.show_thread": "Ssken-d lxiḍ",
+ "status.uncached_media_warning": "Ulac-it",
+ "status.unmute_conversation": "Kkes asgugem n udiwenni",
+ "status.unpin": "Kkes asenteḍ seg umaɣnu",
+ "suggestions.dismiss": "Sefsex asumer",
+ "suggestions.header": "Ahat ad tcelgeḍ deg…",
+ "tabs_bar.federated_timeline": "Amatu",
+ "tabs_bar.home": "Agejdan",
+ "tabs_bar.local_timeline": "Adigan",
+ "tabs_bar.notifications": "Tilɣa",
+ "tabs_bar.search": "Nadi",
+ "time_remaining.days": "Mazal {number, plural, one {# n wass} other {# n wussan}}",
+ "time_remaining.hours": "Mazal {number, plural, one {# n usrag} other {# n yesragen}}",
+ "time_remaining.minutes": "Mazal {number, plural, one {# n tesdat} other {# n tesdatin}}",
+ "time_remaining.moments": "Moments remaining",
+ "time_remaining.seconds": "Mazal {number, plural, one {# n tasint} other {# n tsinin}} id yugran",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Imeḍfaṛen",
+ "timeline_hint.resources.follows": "T·Yeṭafaṛ",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {n umdan} other {n yemdanen}} i yettmeslayen",
+ "trends.trending_now": "Trending now",
+ "ui.beforeunload": "Arewway-ik·im ad iruḥ ma yella tefeɣ-d deg Maṣṭudun.",
+ "upload_area.title": "Zuḥeb rnu sers i tasalyt",
+ "upload_button.label": "Rnu taɣwalt ({formats})",
+ "upload_error.limit": "File upload limit exceeded.",
+ "upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt",
+ "upload_form.description": "Glem-d i yemdaneni yesɛan ugur deg yiẓri",
+ "upload_form.edit": "Ẓreg",
+ "upload_form.undo": "Kkes",
+ "upload_form.video_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt neɣ deg yiẓri",
+ "upload_modal.analyzing_picture": "Tasleḍt n tugna tetteddu…",
+ "upload_modal.apply": "Snes",
+ "upload_modal.description_placeholder": "Aberraɣ arurad ineggez nnig n uqjun amuṭṭis",
+ "upload_modal.detect_text": "Sefru-d aḍris seg tugna",
+ "upload_modal.edit_media": "Ẓreg taɣwalt",
+ "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preview_label": "Taskant ({ratio})",
+ "upload_progress.label": "Asali iteddu...",
+ "video.close": "Mdel tabidyutt",
+ "video.download": "Sidered afaylu",
+ "video.exit_fullscreen": "Ffeɣ seg ugdil ačuran",
+ "video.expand": "Semɣeṛ tavidyut",
+ "video.fullscreen": "Agdil aččuran",
+ "video.hide": "Ffer tabidyutt",
+ "video.mute": "Gzem imesli",
+ "video.pause": "Sgunfu",
+ "video.play": "Seddu",
+ "video.unmute": "Rmed imesli"
+}
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index ba0f5378e..06d42eac9 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -1,10 +1,14 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Тізімге қосу немесе жою",
"account.badges.bot": "Бот",
+ "account.badges.group": "Group",
"account.block": "Бұғаттау @{name}",
"account.block_domain": "Домендегі барлығын бұғатта {domain}",
"account.blocked": "Бұғатталды",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Жазылуға сұранымды қайтару",
"account.direct": "Жеке хат @{name}",
"account.domain_blocked": "Домен жабық",
"account.edit_profile": "Профильді өңдеу",
@@ -16,7 +20,7 @@
"account.follows.empty": "Ешкімге жазылмапты.",
"account.follows_you": "Сізге жазылыпты",
"account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру",
- "account.last_status": "Last active",
+ "account.last_status": "Соңғы белсенділік",
"account.link_verified_on": "Сілтеме меншігі расталған күн {date}",
"account.locked_info": "Бұл қолданушы өзі туралы мәліметтерді жасырған. Тек жазылғандар ғана көре алады.",
"account.media": "Медиа",
@@ -25,7 +29,7 @@
"account.mute": "Үнсіз қылу @{name}",
"account.mute_notifications": "@{name} туралы ескертпелерді жасыру",
"account.muted": "Үнсіз",
- "account.never_active": "Never",
+ "account.never_active": "Ешқашан",
"account.posts": "Жазбалар",
"account.posts_with_replies": "Жазбалар мен жауаптар",
"account.report": "Шағымдану @{name}",
@@ -38,11 +42,16 @@
"account.unfollow": "Оқымау",
"account.unmute": "@{name} ескертпелерін қосу",
"account.unmute_notifications": "@{name} ескертпелерін көрсету",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Қайтадан көріңіз {retry_time, time, medium} кейін.",
+ "alert.rate_limited.title": "Бағалау шектеулі",
"alert.unexpected.message": "Бір нәрсе дұрыс болмады.",
"alert.unexpected.title": "Өй!",
- "autosuggest_hashtag.per_week": "{count} per week",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "{count} аптасына",
"boost_modal.combo": "Келесіде өткізіп жіберу үшін басыңыз {combo}",
"bundle_column_error.body": "Бұл компонентті жүктеген кезде бір қате пайда болды.",
"bundle_column_error.retry": "Қайтадан көріңіз",
@@ -51,9 +60,10 @@
"bundle_modal_error.message": "Бұл компонентті жүктеген кезде бір қате пайда болды.",
"bundle_modal_error.retry": "Қайтадан көріңіз",
"column.blocks": "Бұғатталғандар",
+ "column.bookmarks": "Бетбелгілер",
"column.community": "Жергілікті желі",
"column.direct": "Жеке хаттар",
- "column.directory": "Browse profiles",
+ "column.directory": "Профильдерді аралау",
"column.domain_blocks": "Жасырылған домендер",
"column.favourites": "Таңдаулылар",
"column.follow_requests": "Жазылу сұранымдары",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Баптауларды көрсет",
"column_header.unpin": "Алып тастау",
"column_subheading.settings": "Баптаулар",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Тек медиа",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "Тек аталған қолданушыларға.",
"compose_form.direct_message_warning_learn_more": "Көбірек білу",
"compose_form.hashtag_warning": "Бұл пост іздеуде хэштегпен шықпайды, өйткені ол бәріне ашық емес. Тек ашық жазбаларды ғана хэштег арқылы іздеп табуға болады.",
@@ -82,16 +94,18 @@
"compose_form.poll.duration": "Сауалнама мерзімі",
"compose_form.poll.option_placeholder": "Жауап {number}",
"compose_form.poll.remove_option": "Бұл жауапты өшір",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Түрт",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.hide": "Сезімтал ретінде белгіле",
"compose_form.sensitive.marked": "Медиа нәзік деп белгіленген",
"compose_form.sensitive.unmarked": "Медиа нәзік деп белгіленбеген",
"compose_form.spoiler.marked": "Мәтін ескертумен жасырылған",
"compose_form.spoiler.unmarked": "Мәтін жасырылмаған",
"compose_form.spoiler_placeholder": "Ескертуіңізді осында жазыңыз",
"confirmation_modal.cancel": "Қайтып алу",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Блок және Шағым",
"confirmations.block.confirm": "Бұғаттау",
"confirmations.block.message": "{name} атты қолданушыны бұғаттайтыныңызға сенімдісіз бе?",
"confirmations.delete.confirm": "Өшіру",
@@ -100,10 +114,10 @@
"confirmations.delete_list.message": "Бұл тізімді жоясыз ба шынымен?",
"confirmations.domain_block.confirm": "Бұл доменді бұғатта",
"confirmations.domain_block.message": "Бұл домендегі {domain} жазбаларды шынымен бұғаттайсыз ба? Кейде үнсіз қылып тастау да жеткілікті.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.logout.confirm": "Шығу",
+ "confirmations.logout.message": "Шығатыныңызға сенімдісіз бе?",
"confirmations.mute.confirm": "Үнсіз қылу",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Олардың посттары же олар туралы меншндар сізге көрінбейді, бірақ олар сіздің посттарды көре алады және жазыла алады.",
"confirmations.mute.message": "{name} атты қолданушы үнсіз болсын ба?",
"confirmations.redraft.confirm": "Өшіруді құптау",
"confirmations.redraft.message": "Бұл жазбаны өшіріп, нобайларға жібереміз бе? Барлық жауаптар мен лайктарды жоғалтасыз.",
@@ -111,14 +125,14 @@
"confirmations.reply.message": "Жауабыңыз жазып жатқан жазбаңыздың үстіне кетеді. Жалғастырамыз ба?",
"confirmations.unfollow.confirm": "Оқымау",
"confirmations.unfollow.message": "\"{name} атты қолданушыға енді жазылғыңыз келмей ме?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
+ "conversation.delete": "Пікірталасты өшіру",
+ "conversation.mark_as_read": "Оқылды деп белгіле",
+ "conversation.open": "Пікірталасты қарау",
+ "conversation.with": "{names} атты",
+ "directory.federated": "Танымал желіден",
+ "directory.local": "Тек {domain} доменінен",
+ "directory.new_arrivals": "Жаңадан келгендер",
+ "directory.recently_active": "Жақында кіргендер",
"embed.instructions": "Төмендегі кодты көшіріп алу арқылы жазбаны басқа сайттарға да орналастыра аласыз.",
"embed.preview": "Былай көрінетін болады:",
"emoji_button.activity": "Белсенділік",
@@ -136,8 +150,9 @@
"emoji_button.symbols": "Таңбалар",
"emoji_button.travel": "Саяхат",
"empty_column.account_timeline": "Жазба жоқ ешқандай!",
- "empty_column.account_unavailable": "Profile unavailable",
+ "empty_column.account_unavailable": "Профиль қолжетімді емес",
"empty_column.blocks": "Ешкімді бұғаттамағансыз.",
+ "empty_column.bookmarked_statuses": "Ешқандай жазба Бетбелгілер тізіміне қосылмапты. Қосылғаннан кейін осында жинала бастайды.",
"empty_column.community": "Жергілікті желі бос. Сіз бастап жазыңыз!",
"empty_column.direct": "Әзірше дым хат жоқ. Өзіңіз жазып көріңіз алдымен.",
"empty_column.domain_blocks": "Бұғатталған домен жоқ.",
@@ -152,12 +167,13 @@
"empty_column.mutes": "Әзірше ешқандай үнсізге қойылған қолданушы жоқ.",
"empty_column.notifications": "Әзірше ешқандай ескертпе жоқ. Басқалармен араласуды бастаңыз және пікірталастарға қатысыңыз.",
"empty_column.public": "Ештеңе жоқ бұл жерде! Өзіңіз бастап жазып көріңіз немесе басқаларға жазылыңыз",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "Кодтағы баг немесе браузердегі қатеден, бұл бет дұрыс ашылмай тұр.",
+ "error.unexpected_crash.next_steps": "Бетті жаңартып көріңіз. Егер бұл көмектеспесе, Mastodon желісін басқа браузерден немесе мобиль қосымшадан ашып көріңіз.",
+ "errors.unexpected_crash.copy_stacktrace": "Жиынтықты көшіріп ал клипбордқа",
+ "errors.unexpected_crash.report_issue": "Мәселені хабарла",
"follow_request.authorize": "Авторизация",
"follow_request.reject": "Қабылдамау",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Жасаушылар тобы",
"getting_started.directory": "Профильдер каталогы",
"getting_started.documentation": "Құжаттама",
@@ -178,9 +194,11 @@
"home.column_settings.basic": "Негізгі",
"home.column_settings.show_reblogs": "Бөлісулерді көрсету",
"home.column_settings.show_replies": "Жауаптарды көрсету",
+ "home.hide_announcements": "Анонстарды жасыр",
+ "home.show_announcements": "Анонстарды көрсет",
"intervals.full.days": "{number, plural, one {# күн} other {# күн}}",
"intervals.full.hours": "{number, plural, one {# сағат} other {# сағат}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "intervals.full.minutes": "{number, plural, one {# минут} other {# минут}}",
"introduction.federation.action": "Келесі",
"introduction.federation.federated.headline": "Жаһандық",
"introduction.federation.federated.text": "Жаһандық желідегі жазбалар осында көрінетін болады.",
@@ -219,21 +237,23 @@
"keyboard_shortcuts.muted": "үнсіздер тізімін ашу",
"keyboard_shortcuts.my_profile": "профиліңізді ашу",
"keyboard_shortcuts.notifications": "ескертпелер бағанын ашу",
+ "keyboard_shortcuts.open_media": "медианы ашу үшін",
"keyboard_shortcuts.pinned": "жабыстырылған жазбаларды көру",
"keyboard_shortcuts.profile": "автор профилін қарау",
"keyboard_shortcuts.reply": "жауап жазу",
"keyboard_shortcuts.requests": "жазылу сұранымдарын қарау",
"keyboard_shortcuts.search": "іздеу",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "бастапқы бағанға бару",
"keyboard_shortcuts.toggle_hidden": "жабық мәтінді CW ашу/жабу",
- "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toggle_sensitivity": "көрсет/жап",
"keyboard_shortcuts.toot": "жаңа жазба бастау",
"keyboard_shortcuts.unfocus": "жазба қалдыру алаңынан шығу",
"keyboard_shortcuts.up": "тізімде жоғары шығу",
"lightbox.close": "Жабу",
"lightbox.next": "Келесі",
"lightbox.previous": "Алдыңғы",
- "lightbox.view_context": "View context",
+ "lightbox.view_context": "Контексті көрсет",
"lists.account.add": "Тізімге қосу",
"lists.account.remove": "Тізімнен шығару",
"lists.delete": "Тізімді өшіру",
@@ -243,7 +263,7 @@
"lists.new.title_placeholder": "Жаңа тізім аты",
"lists.search": "Сіз іздеген адамдар арасында іздеу",
"lists.subheading": "Тізімдеріңіз",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "load_pending": "{count, plural, one {# жаңа нәрсе} other {# жаңа нәрсе}}",
"loading_indicator.label": "Жүктеу...",
"media_gallery.toggle_visible": "Көрінуді қосу",
"missing_indicator.label": "Табылмады",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Бұл қолданушы ескертпелерін жасырамыз ба?",
"navigation_bar.apps": "Мобиль қосымшалар",
"navigation_bar.blocks": "Бұғатталғандар",
+ "navigation_bar.bookmarks": "Бетбелгілер",
"navigation_bar.community_timeline": "Жергілікті желі",
"navigation_bar.compose": "Жаңа жазба бастау",
"navigation_bar.direct": "Жеке хаттар",
@@ -260,7 +281,7 @@
"navigation_bar.favourites": "Таңдаулылар",
"navigation_bar.filters": "Үнсіз сөздер",
"navigation_bar.follow_requests": "Жазылуға сұранғандар",
- "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.follows_and_followers": "Жазылымдар және оқырмандар",
"navigation_bar.info": "Сервер туралы",
"navigation_bar.keyboard_shortcuts": "Ыстық пернелер",
"navigation_bar.lists": "Тізімдер",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Қауіпсіздік",
"notification.favourite": "{name} жазбаңызды таңдаулыға қосты",
"notification.follow": "{name} сізге жазылды",
+ "notification.follow_request": "{name} сізге жазылғысы келеді",
"notification.mention": "{name} сізді атап өтті",
+ "notification.own_poll": "Сауалнама аяқталды",
"notification.poll": "Бұл сауалнаманың мерзімі аяқталыпты",
"notification.reblog": "{name} жазбаңызды бөлісті",
"notifications.clear": "Ескертпелерді тазарт",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Жедел сүзгі",
"notifications.column_settings.filter_bar.show": "Көрсету",
"notifications.column_settings.follow": "Жаңа оқырмандар:",
+ "notifications.column_settings.follow_request": "Жазылуға жаңа сұранымдар:",
"notifications.column_settings.mention": "Аталымдар:",
"notifications.column_settings.poll": "Нәтижелері:",
"notifications.column_settings.push": "Push ескертпелер",
@@ -299,10 +323,10 @@
"notifications.group": "{count} ескертпе",
"poll.closed": "Жабық",
"poll.refresh": "Жаңарту",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, one {# адам} other {# адам}}",
"poll.total_votes": "{count, plural, one {# дауыс} other {# дауыс}}",
"poll.vote": "Дауыс беру",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "Бұл сұраққа жауап бердіңіз",
"poll_button.add_poll": "Сауалнама қосу",
"poll_button.remove_poll": "Сауалнаманы өшіру",
"privacy.change": "Құпиялылықты реттеу",
@@ -314,14 +338,15 @@
"privacy.public.short": "Ашық",
"privacy.unlisted.long": "Do not show in public timelines",
"privacy.unlisted.short": "Тізімсіз",
- "refresh": "Refresh",
+ "refresh": "Жаңарту",
"regeneration_indicator.label": "Жүктеу…",
"regeneration_indicator.sublabel": "Жергілікті желі құрылуда!",
"relative_time.days": "{number}күн",
"relative_time.hours": "{number}сағ",
"relative_time.just_now": "жаңа",
"relative_time.minutes": "{number}мин",
- "relative_time.seconds": "{number}s",
+ "relative_time.seconds": "{number}с",
+ "relative_time.today": "бүгін",
"reply_indicator.cancel": "Қайтып алу",
"report.forward": "Жіберу {target}",
"report.forward_hint": "Бұл аккаунт басқа серверден. Аноним шағым жібересіз бе?",
@@ -339,11 +364,12 @@
"search_results.accounts": "Адамдар",
"search_results.hashtags": "Хэштегтер",
"search_results.statuses": "Жазбалар",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
- "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "search_results.statuses_fts_disabled": "Mastodon серверінде постты толық мәтінмен іздей алмайсыз.",
+ "search_results.total": "{count, number} {count, plural, one {нәтиже} other {нәтиже}}",
"status.admin_account": "@{name} үшін модерация интерфейсін аш",
"status.admin_status": "Бұл жазбаны модерация интерфейсінде аш",
"status.block": "Бұғаттау @{name}",
+ "status.bookmark": "Бетбелгі",
"status.cancel_reblog_private": "Бөліспеу",
"status.cannot_reblog": "Бұл жазба бөлісілмейді",
"status.copy": "Жазба сілтемесін көшір",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} бөлісті",
"status.reblogs.empty": "Бұл жазбаны әлі ешкім бөліспеді. Біреу бөліскен кезде осында көрінеді.",
"status.redraft": "Өшіру & қайта қарастыру",
+ "status.remove_bookmark": "Бетбелгілерден алып тастау",
"status.reply": "Жауап",
"status.replyAll": "Тақырыпқа жауап",
"status.report": "Шағым @{name}",
@@ -378,7 +405,7 @@
"status.show_more": "Толығырақ",
"status.show_more_all": "Бәрін толығымен",
"status.show_thread": "Желіні көрсет",
- "status.uncached_media_warning": "Not available",
+ "status.uncached_media_warning": "Қолжетімді емес",
"status.unmute_conversation": "Пікірталасты үнсіз қылмау",
"status.unpin": "Профильден алып тастау",
"suggestions.dismiss": "Өткізіп жіберу",
@@ -393,25 +420,32 @@
"time_remaining.minutes": "{number, plural, one {# минут} other {# минут}}",
"time_remaining.moments": "Қалған уақыт",
"time_remaining.seconds": "{number, plural, one {# секунд} other {# секунд}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} жазған екен",
- "trends.trending_now": "Trending now",
+ "trends.trending_now": "Тренд тақырыптар",
"ui.beforeunload": "Mastodon желісінен шықсаңыз, нобайыңыз сақталмайды.",
"upload_area.title": "Жүктеу үшін сүйреп әкеліңіз",
"upload_button.label": "Медиа қосу (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Файл жүктеу лимитінен асып кеттіңіз.",
"upload_error.poll": "Сауалнамамен бірге файл жүктеуге болмайды.",
+ "upload_form.audio_description": "Есту қабілеті нашар адамдарға сипаттама беріңіз",
"upload_form.description": "Көру қабілеті нашар адамдар үшін сипаттаңыз",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "Түзету",
"upload_form.undo": "Өшіру",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_form.video_description": "Есту немесе көру қабілеті нашар адамдарға сипаттама беріңіз",
+ "upload_modal.analyzing_picture": "Суретті анализ жасау…",
+ "upload_modal.apply": "Қолдану",
+ "upload_modal.description_placeholder": "Щучинск съезіндегі өрт пе? Вагон-үй, аэромобиль һәм ұшақ фюзеляжы цехінен ғой",
+ "upload_modal.detect_text": "Суреттен мәтін анықтау",
+ "upload_modal.edit_media": "Медиафайлды өңдеу",
+ "upload_modal.hint": "Алдын-ала қарау шеңберін басыңыз немесе сүйреңіз, барлық нобайларда көрінетін фокусты таңдау үшін.",
+ "upload_modal.preview_label": "Превью ({ratio})",
"upload_progress.label": "Жүктеп жатыр...",
"video.close": "Видеоны жабу",
+ "video.download": "Файлды түсіру",
"video.exit_fullscreen": "Толық экраннан шық",
"video.expand": "Видеоны аш",
"video.fullscreen": "Толық экран",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
new file mode 100644
index 000000000..67cf5a5c5
--- /dev/null
+++ b/app/javascript/mastodon/locales/kn.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.badges.bot": "Bot",
+ "account.badges.group": "Group",
+ "account.block": "Block @{name}",
+ "account.block_domain": "Hide everything from {domain}",
+ "account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Cancel follow request",
+ "account.direct": "Direct message @{name}",
+ "account.domain_blocked": "Domain hidden",
+ "account.edit_profile": "Edit profile",
+ "account.endorse": "Feature on profile",
+ "account.follow": "Follow",
+ "account.followers": "Followers",
+ "account.followers.empty": "No one follows this user yet.",
+ "account.follows": "Follows",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows_you": "Follows you",
+ "account.hide_reblogs": "Hide boosts from @{name}",
+ "account.last_status": "Last active",
+ "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.media": "Media",
+ "account.mention": "Mention @{name}",
+ "account.moved_to": "{name} has moved to:",
+ "account.mute": "Mute @{name}",
+ "account.mute_notifications": "Mute notifications from @{name}",
+ "account.muted": "Muted",
+ "account.never_active": "Never",
+ "account.posts": "Toots",
+ "account.posts_with_replies": "Toots and replies",
+ "account.report": "Report @{name}",
+ "account.requested": "Awaiting approval",
+ "account.share": "Share @{name}'s profile",
+ "account.show_reblogs": "Show boosts from @{name}",
+ "account.unblock": "Unblock @{name}",
+ "account.unblock_domain": "Unhide {domain}",
+ "account.unendorse": "Don't feature on profile",
+ "account.unfollow": "Unfollow",
+ "account.unmute": "Unmute @{name}",
+ "account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Rate limited",
+ "alert.unexpected.message": "An unexpected error occurred.",
+ "alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "{count} per week",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "bundle_column_error.body": "Something went wrong while loading this component.",
+ "bundle_column_error.retry": "Try again",
+ "bundle_column_error.title": "Network error",
+ "bundle_modal_error.close": "Close",
+ "bundle_modal_error.message": "Something went wrong while loading this component.",
+ "bundle_modal_error.retry": "Try again",
+ "column.blocks": "Blocked users",
+ "column.bookmarks": "Bookmarks",
+ "column.community": "Local timeline",
+ "column.direct": "Direct messages",
+ "column.directory": "Browse profiles",
+ "column.domain_blocks": "Hidden domains",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Home",
+ "column.lists": "Lists",
+ "column.mutes": "Muted users",
+ "column.notifications": "Notifications",
+ "column.pins": "Pinned toot",
+ "column.public": "Federated timeline",
+ "column_back_button.label": "Back",
+ "column_header.hide_settings": "Hide settings",
+ "column_header.moveLeft_settings": "Move column to the left",
+ "column_header.moveRight_settings": "Move column to the right",
+ "column_header.pin": "Pin",
+ "column_header.show_settings": "Show settings",
+ "column_header.unpin": "Unpin",
+ "column_subheading.settings": "Settings",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+ "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "What is on your mind?",
+ "compose_form.poll.add_option": "Add a choice",
+ "compose_form.poll.duration": "Poll duration",
+ "compose_form.poll.option_placeholder": "Choice {number}",
+ "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "Toot",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.marked": "Media is marked as sensitive",
+ "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.spoiler.marked": "Text is hidden behind warning",
+ "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler_placeholder": "Write your warning here",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.logout.confirm": "Log out",
+ "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+ "confirmations.reply.confirm": "Reply",
+ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.unfollow.confirm": "Unfollow",
+ "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "conversation.delete": "Delete conversation",
+ "conversation.mark_as_read": "Mark as read",
+ "conversation.open": "View conversation",
+ "conversation.with": "With {names}",
+ "directory.federated": "From known fediverse",
+ "directory.local": "From {domain} only",
+ "directory.new_arrivals": "New arrivals",
+ "directory.recently_active": "Recently active",
+ "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.preview": "Here is what it will look like:",
+ "emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
+ "emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
+ "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
+ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "errors.unexpected_crash.report_issue": "Report issue",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "Developers",
+ "getting_started.directory": "Profile directory",
+ "getting_started.documentation": "Documentation",
+ "getting_started.heading": "Getting started",
+ "getting_started.invite": "Invite people",
+ "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+ "getting_started.security": "Security",
+ "getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.select.no_options_message": "No suggestions found",
+ "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
+ "intervals.full.days": "{number, plural, one {# day} other {# days}}",
+ "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "introduction.federation.action": "Next",
+ "introduction.federation.federated.headline": "Federated",
+ "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+ "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+ "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "introduction.interactions.action": "Finish toot-orial!",
+ "introduction.interactions.favourite.headline": "Favourite",
+ "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.reply.headline": "Reply",
+ "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+ "introduction.welcome.action": "Let's go!",
+ "introduction.welcome.headline": "First steps",
+ "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "to move down in the list",
+ "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "to move up in the list",
+ "lightbox.close": "Close",
+ "lightbox.next": "Next",
+ "lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "Add to list",
+ "lists.account.remove": "Remove from list",
+ "lists.delete": "Delete list",
+ "lists.edit": "Edit list",
+ "lists.edit.submit": "Change title",
+ "lists.new.create": "Add list",
+ "lists.new.title_placeholder": "New list title",
+ "lists.search": "Search among people you follow",
+ "lists.subheading": "Your lists",
+ "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "loading_indicator.label": "Loading...",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
+ "missing_indicator.label": "Not found",
+ "missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Direct messages",
+ "navigation_bar.discover": "Discover",
+ "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.edit_profile": "Edit profile",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.filters": "Muted words",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.info": "About this server",
+ "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "navigation_bar.lists": "Lists",
+ "navigation_bar.logout": "Logout",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.preferences": "Preferences",
+ "navigation_bar.public_timeline": "Federated timeline",
+ "navigation_bar.security": "Security",
+ "notification.favourite": "{name} favourited your status",
+ "notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
+ "notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
+ "notification.poll": "A poll you have voted in has ended",
+ "notification.reblog": "{name} boosted your status",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.filter_bar.advanced": "Display all categories",
+ "notifications.column_settings.filter_bar.category": "Quick filter bar",
+ "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.filter.all": "All",
+ "notifications.filter.boosts": "Boosts",
+ "notifications.filter.favourites": "Favourites",
+ "notifications.filter.follows": "Follows",
+ "notifications.filter.mentions": "Mentions",
+ "notifications.filter.polls": "Poll results",
+ "notifications.group": "{count} notifications",
+ "poll.closed": "Closed",
+ "poll.refresh": "Refresh",
+ "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.vote": "Vote",
+ "poll.voted": "You voted for this answer",
+ "poll_button.add_poll": "Add a poll",
+ "poll_button.remove_poll": "Remove poll",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "refresh": "Refresh",
+ "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "now",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
+ "reply_indicator.cancel": "Cancel",
+ "report.forward": "Forward to {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Report {target}",
+ "search.placeholder": "Search",
+ "search_popout.search_format": "Advanced search format",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "user",
+ "search_results.accounts": "People",
+ "search_results.hashtags": "Hashtags",
+ "search_results.statuses": "Toots",
+ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.admin_account": "Open moderation interface for @{name}",
+ "status.admin_status": "Open this status in the moderation interface",
+ "status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
+ "status.cancel_reblog_private": "Unboost",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.copy": "Copy link to status",
+ "status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Direct message @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Favourite",
+ "status.filtered": "Filtered",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mention @{name}",
+ "status.more": "More",
+ "status.mute": "Mute @{name}",
+ "status.mute_conversation": "Mute conversation",
+ "status.open": "Expand this status",
+ "status.pin": "Pin on profile",
+ "status.pinned": "Pinned toot",
+ "status.read_more": "Read more",
+ "status.reblog": "Boost",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
+ "status.reply": "Reply",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_warning": "Sensitive content",
+ "status.share": "Share",
+ "status.show_less": "Show less",
+ "status.show_less_all": "Show less for all",
+ "status.show_more": "Show more",
+ "status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
+ "status.uncached_media_warning": "Not available",
+ "status.unmute_conversation": "Unmute conversation",
+ "status.unpin": "Unpin from profile",
+ "suggestions.dismiss": "Dismiss suggestion",
+ "suggestions.header": "You might be interested in…",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Home",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "tabs_bar.search": "Search",
+ "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+ "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+ "time_remaining.moments": "Moments remaining",
+ "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "trends.trending_now": "Trending now",
+ "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Add images, a video or an audio file",
+ "upload_error.limit": "File upload limit exceeded.",
+ "upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
+ "upload_form.description": "Describe for the visually impaired",
+ "upload_form.edit": "Edit",
+ "upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+ "upload_modal.analyzing_picture": "Analyzing picture…",
+ "upload_modal.apply": "Apply",
+ "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+ "upload_modal.detect_text": "Detect text from picture",
+ "upload_modal.edit_media": "Edit media",
+ "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_progress.label": "Uploading…",
+ "video.close": "Close video",
+ "video.download": "Download file",
+ "video.exit_fullscreen": "Exit full screen",
+ "video.expand": "Expand video",
+ "video.fullscreen": "Full screen",
+ "video.hide": "Hide video",
+ "video.mute": "Mute sound",
+ "video.pause": "Pause",
+ "video.play": "Play",
+ "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index ea70c7055..6949ea5b0 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -1,19 +1,23 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "리스트에 추가 혹은 삭제",
"account.badges.bot": "봇",
+ "account.badges.group": "그룹",
"account.block": "@{name}을 차단",
"account.block_domain": "{domain} 전체를 숨김",
- "account.blocked": "차단 됨",
+ "account.blocked": "차단됨",
+ "account.browse_more_on_origin_server": "원본 프로필에서 더 탐색하기",
"account.cancel_follow_request": "팔로우 요청 취소",
- "account.direct": "@{name}으로부터의 다이렉트 메시지",
+ "account.direct": "@{name}의 다이렉트 메시지",
"account.domain_blocked": "도메인 숨겨짐",
"account.edit_profile": "프로필 편집",
- "account.endorse": "프로필에 나타내기",
+ "account.endorse": "프로필에 보이기",
"account.follow": "팔로우",
"account.followers": "팔로워",
- "account.followers.empty": "아직 아무도 이 유저를 팔로우 하고 있지 않습니다.",
+ "account.followers.empty": "아직 아무도 이 유저를 팔로우하고 있지 않습니다.",
"account.follows": "팔로우",
- "account.follows.empty": "이 유저는 아직 아무도 팔로우 하고 있지 않습니다.",
+ "account.follows.empty": "이 유저는 아직 아무도 팔로우하고 있지 않습니다.",
"account.follows_you": "날 팔로우합니다",
"account.hide_reblogs": "@{name}의 부스트를 숨기기",
"account.last_status": "마지막 활동",
@@ -38,10 +42,15 @@
"account.unfollow": "팔로우 해제",
"account.unmute": "뮤트 해제",
"account.unmute_notifications": "@{name}의 알림 뮤트 해제",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "{retry_time, time, medium}에 다시 시도해 주세요.",
"alert.rate_limited.title": "빈도 제한",
"alert.unexpected.message": "예측하지 못한 에러가 발생했습니다.",
"alert.unexpected.title": "앗!",
+ "announcement.announcement": "공지사항",
"autosuggest_hashtag.per_week": "주간 {count}회",
"boost_modal.combo": "{combo}를 누르면 다음부터 이 과정을 건너뛸 수 있습니다",
"bundle_column_error.body": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.",
"bundle_modal_error.retry": "다시 시도",
"column.blocks": "차단 중인 사용자",
+ "column.bookmarks": "보관함",
"column.community": "로컬 타임라인",
"column.direct": "다이렉트 메시지",
"column.directory": "프로필 둘러보기",
@@ -71,7 +81,9 @@
"column_header.show_settings": "설정 보이기",
"column_header.unpin": "고정 해제",
"column_subheading.settings": "설정",
+ "community.column_settings.local_only": "로컬만",
"community.column_settings.media_only": "미디어만",
+ "community.column_settings.remote_only": "원격만",
"compose_form.direct_message_warning": "이 툿은 멘션 된 유저들에게만 보여집니다.",
"compose_form.direct_message_warning_learn_more": "더 알아보기",
"compose_form.hashtag_warning": "이 툿은 어떤 해시태그로도 검색 되지 않습니다. 전체공개로 게시 된 툿만이 해시태그로 검색 될 수 있습니다.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "투표 기간",
"compose_form.poll.option_placeholder": "{number}번 항목",
"compose_form.poll.remove_option": "이 항목 삭제",
+ "compose_form.poll.switch_to_multiple": "다중 선택이 가능한 투표로 변경",
+ "compose_form.poll.switch_to_single": "단일 선택 투표로 변경",
"compose_form.publish": "툿",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "미디어를 민감함으로 설정하기",
@@ -99,7 +113,7 @@
"confirmations.delete_list.confirm": "삭제",
"confirmations.delete_list.message": "정말로 이 리스트를 삭제하시겠습니까?",
"confirmations.domain_block.confirm": "도메인 전체를 숨김",
- "confirmations.domain_block.message": "정말로 {domain} 전체를 숨기시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 컨텐츠를 보지 못합니다. 해당 도메인 팔로워와의 관계가 사라집니다.",
+ "confirmations.domain_block.message": "정말로 {domain} 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 컨텐츠를 보지 못합니다. 해당 도메인 팔로워와의 관계가 사라집니다.",
"confirmations.logout.confirm": "로그아웃",
"confirmations.logout.message": "정말로 로그아웃 하시겠습니까?",
"confirmations.mute.confirm": "뮤트",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "여긴 툿이 없어요!",
"empty_column.account_unavailable": "프로필 사용 불가",
"empty_column.blocks": "아직 아무도 차단하지 않았습니다.",
+ "empty_column.bookmarked_statuses": "아직 보관한 툿이 없습니다. 툿을 보관하면 여기에 나타납니다.",
"empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!",
"empty_column.direct": "아직 다이렉트 메시지가 없습니다. 다이렉트 메시지를 보내거나 받은 경우, 여기에 표시 됩니다.",
"empty_column.domain_blocks": "아직 숨겨진 도메인이 없습니다.",
@@ -158,8 +173,9 @@
"errors.unexpected_crash.report_issue": "문제 신고",
"follow_request.authorize": "허가",
"follow_request.reject": "거부",
+ "follow_requests.unlocked_explanation": "당신의 계정이 잠기지 않았다고 할 지라도, {domain}의 스탭은 당신이 이 계정들로부터의 팔로우 요청을 수동으로 확인하길 원한다고 생각했습니다.",
"getting_started.developers": "개발자",
- "getting_started.directory": "프로필 디렉터리",
+ "getting_started.directory": "프로필 책자",
"getting_started.documentation": "문서",
"getting_started.heading": "시작",
"getting_started.invite": "초대",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "기본 설정",
"home.column_settings.show_reblogs": "부스트 표시",
"home.column_settings.show_replies": "답글 표시",
+ "home.hide_announcements": "공지사항 숨기기",
+ "home.show_announcements": "공지사항 보기",
"intervals.full.days": "{number} 일",
"intervals.full.hours": "{number} 시간",
"intervals.full.minutes": "{number} 분",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "뮤트 된 유저 리스트 열기",
"keyboard_shortcuts.my_profile": "내 프로필 열기",
"keyboard_shortcuts.notifications": "알림 컬럼 열기",
+ "keyboard_shortcuts.open_media": "미디어 열기",
"keyboard_shortcuts.pinned": "고정 툿 리스트 열기",
"keyboard_shortcuts.profile": "프로필 열기",
"keyboard_shortcuts.reply": "답장",
"keyboard_shortcuts.requests": "팔로우 요청 리스트 열기",
"keyboard_shortcuts.search": "검색창에 포커스",
+ "keyboard_shortcuts.spoilers": "CW 필드를 보이거나 숨기기",
"keyboard_shortcuts.start": "\"시작하기\" 컬럼 열기",
"keyboard_shortcuts.toggle_hidden": "CW로 가려진 텍스트를 표시/비표시",
"keyboard_shortcuts.toggle_sensitivity": "이미지 보이기/숨기기",
@@ -248,9 +268,10 @@
"media_gallery.toggle_visible": "표시 전환",
"missing_indicator.label": "찾을 수 없습니다",
"missing_indicator.sublabel": "이 리소스를 찾을 수 없었습니다",
- "mute_modal.hide_notifications": "이 사용자로부터의 알림을 뮤트하시겠습니까?",
+ "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?",
"navigation_bar.apps": "모바일 앱",
"navigation_bar.blocks": "차단한 사용자",
+ "navigation_bar.bookmarks": "보관함",
"navigation_bar.community_timeline": "로컬 타임라인",
"navigation_bar.compose": "새 툿 작성",
"navigation_bar.direct": "다이렉트 메시지",
@@ -258,7 +279,7 @@
"navigation_bar.domain_blocks": "숨겨진 도메인",
"navigation_bar.edit_profile": "프로필 편집",
"navigation_bar.favourites": "즐겨찾기",
- "navigation_bar.filters": "뮤트",
+ "navigation_bar.filters": "뮤트된 단어",
"navigation_bar.follow_requests": "팔로우 요청",
"navigation_bar.follows_and_followers": "팔로우와 팔로워",
"navigation_bar.info": "이 서버에 대해서",
@@ -273,7 +294,9 @@
"navigation_bar.security": "보안",
"notification.favourite": "{name}님이 즐겨찾기 했습니다",
"notification.follow": "{name}님이 나를 팔로우 했습니다",
+ "notification.follow_request": "{name}님이 팔로우 요청을 보냈습니다",
"notification.mention": "{name}님이 답글을 보냈습니다",
+ "notification.own_poll": "내 투표가 끝났습니다",
"notification.poll": "당신이 참여 한 투표가 종료되었습니다",
"notification.reblog": "{name}님이 부스트 했습니다",
"notifications.clear": "알림 지우기",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "퀵 필터 바",
"notifications.column_settings.filter_bar.show": "표시",
"notifications.column_settings.follow": "새 팔로워:",
+ "notifications.column_settings.follow_request": "새 팔로우 요청:",
"notifications.column_settings.mention": "답글:",
"notifications.column_settings.poll": "투표 결과:",
"notifications.column_settings.push": "푸시 알림",
@@ -322,6 +346,7 @@
"relative_time.just_now": "방금",
"relative_time.minutes": "{number}분 전",
"relative_time.seconds": "{number}초 전",
+ "relative_time.today": "오늘",
"reply_indicator.cancel": "취소",
"report.forward": "{target}에 포워드 됨",
"report.forward_hint": "이 계정은 다른 서버에 있습니다. 익명화 된 사본을 해당 서버에도 전송할까요?",
@@ -341,9 +366,10 @@
"search_results.statuses": "툿",
"search_results.statuses_fts_disabled": "이 마스토돈 서버에선 툿의 내용을 통한 검색이 활성화 되어 있지 않습니다.",
"search_results.total": "{count, number}건의 결과",
- "status.admin_account": "@{name}에 대한 모더레이션 인터페이스 열기",
- "status.admin_status": "모더레이션 인터페이스에서 이 게시물 열기",
+ "status.admin_account": "@{name}에 대한 중재 화면 열기",
+ "status.admin_status": "중재 화면에서 이 게시물 열기",
"status.block": "@{name} 차단",
+ "status.bookmark": "보관",
"status.cancel_reblog_private": "부스트 취소",
"status.cannot_reblog": "이 포스트는 부스트 할 수 없습니다",
"status.copy": "게시물 링크 복사",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name}님이 부스트 했습니다",
"status.reblogs.empty": "아직 아무도 이 툿을 부스트하지 않았습니다. 부스트 한 사람들이 여기에 표시 됩니다.",
"status.redraft": "지우고 다시 쓰기",
+ "status.remove_bookmark": "보관한 툿 삭제",
"status.reply": "답장",
"status.replyAll": "전원에게 답장",
"status.report": "신고",
@@ -382,7 +409,7 @@
"status.unmute_conversation": "이 대화의 뮤트 해제하기",
"status.unpin": "고정 해제",
"suggestions.dismiss": "추천 지우기",
- "suggestions.header": "이것에 관심이 있을 것 같습니다…",
+ "suggestions.header": "여기에 관심이 있을 것 같습니다…",
"tabs_bar.federated_timeline": "연합",
"tabs_bar.home": "홈",
"tabs_bar.local_timeline": "로컬",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number} 분 남음",
"time_remaining.moments": "남은 시간",
"time_remaining.seconds": "{number} 초 남음",
+ "timeline_hint.remote_resource_not_displayed": "다른 서버의 {resource}는 보여지지 않습니다.",
+ "timeline_hint.resources.followers": "팔로워",
+ "timeline_hint.resources.follows": "팔로우",
+ "timeline_hint.resources.statuses": "이전 툿",
"trends.count_by_accounts": "{count} 명의 사람들이 말하고 있습니다",
"trends.trending_now": "지금 유행중",
"ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.",
@@ -400,9 +431,11 @@
"upload_button.label": "미디어 추가 (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "파일 업로드 제한에 도달했습니다.",
"upload_error.poll": "파일 업로드는 투표와 함께 첨부할 수 없습니다.",
+ "upload_form.audio_description": "청각 장애인을 위한 설명",
"upload_form.description": "시각장애인을 위한 설명",
"upload_form.edit": "편집",
"upload_form.undo": "삭제",
+ "upload_form.video_description": "청각, 시각 장애인을 위한 설명",
"upload_modal.analyzing_picture": "이미지 분석 중…",
"upload_modal.apply": "적용",
"upload_modal.description_placeholder": "다람쥐 헌 쳇바퀴 타고파",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "미리보기 ({ratio})",
"upload_progress.label": "업로드 중...",
"video.close": "동영상 닫기",
+ "video.download": "파일 다운로드",
"video.exit_fullscreen": "전체화면 나가기",
"video.expand": "동영상 확장",
"video.fullscreen": "전체화면",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 39ca86a0c..67cf5a5c5 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
+ "account.badges.group": "Group",
"account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct message @{name}",
"account.domain_blocked": "Domain hidden",
@@ -38,10 +42,15 @@
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Blocked users",
+ "column.bookmarks": "Bookmarks",
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.settings": "Settings",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -245,12 +265,13 @@
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
@@ -322,6 +346,7 @@
"relative_time.just_now": "now",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Cancel",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
@@ -393,16 +420,22 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
"upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"video.close": "Close video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 1c0e35501..6a17a4a0c 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Pievienot vai noņemt no saraksta",
"account.badges.bot": "Bots",
+ "account.badges.group": "Group",
"account.block": "Bloķēt @{name}",
"account.block_domain": "Slēpt visu no {domain}",
"account.blocked": "Bloķēts",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Privātā ziņa @{name}",
"account.domain_blocked": "Domēns ir paslēpts",
@@ -38,10 +42,15 @@
"account.unfollow": "Nesekot",
"account.unmute": "Noņemt apklusinājumu no lietotāja @{name}",
"account.unmute_notifications": "Rādīt paziņojumus no lietotāja @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "Negaidīta kļūda.",
"alert.unexpected.title": "Ups!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz",
"bundle_column_error.body": "Kaut kas nogāja greizi ielādējot šo komponenti.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.",
"bundle_modal_error.retry": "Mēģini vēlreiz",
"column.blocks": "Bloķētie lietotāji",
+ "column.bookmarks": "Bookmarks",
"column.community": "Lokālā laika līnija",
"column.direct": "Privātās ziņas",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Rādīt iestatījumus",
"column_header.unpin": "Atspraust",
"column_subheading.settings": "Iestatījumi",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Tikai mēdiji",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "Šis ziņojums tiks nosūtīts tikai pieminētajiem lietotājiem.",
"compose_form.direct_message_warning_learn_more": "Papildus informācija",
"compose_form.hashtag_warning": "Ziņojumu nebūs iespējams atrast zem haštagiem jo tas nav publisks. Tikai publiskos ziņojumus ir iespējams meklēt pēc tiem.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Publicēt",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Šeit ziņojumu nav!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Tu neesi vēl nevienu bloķējis.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "Lokālā laika līnija ir tukša. :/ Ieraksti kaut ko lai sākas rosība!",
"empty_column.direct": "Tev nav privāto ziņu. Tiklīdz saņemsi tās šeit parādīsies.",
"empty_column.domain_blocks": "Slēpto domēnu vēl nav.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Autorizēt",
"follow_request.reject": "Noraidīt",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -245,12 +265,13 @@
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
@@ -322,6 +346,7 @@
"relative_time.just_now": "now",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Cancel",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
@@ -393,16 +420,22 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
"upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"video.close": "Close video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index 9a4a417af..65d546795 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Додади или одстрани од листа",
"account.badges.bot": "Бот",
+ "account.badges.group": "Group",
"account.block": "Блокирај @{name}",
"account.block_domain": "Сокријај се од {domain}",
"account.blocked": "Блокиран",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Одкажи барање за следење",
"account.direct": "Директна порана @{name}",
"account.domain_blocked": "Скриен домен",
@@ -34,14 +38,19 @@
"account.show_reblogs": "Прикажи бустови од @{name}",
"account.unblock": "Одблокирај @{name}",
"account.unblock_domain": "Прикажи {domain}",
- "account.unendorse": "Don't feature on profile",
+ "account.unendorse": "Не прикажувај на профил",
"account.unfollow": "Одследи",
"account.unmute": "Зачути го @{name}",
"account.unmute_notifications": "Исклучи известувања од @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Обидете се повторно после {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "Неочекувана грешка.",
"alert.unexpected.title": "Упс!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} неделно",
"boost_modal.combo": "Кликни {combo} за да го прескокниш ова нареден пат",
"bundle_column_error.body": "Се случи проблем при вчитувањето.",
@@ -51,102 +60,108 @@
"bundle_modal_error.message": "Настана грешка при прикажувањето на оваа веб-страница.",
"bundle_modal_error.retry": "Обидете се повторно",
"column.blocks": "Блокирани корисници",
- "column.community": "Local timeline",
+ "column.bookmarks": "Bookmarks",
+ "column.community": "Локална временска зона",
"column.direct": "Директна порака",
- "column.directory": "Browse profiles",
- "column.domain_blocks": "Hidden domains",
- "column.favourites": "Favourites",
+ "column.directory": "Види профили",
+ "column.domain_blocks": "Скриени домеини",
+ "column.favourites": "Омилени",
"column.follow_requests": "Follow requests",
"column.home": "Дома",
"column.lists": "Листа",
- "column.mutes": "Muted users",
+ "column.mutes": "Заќутени корисници",
"column.notifications": "Известувања",
"column.pins": "Pinned toot",
- "column.public": "Federated timeline",
+ "column.public": "Федеративен времеплов",
"column_back_button.label": "Назад",
- "column_header.hide_settings": "Hide settings",
- "column_header.moveLeft_settings": "Move column to the left",
- "column_header.moveRight_settings": "Move column to the right",
+ "column_header.hide_settings": "Скриј подесувања",
+ "column_header.moveLeft_settings": "Премести колона влево",
+ "column_header.moveRight_settings": "Премести колона вдесно",
"column_header.pin": "Pin",
- "column_header.show_settings": "Show settings",
+ "column_header.show_settings": "Прикажи подесувања",
"column_header.unpin": "Unpin",
- "column_subheading.settings": "Settings",
- "community.column_settings.media_only": "Media only",
+ "column_subheading.settings": "Подесувања",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "Само медиа",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
- "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.direct_message_warning_learn_more": "Научи повеќе",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
- "compose_form.lock_disclaimer.lock": "locked",
- "compose_form.placeholder": "What is on your mind?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
- "compose_form.publish": "Toot",
+ "compose_form.lock_disclaimer.lock": "заклучен",
+ "compose_form.placeholder": "Што имате на ум?",
+ "compose_form.poll.add_option": "Додај избор",
+ "compose_form.poll.duration": "Времетрање на анкета",
+ "compose_form.poll.option_placeholder": "Избери {number}",
+ "compose_form.poll.remove_option": "Избриши избор",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "Тутови",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
- "compose_form.spoiler.marked": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.sensitive.hide": "Обележи медиа како сензитивна",
+ "compose_form.sensitive.marked": "Медиата е обележана како сензитивна",
+ "compose_form.sensitive.unmarked": "Медиата не е обележана како сензитивна",
+ "compose_form.spoiler.marked": "Текстот е сокриен зад предупредување",
+ "compose_form.spoiler.unmarked": "Текстот не е сокриен",
"compose_form.spoiler_placeholder": "Write your warning here",
- "confirmation_modal.cancel": "Cancel",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmation_modal.cancel": "Откажи",
+ "confirmations.block.block_and_report": "Блокирај и Пријави",
"confirmations.block.confirm": "Блокирај",
- "confirmations.block.message": "Are you sure you want to block {name}?",
- "confirmations.delete.confirm": "Delete",
- "confirmations.delete.message": "Are you sure you want to delete this status?",
- "confirmations.delete_list.confirm": "Delete",
- "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
- "confirmations.domain_block.confirm": "Hide entire domain",
- "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
- "confirmations.mute.confirm": "Mute",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
- "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.block.message": "Сигурни сте дека дека го блокирате {name}?",
+ "confirmations.delete.confirm": "Избриши",
+ "confirmations.delete.message": "Сигурни сте дека го бришите статусот?",
+ "confirmations.delete_list.confirm": "Избриши",
+ "confirmations.delete_list.message": "Дали сте сигурни дека сакате да го избришете списоков?",
+ "confirmations.domain_block.confirm": "Сокриј цел домеин",
+ "confirmations.domain_block.message": "Дали скроз сте сигурни дека ќе блокирате сѐ од {domain}? Во повеќето случаеви неколку таргетирани блокирања или заќутувања се доволни и предложени. Нема да ја видите содржината од тој домеин во никој јавен времеплов или вашите нотификации. Вашите следбеници од тој домеин ќе бидат остранети.",
+ "confirmations.logout.confirm": "Одјави се",
+ "confirmations.logout.message": "Дали сте сигурни дека сакате да се одјавите?",
+ "confirmations.mute.confirm": "Заќути",
+ "confirmations.mute.explanation": "Ќе сокрие објави од нив и објави кои ги спомнуваат нив, но сеуште ќе им дозволи да ги видат вашите постови и ве следат.",
+ "confirmations.mute.message": "Дали ќе го заќутите {name}?",
"confirmations.redraft.confirm": "Delete & redraft",
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
- "confirmations.reply.confirm": "Reply",
+ "confirmations.reply.confirm": "Одговори",
"confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
- "confirmations.unfollow.confirm": "Unfollow",
- "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
+ "confirmations.unfollow.confirm": "Одследи",
+ "confirmations.unfollow.message": "Сигурни сте дека ќе го отследите {name}?",
+ "conversation.delete": "Избриши разговор",
+ "conversation.mark_as_read": "Означете како прочитано",
+ "conversation.open": "Прегледај разговор",
+ "conversation.with": "Со {names}",
+ "directory.federated": "Од познати fediverse",
+ "directory.local": "Само од {domain}",
"directory.new_arrivals": "New arrivals",
"directory.recently_active": "Recently active",
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
- "emoji_button.activity": "Activity",
+ "emoji_button.activity": "Активност",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
- "emoji_button.food": "Food & Drink",
+ "emoji_button.food": "Храна & Пијалаци",
"emoji_button.label": "Insert emoji",
- "emoji_button.nature": "Nature",
+ "emoji_button.nature": "Природа",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
- "emoji_button.objects": "Objects",
- "emoji_button.people": "People",
- "emoji_button.recent": "Frequently used",
- "emoji_button.search": "Search...",
- "emoji_button.search_results": "Search results",
- "emoji_button.symbols": "Symbols",
- "emoji_button.travel": "Travel & Places",
+ "emoji_button.objects": "Објекти",
+ "emoji_button.people": "Луѓе",
+ "emoji_button.recent": "Најчесто користени",
+ "emoji_button.search": "Барај...",
+ "emoji_button.search_results": "Резултати од барање",
+ "emoji_button.symbols": "Симболи",
+ "emoji_button.travel": "Патувања и Места",
"empty_column.account_timeline": "No toots here!",
- "empty_column.account_unavailable": "Profile unavailable",
- "empty_column.blocks": "You haven't blocked any users yet.",
- "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
- "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.account_unavailable": "Недостапен профил",
+ "empty_column.blocks": "Немате сеуште блокирано корисници.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "empty_column.community": "Локалниот времеплов е празен. Објавете нешто јавно за да може да почне шоуто!",
+ "empty_column.direct": "Немате директни пораки. Кога ќе пратите или примите, ќе се појават тука.",
+ "empty_column.domain_blocks": "Немате сокриени домеини уште.",
"empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
"empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
"empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "There is nothing in this hashtag yet.",
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
- "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.home.public_timeline": "јавен времеплов",
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
"empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
"empty_column.mutes": "You haven't muted any users yet.",
@@ -155,50 +170,53 @@
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
- "follow_request.authorize": "Authorize",
- "follow_request.reject": "Reject",
- "getting_started.developers": "Developers",
- "getting_started.directory": "Profile directory",
- "getting_started.documentation": "Documentation",
- "getting_started.heading": "Getting started",
- "getting_started.invite": "Invite people",
- "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
- "home.column_settings.basic": "Basic",
- "home.column_settings.show_reblogs": "Show boosts",
- "home.column_settings.show_replies": "Show replies",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
- "introduction.federation.federated.headline": "Federated",
- "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
- "introduction.federation.home.headline": "Home",
+ "errors.unexpected_crash.report_issue": "Пријавете проблем",
+ "follow_request.authorize": "Одобри",
+ "follow_request.reject": "Одбиј",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "Програмери",
+ "getting_started.directory": "Профил директориум",
+ "getting_started.documentation": "Документација",
+ "getting_started.heading": "Започни",
+ "getting_started.invite": "Покани луѓе",
+ "getting_started.open_source_notice": "Мастодон е софтвер со отворен код. Можете да придонесувате или пријавувате проблеми во GitHub на {github}.",
+ "getting_started.security": "Поставки на сметката",
+ "getting_started.terms": "Услови на користење",
+ "hashtag.column_header.tag_mode.all": "и {additional}",
+ "hashtag.column_header.tag_mode.any": "или {additional}",
+ "hashtag.column_header.tag_mode.none": "без {additional}",
+ "hashtag.column_settings.select.no_options_message": "Нема предлози",
+ "hashtag.column_settings.select.placeholder": "Внеси хаштагови…",
+ "hashtag.column_settings.tag_mode.all": "Сите овие",
+ "hashtag.column_settings.tag_mode.any": "Било кои",
+ "hashtag.column_settings.tag_mode.none": "Никои",
+ "hashtag.column_settings.tag_toggle": "Стави додатни тагови за оваа колона",
+ "home.column_settings.basic": "Основно",
+ "home.column_settings.show_reblogs": "Прикажи бустирања",
+ "home.column_settings.show_replies": "Прикажи одговори",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
+ "intervals.full.days": "{number, plural, one {# ден} other {# дена}}",
+ "intervals.full.hours": "{number, plural, one {# час} other {# часа}}",
+ "intervals.full.minutes": "{number, plural, one {# минута} other {# минути}}",
+ "introduction.federation.action": "Следно",
+ "introduction.federation.federated.headline": "Федеративно",
+ "introduction.federation.federated.text": "Јавни објави од други сервери од fediverse ќе се појават во федеративниот времеплов.",
+ "introduction.federation.home.headline": "Дома",
"introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
- "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.headline": "Локално",
"introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
- "introduction.interactions.action": "Finish toot-orial!",
- "introduction.interactions.favourite.headline": "Favourite",
+ "introduction.interactions.action": "Заврши туторијал!",
+ "introduction.interactions.favourite.headline": "Омилени",
"introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
- "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.headline": "Бустирај",
"introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
- "introduction.interactions.reply.headline": "Reply",
+ "introduction.interactions.reply.headline": "Одговори",
"introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "First steps",
+ "introduction.welcome.action": "Да започнеме!",
+ "introduction.welcome.headline": "Почетни чекори",
"introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
- "keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.back": "за да одите назад",
"keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
- "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.reply": "одговори",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -245,35 +265,38 @@
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "Edit profile",
- "navigation_bar.favourites": "Favourites",
- "navigation_bar.filters": "Muted words",
- "navigation_bar.follow_requests": "Follow requests",
- "navigation_bar.follows_and_followers": "Follows and followers",
- "navigation_bar.info": "About this server",
- "navigation_bar.keyboard_shortcuts": "Hotkeys",
- "navigation_bar.lists": "Lists",
- "navigation_bar.logout": "Logout",
- "navigation_bar.mutes": "Muted users",
- "navigation_bar.personal": "Personal",
+ "navigation_bar.edit_profile": "Уреди профил",
+ "navigation_bar.favourites": "Омилени",
+ "navigation_bar.filters": "Замолќени зборови",
+ "navigation_bar.follow_requests": "Следи покани",
+ "navigation_bar.follows_and_followers": "Следења и следбеници",
+ "navigation_bar.info": "За овој сервер",
+ "navigation_bar.keyboard_shortcuts": "Кратенки",
+ "navigation_bar.lists": "Листи",
+ "navigation_bar.logout": "Одјави се",
+ "navigation_bar.mutes": "Заќутени корисници",
+ "navigation_bar.personal": "Лично",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences",
- "navigation_bar.public_timeline": "Federated timeline",
- "navigation_bar.security": "Security",
+ "navigation_bar.public_timeline": "Федеративен времеплов",
+ "navigation_bar.security": "Безбедност",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
@@ -284,57 +307,59 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Mentions:",
- "notifications.column_settings.poll": "Poll results:",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.reblog": "Boosts:",
- "notifications.column_settings.show": "Show in column",
- "notifications.column_settings.sound": "Play sound",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Boosts",
- "notifications.filter.favourites": "Favourites",
- "notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
- "notifications.group": "{count} notifications",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
- "privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "Post to public timelines",
- "privacy.public.short": "Public",
- "privacy.unlisted.long": "Do not show in public timelines",
- "privacy.unlisted.short": "Unlisted",
- "refresh": "Refresh",
- "regeneration_indicator.label": "Loading…",
- "regeneration_indicator.sublabel": "Your home feed is being prepared!",
- "relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
- "relative_time.just_now": "now",
- "relative_time.minutes": "{number}m",
- "relative_time.seconds": "{number}s",
- "reply_indicator.cancel": "Cancel",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
- "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
- "report.placeholder": "Additional comments",
- "report.submit": "Submit",
- "report.target": "Report {target}",
- "search.placeholder": "Search",
- "search_popout.search_format": "Advanced search format",
+ "notifications.column_settings.poll": "Резултати од анкета:",
+ "notifications.column_settings.push": "Пуш нотификации",
+ "notifications.column_settings.reblog": "Бустови:",
+ "notifications.column_settings.show": "Прикажи во колона",
+ "notifications.column_settings.sound": "Свири звуци",
+ "notifications.filter.all": "Сите",
+ "notifications.filter.boosts": "Бустови",
+ "notifications.filter.favourites": "Омилени",
+ "notifications.filter.follows": "Следења",
+ "notifications.filter.mentions": "Спомнувања",
+ "notifications.filter.polls": "Резултати од анкета",
+ "notifications.group": "{count} нотификации",
+ "poll.closed": "Затворени",
+ "poll.refresh": "Освежи",
+ "poll.total_people": "{count, plural, one {# човек} other {# луѓе}}",
+ "poll.total_votes": "{count, plural, one {# глас} other {# гласа}}",
+ "poll.vote": "Гласај",
+ "poll.voted": "Вие гласавте за овој одговор",
+ "poll_button.add_poll": "Додадете нова анкета",
+ "poll_button.remove_poll": "Избришете анкета",
+ "privacy.change": "Штеловај статус на приватност",
+ "privacy.direct.long": "Објави само на спомнати корисници",
+ "privacy.direct.short": "Директно",
+ "privacy.private.long": "Објави само на следбеници",
+ "privacy.private.short": "Само следбеници",
+ "privacy.public.long": "Објави во јавни времплови",
+ "privacy.public.short": "Јавно",
+ "privacy.unlisted.long": "Не објавувај на јавни времеплови",
+ "privacy.unlisted.short": "Необјавено",
+ "refresh": "Освежи",
+ "regeneration_indicator.label": "Вчитување…",
+ "regeneration_indicator.sublabel": "Вашиот новости се подготвуваат!",
+ "relative_time.days": "{number}д",
+ "relative_time.hours": "{number}ч",
+ "relative_time.just_now": "сега",
+ "relative_time.minutes": "{number}м",
+ "relative_time.seconds": "{number}с",
+ "relative_time.today": "today",
+ "reply_indicator.cancel": "Откажи",
+ "report.forward": "Проследи до {target}",
+ "report.forward_hint": "Оваа сметка е од друг сервер. Испрати анонимна копија од пријавата и таму?",
+ "report.hint": "Пријавата ќе биде испратена до вашиот серверски модератор. Подолу можете да ставите опис зошто ја пријавувате сметката:",
+ "report.placeholder": "Додатни коментари",
+ "report.submit": "Испрати",
+ "report.target": "Пријавување {target}",
+ "search.placeholder": "Барај",
+ "search_popout.search_format": "Напреден формат за барање",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
- "search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.hashtag": "хештег",
+ "search_popout.tips.status": "состојба",
+ "search_popout.tips.text": "Прост текст враќа совпаднати имиња, корисници и хештагови",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
@@ -384,25 +411,31 @@
"suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "You might be interested in…",
"tabs_bar.federated_timeline": "Federated",
- "tabs_bar.home": "Home",
- "tabs_bar.local_timeline": "Local",
- "tabs_bar.notifications": "Notifications",
- "tabs_bar.search": "Search",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "tabs_bar.home": "Дома",
+ "tabs_bar.local_timeline": "Локално",
+ "tabs_bar.notifications": "Нотификации",
+ "tabs_bar.search": "Барај",
+ "time_remaining.days": "{number, plural, one {# ден} other {# дена}} {number, plural, one {остана} other {останаа}}",
+ "time_remaining.hours": "{number, plural, one {# час} other {# часа}} {number, plural, one {остана} other {останаа}}",
+ "time_remaining.minutes": "{number, plural, one {# минута} other {# минути}} {number, plural, one {остана} other {останаа}}",
+ "time_remaining.moments": "Уште некои мига",
+ "time_remaining.seconds": "{number, plural, one {# секунда} other {# секунди}} {number, plural, one {остана} other {останаа}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
"upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"video.close": "Close video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
new file mode 100644
index 000000000..699dd91cb
--- /dev/null
+++ b/app/javascript/mastodon/locales/ml.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "പട്ടികയിൽ ചേർക്കുകയോ അല്ലെങ്കിൽ മാറ്റുകയോ ചെയ്യുക",
+ "account.badges.bot": "റോബോട്ട്",
+ "account.badges.group": "Group",
+ "account.block": "@{name} നെ ബ്ലോക്ക് ചെയ്യുക",
+ "account.block_domain": "{domain} ൽ നിന്നുള്ള എല്ലാം മറയ്കുക",
+ "account.blocked": "തടഞ്ഞു",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "പിന്തുടരാനുള്ള അപേക്ഷ നിരസിക്കുക",
+ "account.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക",
+ "account.domain_blocked": "മേഖല മറയ്ക്കപ്പെട്ടിരിക്കുന്നു",
+ "account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക",
+ "account.endorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കുക",
+ "account.follow": "പിന്തുടരുക",
+ "account.followers": "പിന്തുടരുന്നവർ",
+ "account.followers.empty": "ഈ ഉപയോക്താവിനെ ആരും ഇതുവരെ പിന്തുടരുന്നില്ല.",
+ "account.follows": "പിന്തുടരുന്നു",
+ "account.follows.empty": "ഈ ഉപയോക്താവ് ആരേയും ഇതുവരെ പിന്തുടരുന്നില്ല.",
+ "account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു",
+ "account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക",
+ "account.last_status": "അവസാനം കണ്ടത്",
+ "account.link_verified_on": "ഈ ലിങ്കിന്റെ ഉടമസ്തത {date} ഇൽ ഉറപ്പാക്കിയതാണ്",
+ "account.locked_info": "ഈ അംഗത്വത്തിന്റെ സ്വകാര്യതാ നിലപാട് അനുസരിച്ച് പിന്തുടരുന്നവരെ തിരഞ്ഞെടുക്കാനുള്ള വിവേചനാധികാരം ഉടമസ്ഥനിൽ നിഷിപ്തമായിരിക്കുന്നു.",
+ "account.media": "മീഡിയ",
+ "account.mention": "@{name} സൂചിപ്പിക്കുക",
+ "account.moved_to": "{name} ഇതിലേക്ക് മാറിയിരിക്കുന്നു:",
+ "account.mute": "നിശ്ശബ്ദമാക്കുക @{name}",
+ "account.mute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ നിശബ്ദമാക്കുക",
+ "account.muted": "നിശ്ശബ്ദമാക്കിയിരിക്കുന്നു",
+ "account.never_active": "ഒരിക്കലും ഇല്ല",
+ "account.posts": "ടൂട്ടുകൾ",
+ "account.posts_with_replies": "ടൂട്ടുകളും മറുപടികളും",
+ "account.report": "റിപ്പോർട്ട് ചെയ്യുക @{name}",
+ "account.requested": "അനുവാദത്തിനായി കാത്തിരിക്കുന്നു. പിന്തുടരാനുള്ള അപേക്ഷ റദ്ദാക്കുവാൻ ഞെക്കുക",
+ "account.share": "@{name} ന്റെ പ്രൊഫൈൽ പങ്കുവെക്കുക",
+ "account.show_reblogs": "@{name} ൽ നിന്നുള്ള ബൂസ്റ്റുകൾ കാണിക്കുക",
+ "account.unblock": "ബ്ലോക്ക് മാറ്റുക @{name}",
+ "account.unblock_domain": "{domain} വെളിപ്പെടുത്തുക",
+ "account.unendorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കാതിരിക്കുക",
+ "account.unfollow": "പിന്തുടരുന്നത് നിര്ത്തുക",
+ "account.unmute": "നിശ്ശബ്ദമാക്കുന്നത് നിർത്തുക @{name}",
+ "account.unmute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ പ്രസിദ്ധപ്പെടുത്തുക",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "{retry_time, time, medium} നു ശേഷം വീണ്ടും ശ്രമിക്കുക.",
+ "alert.rate_limited.title": "തോത് പരിമിതപ്പെടുത്തിയിരിക്കുന്നു",
+ "alert.unexpected.message": "അപ്രതീക്ഷിതമായി എന്തോ സംഭവിച്ചു.",
+ "alert.unexpected.title": "ശ്ശോ!",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "ആഴ്ച തോറും {count}",
+ "boost_modal.combo": "അടുത്ത തവണ ഇത് ഒഴിവാക്കുവാൻ {combo} ഞെക്കാവുന്നതാണ്",
+ "bundle_column_error.body": "ഈ ഘടകം പ്രദശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.",
+ "bundle_column_error.retry": "വീണ്ടും ശ്രമിക്കുക",
+ "bundle_column_error.title": "ശൃംഖലയിലെ പിഴവ്",
+ "bundle_modal_error.close": "അടയ്ക്കുക",
+ "bundle_modal_error.message": "ഈ വെബ്പേജ് പ്രദർശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.",
+ "bundle_modal_error.retry": "വീണ്ടും ശ്രമിക്കുക",
+ "column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ",
+ "column.bookmarks": "Bookmarks",
+ "column.community": "പ്രാദേശികമായ സമയരേഖ",
+ "column.direct": "നേരിട്ടുള്ള സന്ദേശങ്ങൾ",
+ "column.directory": "പ്രൊഫൈലുകൾ മറിച്ചുനോക്കുക",
+ "column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ",
+ "column.favourites": "പ്രിയപ്പെട്ടവ",
+ "column.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ",
+ "column.home": "ഭവനം",
+ "column.lists": "പട്ടികകൾ",
+ "column.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ",
+ "column.notifications": "അറിയിപ്പുകൾ",
+ "column.pins": "ഉറപ്പിച്ചു നിറുത്തിയിരിക്കുന്ന ടൂട്ടുകൾ",
+ "column.public": "സംയുക്തമായ സമയരേഖ",
+ "column_back_button.label": "പുറകിലേക്ക്",
+ "column_header.hide_settings": "സജ്ജീകരണങ്ങള് മറയ്ക്കുക",
+ "column_header.moveLeft_settings": "എഴുത്തുപംക്തി ഇടത്തോട്ട് മാറ്റുക",
+ "column_header.moveRight_settings": "എഴുത്തുപംക്തി വലത്തോട്ട് മാറ്റുക",
+ "column_header.pin": "ഉറപ്പിച്ചു നിറുത്തുക",
+ "column_header.show_settings": "ക്രമീകരണങ്ങൾ കാണിക്കുക",
+ "column_header.unpin": "ഇളക്കി മാറ്റുക",
+ "column_subheading.settings": "ക്രമീകരണങ്ങള്",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "മാധ്യമങ്ങൾ മാത്രം",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "പരാമർശിക്കപ്പെട്ടിരിക്കുന്ന ഉപയോഗ്താക്കൾക്കെ ഈ ടൂട്ട് അയക്കപ്പെടുകയുള്ളു.",
+ "compose_form.direct_message_warning_learn_more": "കൂടുതൽ പഠിക്കുക",
+ "compose_form.hashtag_warning": "ഈ ടൂട്ട് പട്ടികയിൽ ഇല്ലാത്തതിനാൽ ഒരു ചർച്ചാവിഷയത്തിന്റെ പട്ടികയിലും പെടുകയില്ല. പരസ്യമായ ടൂട്ടുകൾ മാത്രമേ ചർച്ചാവിഷയം അടിസ്ഥാനമാക്കി തിരയുവാൻ സാധിക്കുകയുള്ളു.",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "നിങ്ങളുടെ മനസ്സിൽ എന്താണ്?",
+ "compose_form.poll.add_option": "Add a choice",
+ "compose_form.poll.duration": "തിരഞ്ഞെടുപ്പിന്റെ സമയദൈർഖ്യം",
+ "compose_form.poll.option_placeholder": "Choice {number}",
+ "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "ടൂട്ട്",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.marked": "Media is marked as sensitive",
+ "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.spoiler.marked": "എഴുത്ത് മുന്നറിയിപ്പിനാൽ മറച്ചിരിക്കുന്നു",
+ "compose_form.spoiler.unmarked": "എഴുത്ത് മറയ്ക്കപ്പെട്ടിട്ടില്ല",
+ "compose_form.spoiler_placeholder": "നിങ്ങളുടെ മുന്നറിയിപ്പ് ഇവിടെ എഴുതുക",
+ "confirmation_modal.cancel": "റദ്ദാക്കുക",
+ "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.confirm": "തടയുക",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "മായ്ക്കുക",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete_list.confirm": "മായ്ക്കുക",
+ "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.logout.confirm": "പുറത്തുകടക്കുക",
+ "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.mute.confirm": "നിശ്ശബ്ദമാക്കുക",
+ "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.redraft.confirm": "മായിച്ച് മാറ്റങ്ങൾ വരുത്തി വീണ്ടും എഴുതുക",
+ "confirmations.redraft.message": "നിങ്ങൾ ഉറപ്പായും ഈ കുറിപ്പ് മായ്ച്ച് മാറ്റങ്ങൾ വരുത്തി വീണ്ടും എഴുതുവാൻ താല്പര്യപ്പെടുന്നുവോ? അങ്ങനെ ചെയ്യുന്ന പക്ഷം ഇതിനു ലഭിച്ചിരിക്കുന്ന പ്രിയപ്പെടലുകളും ബൂസ്റ്റുകളും ആദ്യമുണ്ടായിരുന്ന കുറിപ്പിന് ലഭിച്ചിരുന്ന മറുപടികൾ ഒറ്റപ്പെടുകയും ചെയ്യും.",
+ "confirmations.reply.confirm": "മറുപടി",
+ "confirmations.reply.message": "ഇപ്പോൾ മറുപടി കൊടുക്കുന്നത് നിങ്ങൾ എഴുതിക്കൊണ്ടിരിക്കുന്ന സന്ദേശത്തിന് മുകളിൽ എഴുതാൻ കാരണമാകും. തീർച്ചയായും മുൻപോട്ട് പോകാൻ തീരുമാനിച്ചുവോ?",
+ "confirmations.unfollow.confirm": "പിന്തുടരുന്നത് നിര്ത്തുക",
+ "confirmations.unfollow.message": "നിങ്ങൾ {name} യെ പിന്തുടരുന്നത് നിർത്തുവാൻ തീർച്ചയായും തീരുമാനിച്ചുവോ?",
+ "conversation.delete": "സംഭാഷണം മായിക്കുക",
+ "conversation.mark_as_read": "വായിച്ചതായി അടയാളപ്പെടുത്തുക",
+ "conversation.open": "സംഭാഷണം കാണുക",
+ "conversation.with": "{names} കൂടെ",
+ "directory.federated": "അറിയപ്പെടുന്ന ഫെഡിവേഴ്സ്ൽ നിന്ന്",
+ "directory.local": "{domain} ൽ നിന്ന് മാത്രം",
+ "directory.new_arrivals": "പുതിയ വരവുകൾ",
+ "directory.recently_active": "അടുത്തിടെയായി സജീവമായ",
+ "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.preview": "ഇത് ഇങ്ങനെ കാണപ്പെടും:",
+ "emoji_button.activity": "പ്രവര്ത്തനം",
+ "emoji_button.custom": "സ്വന്തമായ ഭേദഗതി",
+ "emoji_button.flags": "കൊടികൾ",
+ "emoji_button.food": "ഭക്ഷണവും പാനീയവും",
+ "emoji_button.label": "ഇമോജി ചേർക്കുക",
+ "emoji_button.nature": "പ്രകൃതി",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "വസ്തുക്കൾ",
+ "emoji_button.people": "ആളുകൾ",
+ "emoji_button.recent": "അടിക്കടി ഉപയോഗിക്കുന്നവ",
+ "emoji_button.search": "തിരയുക...",
+ "emoji_button.search_results": "തിരച്ചിൽ ഫലങ്ങൾ",
+ "emoji_button.symbols": "ചിഹ്നങ്ങൾ",
+ "emoji_button.travel": "യാത്രയും സ്ഥലങ്ങളും",
+ "empty_column.account_timeline": "ഇവിടെ ടൂട്ടുകൾ ഇല്ല!",
+ "empty_column.account_unavailable": "പ്രൊഫൈൽ ലഭ്യമല്ല",
+ "empty_column.blocks": "നിങ്ങൾ ഇതുവരെ ഒരു ഉപയോക്താക്കളെയും തടഞ്ഞിട്ടില്ല.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "empty_column.community": "പ്രാദേശികമായ സമയരേഖ ശൂന്യമാണ്. എന്തെങ്കിലും പരസ്യമായി എഴുതി തുടക്കം കുറിക്കു!",
+ "empty_column.direct": "നിങ്ങൾക്ക് ഇതുവരെ നേരിട്ടുള്ള സന്ദേശങ്ങൾ ഒന്നുമില്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് അയക്കുകയോ, നിങ്ങൾക്ക് ലഭിക്കുകയോ ചെയ്യുന്നപക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.",
+ "empty_column.domain_blocks": "മറയ്ക്കപ്പെട്ടിരിക്കുന്ന മേഖലകൾ ഇതുവരെ ഇല്ല.",
+ "empty_column.favourited_statuses": "നിങ്ങൾക്ക് ഇത് വരെ ഒരു പ്രിയപ്പെട്ട ടൂട്ടും ഇല്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് പ്രിയപ്പെടുന്ന പക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.",
+ "empty_column.favourites": "ഇതുവരെ ആരും ഈ ടൂട്ട് പ്രിയപ്പെട്ടതായി അടയാളപ്പെടുത്തിയിട്ടില്ല. ആരെങ്കിലും അങ്ങനെ ചെയ്യുന്നപക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.notifications": "നിങ്ങൾക്ക് ഇതുവരെ ഒരു അറിയിപ്പുകളും ഇല്ല. മറ്റുള്ളവരുമായി ഇടപെട്ട് സംഭാഷണത്തിന് തുടക്കം കുറിക്കു.",
+ "empty_column.public": "ഇവിടെ ഒന്നുമില്ലല്ലോ! ഇവിടെ നിറയ്ക്കാൻ എന്തെങ്കിലും പരസ്യമായി എഴുതുകയോ മറ്റ് ഉപഭോക്താക്കളെ പിന്തുടരുകയോ ചെയ്യുക",
+ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "errors.unexpected_crash.report_issue": "പ്രശ്നം അറിയിക്കുക",
+ "follow_request.authorize": "ചുമതലപ്പെടുത്തുക",
+ "follow_request.reject": "നിരസിക്കുക",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "വികസിപ്പിക്കുന്നവർ",
+ "getting_started.directory": "രൂപരേഖ നാമഗൃഹസൂചി",
+ "getting_started.documentation": "രേഖാ സമാഹരണം",
+ "getting_started.heading": "തുടക്കം കുറിക്കുക",
+ "getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക",
+ "getting_started.open_source_notice": "മാസ്റ്റഡോൺ ഒരു സ്വതന്ത്ര സോഫ്ട്വെയർ ആണ്. നിങ്ങൾക്ക് {github} GitHub ൽ സംഭാവന ചെയ്യുകയോ പ്രശ്നങ്ങൾ അറിയിക്കുകയോ ചെയ്യാം.",
+ "getting_started.security": "അംഗത്വ ക്രമീകരണങ്ങൾ",
+ "getting_started.terms": "സേവന വ്യവസ്ഥകൾ",
+ "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ",
+ "hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}",
+ "hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ",
+ "hashtag.column_settings.select.no_options_message": "ഒരു സൂചനയും കണ്ടെത്തിയില്ല",
+ "hashtag.column_settings.select.placeholder": "ചർച്ചാവിഷയങ്ങൾ എഴുതുക…",
+ "hashtag.column_settings.tag_mode.all": "ഇവയെല്ലാം",
+ "hashtag.column_settings.tag_mode.any": "ഇവയിലേതെങ്കിലും",
+ "hashtag.column_settings.tag_mode.none": "ഇതിലൊന്നുമല്ല",
+ "hashtag.column_settings.tag_toggle": "ഈ എഴുത്തുപംക്തിക്ക് കൂടുതൽ ഉപനാമങ്ങൾ ചേർക്കുക",
+ "home.column_settings.basic": "അടിസ്ഥാനം",
+ "home.column_settings.show_reblogs": "ബൂസ്റ്റുകൾ കാണിക്കുക",
+ "home.column_settings.show_replies": "മറുപടികൾ കാണിക്കുക",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
+ "intervals.full.days": "{number, plural, one {# day} other {# days}}",
+ "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "introduction.federation.action": "അടുത്തത്",
+ "introduction.federation.federated.headline": "സംയുക്തമാക്കിയ",
+ "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+ "introduction.federation.home.headline": "ഭവനം",
+ "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+ "introduction.federation.local.headline": "പ്രാദേശികം",
+ "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "introduction.interactions.action": "പഠനസഹായി പൂർത്തീകരിക്കുക!",
+ "introduction.interactions.favourite.headline": "പ്രിയപ്പെട്ടത്",
+ "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.reblog.headline": "ബൂസ്റ്റ് ചെയ്യുക",
+ "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.reply.headline": "മറുപടി",
+ "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+ "introduction.welcome.action": "നമുക്ക് തുടങ്ങാം!",
+ "introduction.welcome.headline": "ആദ്യ ചുവടുവെപ്പുകൾ",
+ "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "keyboard_shortcuts.back": "തിരികെ പോകുക",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "വിവരണം",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "to move down in the list",
+ "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "കീബോർഡ് എളുപ്പവഴികൾ",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "to move up in the list",
+ "lightbox.close": "Close",
+ "lightbox.next": "Next",
+ "lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "Add to list",
+ "lists.account.remove": "Remove from list",
+ "lists.delete": "Delete list",
+ "lists.edit": "Edit list",
+ "lists.edit.submit": "Change title",
+ "lists.new.create": "Add list",
+ "lists.new.title_placeholder": "New list title",
+ "lists.search": "Search among people you follow",
+ "lists.subheading": "Your lists",
+ "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "loading_indicator.label": "Loading...",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
+ "missing_indicator.label": "Not found",
+ "missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Direct messages",
+ "navigation_bar.discover": "Discover",
+ "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.edit_profile": "Edit profile",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.filters": "Muted words",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.info": "About this server",
+ "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "navigation_bar.lists": "Lists",
+ "navigation_bar.logout": "Logout",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.preferences": "Preferences",
+ "navigation_bar.public_timeline": "Federated timeline",
+ "navigation_bar.security": "Security",
+ "notification.favourite": "{name} favourited your status",
+ "notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
+ "notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
+ "notification.poll": "A poll you have voted in has ended",
+ "notification.reblog": "{name} boosted your status",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.filter_bar.advanced": "Display all categories",
+ "notifications.column_settings.filter_bar.category": "Quick filter bar",
+ "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.filter.all": "All",
+ "notifications.filter.boosts": "Boosts",
+ "notifications.filter.favourites": "Favourites",
+ "notifications.filter.follows": "Follows",
+ "notifications.filter.mentions": "Mentions",
+ "notifications.filter.polls": "Poll results",
+ "notifications.group": "{count} notifications",
+ "poll.closed": "Closed",
+ "poll.refresh": "Refresh",
+ "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.vote": "Vote",
+ "poll.voted": "You voted for this answer",
+ "poll_button.add_poll": "Add a poll",
+ "poll_button.remove_poll": "Remove poll",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "refresh": "Refresh",
+ "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "now",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
+ "reply_indicator.cancel": "Cancel",
+ "report.forward": "Forward to {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Report {target}",
+ "search.placeholder": "Search",
+ "search_popout.search_format": "Advanced search format",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "user",
+ "search_results.accounts": "People",
+ "search_results.hashtags": "Hashtags",
+ "search_results.statuses": "Toots",
+ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.admin_account": "Open moderation interface for @{name}",
+ "status.admin_status": "Open this status in the moderation interface",
+ "status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
+ "status.cancel_reblog_private": "Unboost",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.copy": "Copy link to status",
+ "status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Direct message @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Favourite",
+ "status.filtered": "Filtered",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mention @{name}",
+ "status.more": "More",
+ "status.mute": "Mute @{name}",
+ "status.mute_conversation": "Mute conversation",
+ "status.open": "Expand this status",
+ "status.pin": "Pin on profile",
+ "status.pinned": "Pinned toot",
+ "status.read_more": "Read more",
+ "status.reblog": "Boost",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
+ "status.reply": "Reply",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_warning": "Sensitive content",
+ "status.share": "Share",
+ "status.show_less": "Show less",
+ "status.show_less_all": "Show less for all",
+ "status.show_more": "Show more",
+ "status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
+ "status.uncached_media_warning": "Not available",
+ "status.unmute_conversation": "Unmute conversation",
+ "status.unpin": "Unpin from profile",
+ "suggestions.dismiss": "Dismiss suggestion",
+ "suggestions.header": "You might be interested in…",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Home",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "tabs_bar.search": "Search",
+ "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+ "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+ "time_remaining.moments": "Moments remaining",
+ "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "trends.trending_now": "Trending now",
+ "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Add images, a video or an audio file",
+ "upload_error.limit": "File upload limit exceeded.",
+ "upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
+ "upload_form.description": "Describe for the visually impaired",
+ "upload_form.edit": "Edit",
+ "upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+ "upload_modal.analyzing_picture": "Analyzing picture…",
+ "upload_modal.apply": "Apply",
+ "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+ "upload_modal.detect_text": "Detect text from picture",
+ "upload_modal.edit_media": "Edit media",
+ "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_progress.label": "Uploading…",
+ "video.close": "Close video",
+ "video.download": "Download file",
+ "video.exit_fullscreen": "Exit full screen",
+ "video.expand": "Expand video",
+ "video.fullscreen": "Full screen",
+ "video.hide": "Hide video",
+ "video.mute": "Mute sound",
+ "video.pause": "Pause",
+ "video.play": "Play",
+ "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
new file mode 100644
index 000000000..5aaa6b314
--- /dev/null
+++ b/app/javascript/mastodon/locales/mr.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "यादीत घाला किंवा यादीतून काढून टाका",
+ "account.badges.bot": "स्वयंचलित खाते",
+ "account.badges.group": "Group",
+ "account.block": "@{name} यांना ब्लॉक करा",
+ "account.block_domain": "{domain} पासून सर्व लपवा",
+ "account.blocked": "ब्लॉक केले आहे",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "अनुयायी होण्याची विनंती रद्द करा",
+ "account.direct": "थेट संदेश @{name}",
+ "account.domain_blocked": "Domain hidden",
+ "account.edit_profile": "प्रोफाइल एडिट करा",
+ "account.endorse": "Feature on profile",
+ "account.follow": "अनुयायी व्हा",
+ "account.followers": "अनुयायी",
+ "account.followers.empty": "ह्या वापरकर्त्याचा आतापर्यंत कोणी अनुयायी नाही.",
+ "account.follows": "अनुयायी आहे",
+ "account.follows.empty": "हा वापरकर्ता अजूनपर्यंत कोणाचा अनुयायी नाही.",
+ "account.follows_you": "तुमचा अनुयायी आहे",
+ "account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा",
+ "account.last_status": "शेवटचे सक्रिय",
+ "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.media": "दृक्श्राव्य मजकूर",
+ "account.mention": "@{name} चा उल्लेख करा",
+ "account.moved_to": "{name} आता आहे:",
+ "account.mute": "@{name} ला मूक कारा",
+ "account.mute_notifications": "Mute notifications from @{name}",
+ "account.muted": "Muted",
+ "account.never_active": "Never",
+ "account.posts": "Toots",
+ "account.posts_with_replies": "Toots and replies",
+ "account.report": "Report @{name}",
+ "account.requested": "Awaiting approval",
+ "account.share": "Share @{name}'s profile",
+ "account.show_reblogs": "{name}चे सर्व बुस्ट्स दाखवा",
+ "account.unblock": "@{name} ला ब्लॉक करा",
+ "account.unblock_domain": "उघड करा {domain}",
+ "account.unendorse": "Don't feature on profile",
+ "account.unfollow": "अनुयायी असणे थांबवा",
+ "account.unmute": "Unmute @{name}",
+ "account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Rate limited",
+ "alert.unexpected.message": "An unexpected error occurred.",
+ "alert.unexpected.title": "अरेरे!",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "{count} प्रतिसप्ताह",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "bundle_column_error.body": "हा घटक लोड करतांना काहीतरी चुकले आहे.",
+ "bundle_column_error.retry": "पुन्हा प्रयत्न करा",
+ "bundle_column_error.title": "नेटवर्क त्रुटी",
+ "bundle_modal_error.close": "बंद करा",
+ "bundle_modal_error.message": "हा घटक लोड करतांना काहीतरी चुकले आहे.",
+ "bundle_modal_error.retry": "पुन्हा प्रयत्न करा",
+ "column.blocks": "ब्लॉक केलेले खातेधारक",
+ "column.bookmarks": "Bookmarks",
+ "column.community": "Local timeline",
+ "column.direct": "थेट संदेश",
+ "column.directory": "Browse profiles",
+ "column.domain_blocks": "गुप्त डोमेन्स",
+ "column.favourites": "आवडते",
+ "column.follow_requests": "अनुचरण विनंत्या",
+ "column.home": "मुख्यपृष्ठ",
+ "column.lists": "याद्या",
+ "column.mutes": "नि: शब्द खातेधारक",
+ "column.notifications": "सूचना",
+ "column.pins": "Pinned toot",
+ "column.public": "Federated timeline",
+ "column_back_button.label": "मागे",
+ "column_header.hide_settings": "सेटिंग लपवा",
+ "column_header.moveLeft_settings": "स्तंभ डावीकडे सरकवा",
+ "column_header.moveRight_settings": "स्तंभ उजवीकडे सरकवा",
+ "column_header.pin": "टाचण",
+ "column_header.show_settings": "सेटिंग्स दाखवा",
+ "column_header.unpin": "अनपिन करा",
+ "column_subheading.settings": "सेटिंग्ज",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "केवळ मीडिया",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+ "compose_form.direct_message_warning_learn_more": "अधिक जाणून घ्या",
+ "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "आपल्या मनात काय आहे?",
+ "compose_form.poll.add_option": "नवीन पर्याय",
+ "compose_form.poll.duration": "Poll duration",
+ "compose_form.poll.option_placeholder": "निवड {number}",
+ "compose_form.poll.remove_option": "हा पर्याय काढा",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "Toot",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.marked": "Media is marked as sensitive",
+ "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.spoiler.marked": "Text is hidden behind warning",
+ "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler_placeholder": "Write your warning here",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "हटवा",
+ "confirmations.delete.message": "हे स्टेटस तुम्हाला नक्की हटवायचंय?",
+ "confirmations.delete_list.confirm": "हटवा",
+ "confirmations.delete_list.message": "ही यादी तुम्हाला नक्की कायमची हटवायचीय?",
+ "confirmations.domain_block.confirm": "संपूर्ण डोमेन लपवा",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.logout.confirm": "Log out",
+ "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+ "confirmations.reply.confirm": "Reply",
+ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.unfollow.confirm": "Unfollow",
+ "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "conversation.delete": "Delete conversation",
+ "conversation.mark_as_read": "Mark as read",
+ "conversation.open": "View conversation",
+ "conversation.with": "With {names}",
+ "directory.federated": "From known fediverse",
+ "directory.local": "From {domain} only",
+ "directory.new_arrivals": "New arrivals",
+ "directory.recently_active": "Recently active",
+ "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.preview": "Here is what it will look like:",
+ "emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
+ "emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
+ "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
+ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "errors.unexpected_crash.report_issue": "Report issue",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "Developers",
+ "getting_started.directory": "Profile directory",
+ "getting_started.documentation": "Documentation",
+ "getting_started.heading": "Getting started",
+ "getting_started.invite": "Invite people",
+ "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+ "getting_started.security": "Security",
+ "getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.select.no_options_message": "No suggestions found",
+ "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
+ "intervals.full.days": "{number, plural, one {# day} other {# days}}",
+ "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "introduction.federation.action": "Next",
+ "introduction.federation.federated.headline": "Federated",
+ "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+ "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+ "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "introduction.interactions.action": "Finish toot-orial!",
+ "introduction.interactions.favourite.headline": "Favourite",
+ "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.reply.headline": "Reply",
+ "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+ "introduction.welcome.action": "Let's go!",
+ "introduction.welcome.headline": "First steps",
+ "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "to move down in the list",
+ "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "to move up in the list",
+ "lightbox.close": "Close",
+ "lightbox.next": "Next",
+ "lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "Add to list",
+ "lists.account.remove": "Remove from list",
+ "lists.delete": "Delete list",
+ "lists.edit": "Edit list",
+ "lists.edit.submit": "Change title",
+ "lists.new.create": "Add list",
+ "lists.new.title_placeholder": "New list title",
+ "lists.search": "Search among people you follow",
+ "lists.subheading": "Your lists",
+ "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "loading_indicator.label": "Loading...",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
+ "missing_indicator.label": "Not found",
+ "missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Direct messages",
+ "navigation_bar.discover": "Discover",
+ "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.edit_profile": "Edit profile",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.filters": "Muted words",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.info": "About this server",
+ "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "navigation_bar.lists": "Lists",
+ "navigation_bar.logout": "Logout",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.preferences": "Preferences",
+ "navigation_bar.public_timeline": "Federated timeline",
+ "navigation_bar.security": "Security",
+ "notification.favourite": "{name} favourited your status",
+ "notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
+ "notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
+ "notification.poll": "A poll you have voted in has ended",
+ "notification.reblog": "{name} boosted your status",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.filter_bar.advanced": "Display all categories",
+ "notifications.column_settings.filter_bar.category": "Quick filter bar",
+ "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.filter.all": "All",
+ "notifications.filter.boosts": "Boosts",
+ "notifications.filter.favourites": "Favourites",
+ "notifications.filter.follows": "Follows",
+ "notifications.filter.mentions": "Mentions",
+ "notifications.filter.polls": "Poll results",
+ "notifications.group": "{count} notifications",
+ "poll.closed": "Closed",
+ "poll.refresh": "Refresh",
+ "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.vote": "Vote",
+ "poll.voted": "You voted for this answer",
+ "poll_button.add_poll": "Add a poll",
+ "poll_button.remove_poll": "Remove poll",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "refresh": "Refresh",
+ "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "now",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
+ "reply_indicator.cancel": "Cancel",
+ "report.forward": "Forward to {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Report {target}",
+ "search.placeholder": "Search",
+ "search_popout.search_format": "Advanced search format",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "user",
+ "search_results.accounts": "People",
+ "search_results.hashtags": "Hashtags",
+ "search_results.statuses": "Toots",
+ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.admin_account": "Open moderation interface for @{name}",
+ "status.admin_status": "Open this status in the moderation interface",
+ "status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
+ "status.cancel_reblog_private": "Unboost",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.copy": "Copy link to status",
+ "status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Direct message @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Favourite",
+ "status.filtered": "Filtered",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mention @{name}",
+ "status.more": "More",
+ "status.mute": "Mute @{name}",
+ "status.mute_conversation": "Mute conversation",
+ "status.open": "Expand this status",
+ "status.pin": "Pin on profile",
+ "status.pinned": "Pinned toot",
+ "status.read_more": "Read more",
+ "status.reblog": "Boost",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
+ "status.reply": "Reply",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_warning": "Sensitive content",
+ "status.share": "Share",
+ "status.show_less": "Show less",
+ "status.show_less_all": "Show less for all",
+ "status.show_more": "Show more",
+ "status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
+ "status.uncached_media_warning": "Not available",
+ "status.unmute_conversation": "Unmute conversation",
+ "status.unpin": "Unpin from profile",
+ "suggestions.dismiss": "Dismiss suggestion",
+ "suggestions.header": "You might be interested in…",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Home",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "tabs_bar.search": "Search",
+ "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+ "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+ "time_remaining.moments": "Moments remaining",
+ "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "trends.trending_now": "Trending now",
+ "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Add images, a video or an audio file",
+ "upload_error.limit": "File upload limit exceeded.",
+ "upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
+ "upload_form.description": "Describe for the visually impaired",
+ "upload_form.edit": "Edit",
+ "upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+ "upload_modal.analyzing_picture": "Analyzing picture…",
+ "upload_modal.apply": "Apply",
+ "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+ "upload_modal.detect_text": "Detect text from picture",
+ "upload_modal.edit_media": "Edit media",
+ "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_progress.label": "Uploading…",
+ "video.close": "Close video",
+ "video.download": "Download file",
+ "video.exit_fullscreen": "Exit full screen",
+ "video.expand": "Expand video",
+ "video.fullscreen": "Full screen",
+ "video.hide": "Hide video",
+ "video.mute": "Mute sound",
+ "video.pause": "Pause",
+ "video.play": "Play",
+ "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index 6881d3be3..fb49cd140 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
+ "account.badges.group": "Group",
"account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct message @{name}",
"account.domain_blocked": "Domain hidden",
@@ -38,10 +42,15 @@
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Blocked users",
+ "column.bookmarks": "Bookmarks",
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.settings": "Settings",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -245,12 +265,13 @@
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
@@ -322,6 +346,7 @@
"relative_time.just_now": "now",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Cancel",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
@@ -393,16 +420,22 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
+ "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Edit",
"upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"video.close": "Close video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 68b8f4cbd..465171222 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -1,11 +1,15 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Toevoegen of verwijderen vanuit lijsten",
"account.badges.bot": "Bot",
- "account.block": "Blokkeer @{name}",
- "account.block_domain": "Verberg alles van {domain}",
+ "account.badges.group": "Groep",
+ "account.block": "@{name} blokkeren",
+ "account.block_domain": "Alles van {domain} verbergen",
"account.blocked": "Geblokkeerd",
+ "account.browse_more_on_origin_server": "Blader door het originele profiel",
"account.cancel_follow_request": "Volgverzoek annuleren",
- "account.direct": "Direct Message @{name}",
+ "account.direct": "@{name} een direct bericht sturen",
"account.domain_blocked": "Domein verborgen",
"account.edit_profile": "Profiel bewerken",
"account.endorse": "Op profiel weergeven",
@@ -20,28 +24,33 @@
"account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}",
"account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie hen kan volgen.",
"account.media": "Media",
- "account.mention": "Vermeld @{name}",
+ "account.mention": "@{name} vermelden",
"account.moved_to": "{name} is verhuisd naar:",
- "account.mute": "Negeer @{name}",
- "account.mute_notifications": "Negeer meldingen van @{name}",
+ "account.mute": "@{name} negeren",
+ "account.mute_notifications": "Meldingen van @{name} negeren",
"account.muted": "Genegeerd",
"account.never_active": "Nooit",
"account.posts": "Toots",
"account.posts_with_replies": "Toots en reacties",
- "account.report": "Rapporteer @{name}",
+ "account.report": "@{name} rapporteren",
"account.requested": "Wacht op goedkeuring. Klik om het volgverzoek te annuleren",
"account.share": "Profiel van @{name} delen",
"account.show_reblogs": "Toon boosts van @{name}",
- "account.unblock": "Deblokkeer @{name}",
+ "account.unblock": "@{name} deblokkeren",
"account.unblock_domain": "{domain} niet langer verbergen",
"account.unendorse": "Niet op profiel weergeven",
"account.unfollow": "Ontvolgen",
"account.unmute": "@{name} niet langer negeren",
"account.unmute_notifications": "@{name} meldingen niet langer negeren",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Probeer het nog een keer na {retry_time, time, medium}.",
"alert.rate_limited.title": "Beperkt te gebruiken",
"alert.unexpected.message": "Er deed zich een onverwachte fout voor",
"alert.unexpected.title": "Oeps!",
+ "announcement.announcement": "Mededeling",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan",
"bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.",
"bundle_modal_error.retry": "Opnieuw proberen",
"column.blocks": "Geblokkeerde gebruikers",
+ "column.bookmarks": "Bladwijzers",
"column.community": "Lokale tijdlijn",
"column.direct": "Directe berichten",
"column.directory": "Gebruikersgids",
@@ -71,8 +81,10 @@
"column_header.show_settings": "Instellingen tonen",
"column_header.unpin": "Losmaken",
"column_subheading.settings": "Instellingen",
+ "community.column_settings.local_only": "Alleen lokaal",
"community.column_settings.media_only": "Alleen media",
- "compose_form.direct_message_warning": "Deze toot wordt alleen naar vermelde gebruikers verstuurd. Echter, de beheerders en moderatoren van jouw en de ontvangende Mastodonserver(s) kunnen dit bericht mogelijk wel bekijken.",
+ "community.column_settings.remote_only": "Alleen op afstand",
+ "compose_form.direct_message_warning": "Deze toot wordt alleen naar vermelde gebruikers verstuurd. Echter, de beheerders en moderatoren van jouw en de ontvangende server(s) kunnen dit bericht mogelijk wel bekijken.",
"compose_form.direct_message_warning_learn_more": "Meer leren",
"compose_form.hashtag_warning": "Deze toot valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare toots kunnen via hashtags gevonden worden.",
"compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de toots zien die je alleen aan jouw volgers hebt gericht.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Duur van de poll",
"compose_form.poll.option_placeholder": "Keuze {number}",
"compose_form.poll.remove_option": "Deze keuze verwijderen",
+ "compose_form.poll.switch_to_multiple": "Poll wijzigen om meerdere keuzes toe te staan",
+ "compose_form.poll.switch_to_single": "Poll wijzigen om een enkele keuze toe te staan",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Media als gevoelig markeren",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "Uitloggen",
"confirmations.logout.message": "Weet je zeker dat je wilt uitloggen?",
"confirmations.mute.confirm": "Negeren",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Dit verbergt toots van hen en toots waar hen in wordt vermeld, maar hen kan nog steeds jouw toots bekijken en jou volgen.",
"confirmations.mute.message": "Weet je het zeker dat je {name} wilt negeren?",
"confirmations.redraft.confirm": "Verwijderen en herschrijven",
"confirmations.redraft.message": "Weet je zeker dat je deze toot wilt verwijderen en herschrijven? Je verliest wel de boosts en favorieten, en reacties op de originele toot zitten niet meer aan de nieuwe toot vast.",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Hier zijn geen toots!",
"empty_column.account_unavailable": "Profiel is niet beschikbaar",
"empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.",
+ "empty_column.bookmarked_statuses": "Jij hebt nog geen toots aan je bladwijzers toegevoegd. Wanneer je er een aan jouw bladwijzers toevoegt, valt deze hier te zien.",
"empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
"empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, zijn deze hier te zien.",
"empty_column.domain_blocks": "Er zijn nog geen genegeerde servers.",
@@ -152,19 +167,20 @@
"empty_column.mutes": "Jij hebt nog geen gebruikers genegeerd.",
"empty_column.notifications": "Je hebt nog geen meldingen. Begin met iemand een gesprek.",
"empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere servers om het te vullen",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "error.unexpected_crash.explanation": "Als gevolg van een bug in onze broncode of als gevolg van een compatibiliteitsprobleem met jouw webbrowser, kan deze pagina niet goed worden weergegeven.",
+ "error.unexpected_crash.next_steps": "Probeer deze pagina te vernieuwen. Wanneer dit niet helpt is het nog steeds mogelijk om Mastodon in een andere webbrowser of mobiele app te gebruiken.",
"errors.unexpected_crash.copy_stacktrace": "Stacktrace naar klembord kopiëren",
"errors.unexpected_crash.report_issue": "Technisch probleem melden",
"follow_request.authorize": "Goedkeuren",
"follow_request.reject": "Afkeuren",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Ontwikkelaars",
"getting_started.directory": "Gebruikersgids",
"getting_started.documentation": "Documentatie",
"getting_started.heading": "Aan de slag",
"getting_started.invite": "Mensen uitnodigen",
"getting_started.open_source_notice": "Mastodon is vrije software. Je kunt bijdragen of problemen melden op GitHub via {github}.",
- "getting_started.security": "Beveiliging",
+ "getting_started.security": "Accountinstellingen",
"getting_started.terms": "Voorwaarden",
"hashtag.column_header.tag_mode.all": "en {additional}",
"hashtag.column_header.tag_mode.any": "of {additional}",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Algemeen",
"home.column_settings.show_reblogs": "Boosts tonen",
"home.column_settings.show_replies": "Reacties tonen",
+ "home.hide_announcements": "Mededelingen verbergen",
+ "home.show_announcements": "Mededelingen tonen",
"intervals.full.days": "{number, plural, one {# dag} other {# dagen}}",
"intervals.full.hours": "{number, plural, one {# uur} other {# uur}}",
"intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}",
@@ -206,7 +224,7 @@
"keyboard_shortcuts.description": "Omschrijving",
"keyboard_shortcuts.direct": "om jouw directe berichten te tonen",
"keyboard_shortcuts.down": "om naar beneden door de lijst te bewegen",
- "keyboard_shortcuts.enter": "om toot volledig te tonen",
+ "keyboard_shortcuts.enter": "om uitgebreide toot te tonen",
"keyboard_shortcuts.favourite": "om aan jouw favorieten toe te voegen",
"keyboard_shortcuts.favourites": "om jouw lijst met favorieten te tonen",
"keyboard_shortcuts.federated": "om de globale tijdlijn te tonen",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "om de door jou genegeerde gebruikers te tonen",
"keyboard_shortcuts.my_profile": "om jouw profiel te tonen",
"keyboard_shortcuts.notifications": "om jouw meldingen te tonen",
+ "keyboard_shortcuts.open_media": "om media te openen",
"keyboard_shortcuts.pinned": "om jouw vastgezette toots te tonen",
"keyboard_shortcuts.profile": "om het gebruikersprofiel te openen",
"keyboard_shortcuts.reply": "om te reageren",
"keyboard_shortcuts.requests": "om jouw volgverzoeken te tonen",
"keyboard_shortcuts.search": "om het zoekvak te focussen",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "om de \"Aan de slag\"-kolom te tonen",
"keyboard_shortcuts.toggle_hidden": "om tekst achter een waarschuwing (CW) te tonen/verbergen",
"keyboard_shortcuts.toggle_sensitivity": "om media te tonen/verbergen",
@@ -245,12 +265,13 @@
"lists.subheading": "Jouw lijsten",
"load_pending": "{count, plural, one {# nieuw item} other {# nieuwe items}}",
"loading_indicator.label": "Laden…",
- "media_gallery.toggle_visible": "Media wel/niet tonen",
+ "media_gallery.toggle_visible": "Media verbergen",
"missing_indicator.label": "Niet gevonden",
"missing_indicator.sublabel": "Deze hulpbron kan niet gevonden worden",
"mute_modal.hide_notifications": "Verberg meldingen van deze persoon?",
"navigation_bar.apps": "Mobiele apps",
"navigation_bar.blocks": "Geblokkeerde gebruikers",
+ "navigation_bar.bookmarks": "Bladwijzers",
"navigation_bar.community_timeline": "Lokale tijdlijn",
"navigation_bar.compose": "Nieuw toot schrijven",
"navigation_bar.direct": "Directe berichten",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Beveiliging",
"notification.favourite": "{name} voegde jouw toot als favoriet toe",
"notification.follow": "{name} volgt jou nu",
+ "notification.follow_request": "{name} wil jou graag volgen",
"notification.mention": "{name} vermeldde jou",
+ "notification.own_poll": "Jouw poll is beëindigd",
"notification.poll": "Een poll waaraan jij hebt meegedaan is beëindigd",
"notification.reblog": "{name} boostte jouw toot",
"notifications.clear": "Meldingen verwijderen",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Snelle filterbalk",
"notifications.column_settings.filter_bar.show": "Tonen",
"notifications.column_settings.follow": "Nieuwe volgers:",
+ "notifications.column_settings.follow_request": "Nieuw volgverzoek:",
"notifications.column_settings.mention": "Vermeldingen:",
"notifications.column_settings.poll": "Pollresultaten:",
"notifications.column_settings.push": "Pushmeldingen",
@@ -310,9 +334,9 @@
"privacy.direct.short": "Direct",
"privacy.private.long": "Alleen aan volgers tonen",
"privacy.private.short": "Alleen volgers",
- "privacy.public.long": "Op openbare tijdlijnen tonen",
+ "privacy.public.long": "Voor iedereen zichtbaar en op openbare tijdlijnen tonen",
"privacy.public.short": "Openbaar",
- "privacy.unlisted.long": "Niet op openbare tijdlijnen tonen",
+ "privacy.unlisted.long": "Voor iedereen zichtbaar, maar niet op openbare tijdlijnen tonen",
"privacy.unlisted.short": "Minder openbaar",
"refresh": "Vernieuwen",
"regeneration_indicator.label": "Aan het laden…",
@@ -322,10 +346,11 @@
"relative_time.just_now": "nu",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "vandaag",
"reply_indicator.cancel": "Annuleren",
"report.forward": "Doorsturen naar {target}",
"report.forward_hint": "Het account bevindt zich op een andere server. Stuur daar eveneens een geanonimiseerde kopie van de rapportage naartoe?",
- "report.hint": "De rapportage wordt naar de moderatoren van jouw server gestuurd. Je kunt hieronder een uitleg geven waarom je dit account rapporteert:",
+ "report.hint": "De rapportage wordt naar de moderator(en) van jouw server gestuurd. Je kunt hieronder een uitleg geven waarom je dit account rapporteert:",
"report.placeholder": "Extra opmerkingen",
"report.submit": "Verzenden",
"report.target": "Rapporteer {target}",
@@ -343,23 +368,24 @@
"search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}",
"status.admin_account": "Moderatie-omgeving van @{name} openen",
"status.admin_status": "Deze toot in de moderatie-omgeving openen",
- "status.block": "Blokkeer @{name}",
+ "status.block": "@{name} blokkeren",
+ "status.bookmark": "Bladwijzer toevoegen",
"status.cancel_reblog_private": "Niet langer boosten",
"status.cannot_reblog": "Deze toot kan niet geboost worden",
"status.copy": "Link naar toot kopiëren",
"status.delete": "Verwijderen",
"status.detailed_status": "Uitgebreide gespreksweergave",
- "status.direct": "Directe toot @{name}",
+ "status.direct": "@{name} een direct bericht sturen",
"status.embed": "Insluiten",
"status.favourite": "Favoriet",
"status.filtered": "Gefilterd",
"status.load_more": "Meer laden",
"status.media_hidden": "Media verborgen",
- "status.mention": "Vermeld @{name}",
+ "status.mention": "@{name} vermelden",
"status.more": "Meer",
- "status.mute": "Negeer @{name}",
+ "status.mute": "@{name} negeren",
"status.mute_conversation": "Negeer gesprek",
- "status.open": "Toot volledig tonen",
+ "status.open": "Uitgebreide toot tonen",
"status.pin": "Aan profielpagina vastmaken",
"status.pinned": "Vastgemaakte toot",
"status.read_more": "Meer lezen",
@@ -368,9 +394,10 @@
"status.reblogged_by": "{name} boostte",
"status.reblogs.empty": "Niemand heeft deze toot nog geboost. Wanneer iemand dit doet, valt dat hier te zien.",
"status.redraft": "Verwijderen en herschrijven",
+ "status.remove_bookmark": "Bladwijzer verwijderen",
"status.reply": "Reageren",
"status.replyAll": "Reageer op iedereen",
- "status.report": "Rapporteer @{name}",
+ "status.report": "@{name} rapporteren",
"status.sensitive_warning": "Gevoelige inhoud",
"status.share": "Delen",
"status.show_less": "Minder tonen",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minuut} other {# minuten}} te gaan",
"time_remaining.moments": "Nog enkele ogenblikken resterend",
"time_remaining.seconds": "{number, plural, one {# seconde} other {# seconden}} te gaan",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {persoon praat} other {mensen praten}} hierover",
"trends.trending_now": "Trends",
"ui.beforeunload": "Je concept zal verloren gaan als je Mastodon verlaat.",
@@ -400,9 +431,11 @@
"upload_button.label": "Media toevoegen ({formats})",
"upload_error.limit": "Uploadlimiet van bestand overschreden.",
"upload_error.poll": "Het uploaden van bestanden is in polls niet toegestaan.",
+ "upload_form.audio_description": "Omschrijf dit voor mensen met een auditieve beperking",
"upload_form.description": "Omschrijf dit voor mensen met een visuele beperking",
"upload_form.edit": "Bewerken",
"upload_form.undo": "Verwijderen",
+ "upload_form.video_description": "Omschrijf dit voor mensen met een auditieve of visuele beperking",
"upload_modal.analyzing_picture": "Afbeelding analyseren…",
"upload_modal.apply": "Toepassen",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Voorvertoning ({ratio})",
"upload_progress.label": "Uploaden...",
"video.close": "Video sluiten",
+ "video.download": "Bestand downloaden",
"video.exit_fullscreen": "Volledig scherm sluiten",
"video.expand": "Video groter maken",
"video.fullscreen": "Volledig scherm",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 73a319179..26c337aab 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -1,423 +1,457 @@
{
- "account.add_or_remove_from_list": "Legg til eller ta vekk fra liste",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Legg til eller tak vekk frå listene",
"account.badges.bot": "Robot",
- "account.block": "Blokkér @{name}",
- "account.block_domain": "Gøyme alt innhald for domenet {domain}",
+ "account.badges.group": "Gruppe",
+ "account.block": "Blokker @{name}",
+ "account.block_domain": "Skjul alt frå {domain}",
"account.blocked": "Blokkert",
- "account.cancel_follow_request": "Avslutt føljar-førespurnad",
- "account.direct": "Direkte meld @{name}",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Fjern fylgjeførespurnad",
+ "account.direct": "Send melding til @{name}",
"account.domain_blocked": "Domenet er gøymt",
"account.edit_profile": "Rediger profil",
- "account.endorse": "Framhev på profilen din",
- "account.follow": "Følj",
- "account.followers": "Føljare",
- "account.followers.empty": "Er ikkje nokon som føljar denne brukaren ennå.",
- "account.follows": "Føljingar",
- "account.follows.empty": "Denne brukaren foljer ikkje nokon ennå.",
- "account.follows_you": "Føljar deg",
- "account.hide_reblogs": "Gøym fremhevingar for @{name}",
+ "account.endorse": "Framhev på profil",
+ "account.follow": "Fylg",
+ "account.followers": "Fylgjarar",
+ "account.followers.empty": "Ingen fylgjer denne brukaren enno.",
+ "account.follows": "Fylgjer",
+ "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.",
+ "account.follows_you": "Fylgjer deg",
+ "account.hide_reblogs": "Gøym fremhevingar frå @{name}",
"account.last_status": "Sist aktiv",
- "account.link_verified_on": "Eigerskap for denne linken er sist sjekket den {date}",
- "account.locked_info": "Brukarens privat-status er satt til lukka. Eigaren må manuelt døme kvem som kan følje honom.",
+ "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}",
+ "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.",
"account.media": "Media",
- "account.mention": "Nemne @{name}",
+ "account.mention": "Nemn @{name}",
"account.moved_to": "{name} har flytta til:",
"account.mute": "Målbind @{name}",
- "account.mute_notifications": "Målbind varslingar ifrå @{name}",
- "account.muted": "Målbindt",
+ "account.mute_notifications": "Målbind varsel frå @{name}",
+ "account.muted": "Målbunden",
"account.never_active": "Aldri",
- "account.posts": "Tutar",
- "account.posts_with_replies": "Tutar og svar",
+ "account.posts": "Tut",
+ "account.posts_with_replies": "Tut og svar",
"account.report": "Rapporter @{name}",
- "account.requested": "Venter på samtykke. Klikk for å avbryte føljar-førespurnad",
+ "account.requested": "Ventar på samtykke. Klikk for å avbryta fylgjeførespurnaden",
"account.share": "Del @{name} sin profil",
- "account.show_reblogs": "Sjå framhevingar ifrå @{name}",
- "account.unblock": "Avblokker @{name}",
+ "account.show_reblogs": "Vis framhevingar frå @{name}",
+ "account.unblock": "Slutt å blokera @{name}",
"account.unblock_domain": "Vis {domain}",
"account.unendorse": "Ikkje framhev på profil",
- "account.unfollow": "Avfølja",
+ "account.unfollow": "Slutt å fylgja",
"account.unmute": "Av-demp @{name}",
- "account.unmute_notifications": "Av-demp notifikasjoner ifrå @{name}",
- "alert.rate_limited.message": "Ver vennlig og prøv igjen {retry_time, time, medium}.",
- "alert.rate_limited.title": "Bregrensa rate",
- "alert.unexpected.message": "Eit uforventa problem har hendt.",
- "alert.unexpected.title": "Oops!",
+ "account.unmute_notifications": "Vis varsel frå @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Begrensa rate",
+ "alert.unexpected.message": "Eit uventa problem oppstod.",
+ "alert.unexpected.title": "Oi sann!",
+ "announcement.announcement": "Kunngjering",
"autosuggest_hashtag.per_week": "{count} per veke",
- "boost_modal.combo": "Du kan trykke {combo} for å hoppe over dette neste gong",
- "bundle_column_error.body": "Noko gikk gale mens komponent ble nedlasta.",
+ "boost_modal.combo": "Du kan trykkja {combo} for å hoppa over dette neste gong",
+ "bundle_column_error.body": "Noko gjekk gale mens denne komponenten vart lasta ned.",
"bundle_column_error.retry": "Prøv igjen",
- "bundle_column_error.title": "Tenarmaskin feil",
+ "bundle_column_error.title": "Nettverksfeil",
"bundle_modal_error.close": "Lukk",
- "bundle_modal_error.message": "Noko gikk gale mens komponent var i ferd med å bli nedlasta.",
+ "bundle_modal_error.message": "Noko gjekk gale under lastinga av denne komponenten.",
"bundle_modal_error.retry": "Prøv igjen",
- "column.blocks": "Blokka brukare",
- "column.community": "Lokal samtid",
- "column.direct": "Direkte meldingar",
- "column.directory": "Sjå gjennom profiler",
- "column.domain_blocks": "Gøymte domener",
+ "column.blocks": "Blokkerte brukarar",
+ "column.bookmarks": "Bokmerke",
+ "column.community": "Lokal tidsline",
+ "column.direct": "Meldingar",
+ "column.directory": "Sjå gjennom profilar",
+ "column.domain_blocks": "Gøymde domene",
"column.favourites": "Favorittar",
- "column.follow_requests": "Føljarførespurnad",
+ "column.follow_requests": "Fylgjeførespurnadar",
"column.home": "Heim",
"column.lists": "Lister",
- "column.mutes": "Målbindte brukare",
- "column.notifications": "Varslingar",
- "column.pins": "Festa tuter",
- "column.public": "Federert samtid",
+ "column.mutes": "Målbundne brukarar",
+ "column.notifications": "Varsel",
+ "column.pins": "Festa tut",
+ "column.public": "Samla tidsline",
"column_back_button.label": "Tilbake",
- "column_header.hide_settings": "Skjul innstillingar",
- "column_header.moveLeft_settings": "Flytt feltet til venstre",
- "column_header.moveRight_settings": "Flytt feltet til høgre",
+ "column_header.hide_settings": "Gøym innstillingar",
+ "column_header.moveLeft_settings": "Flytt kolonne til venstre",
+ "column_header.moveRight_settings": "Flytt kolonne til høgre",
"column_header.pin": "Fest",
"column_header.show_settings": "Vis innstillingar",
"column_header.unpin": "Løys",
"column_subheading.settings": "Innstillingar",
- "community.column_settings.media_only": "Kun medie",
- "compose_form.direct_message_warning": "Denne tuten vil kun verte synleg for nemnde brukarar.",
+ "community.column_settings.local_only": "Kun lokalt",
+ "community.column_settings.media_only": "Berre media",
+ "community.column_settings.remote_only": "Kun eksternt",
+ "compose_form.direct_message_warning": "Dette tutet vert berre synleg for nemnde brukarar.",
"compose_form.direct_message_warning_learn_more": "Lær meir",
- "compose_form.hashtag_warning": "Denne tuten vill ikkje bli lista under nokon knagg ettersom den ikkje er opplista. Berre offentlege tutar kan ble søkt på ved emneknagg.",
- "compose_form.lock_disclaimer": "Din brukar er ikkje {locked}. Alle kan følje deg for å sjå føljar-modus poster.",
+ "compose_form.hashtag_warning": "Dette tutet vert ikkje oppført under nokon emneknagg sidan det ikkje er oppført. Berre offentlege tut kan verta søkt etter med emneknagg.",
+ "compose_form.lock_disclaimer": "Kontoen din er ikkje {locked}. Kven som helst kan fylgja deg for å sjå innlegga dine som berre visast til fylgjarar.",
"compose_form.lock_disclaimer.lock": "låst",
- "compose_form.placeholder": "Kva har du på hjartet?",
- "compose_form.poll.add_option": "Legg til eit punkt",
- "compose_form.poll.duration": "Varigheit for spørring",
+ "compose_form.placeholder": "Kva har du på hjarta?",
+ "compose_form.poll.add_option": "Legg til eit val",
+ "compose_form.poll.duration": "Varigskap for røysting",
"compose_form.poll.option_placeholder": "Val {number}",
- "compose_form.poll.remove_option": "Ta burt dette valet",
+ "compose_form.poll.remove_option": "Ta vekk dette valet",
+ "compose_form.poll.switch_to_multiple": "Endre avstemninga til å tillate fleirval",
+ "compose_form.poll.switch_to_single": "Endra avstemninga til tillate berre eitt val",
"compose_form.publish": "Tut",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Merk media som sensitivt",
- "compose_form.sensitive.marked": "Media er markert som sensitivt",
- "compose_form.sensitive.unmarked": "Media er ikkje merka som sensitivt",
- "compose_form.spoiler.marked": "Tekst er gøymt bak ein advarsel",
- "compose_form.spoiler.unmarked": "Tekst er ikkje gøymt",
- "compose_form.spoiler_placeholder": "Skriv varselen din her",
- "confirmation_modal.cancel": "Avbrot",
- "confirmations.block.block_and_report": "Blokk & rapportér",
- "confirmations.block.confirm": "Blokkér",
- "confirmations.block.message": "Er du sikker på at du vill blokke {name}?",
+ "compose_form.sensitive.hide": "Merk medium som sensitivt",
+ "compose_form.sensitive.marked": "Medium er markert som sensitivt",
+ "compose_form.sensitive.unmarked": "Medium er ikkje merka som sensitivt",
+ "compose_form.spoiler.marked": "Tekst er gøymd bak åtvaring",
+ "compose_form.spoiler.unmarked": "Tekst er ikkje gøymd",
+ "compose_form.spoiler_placeholder": "Skriv åtvaringa di her",
+ "confirmation_modal.cancel": "Avbryt",
+ "confirmations.block.block_and_report": "Blokker & rapporter",
+ "confirmations.block.confirm": "Blokker",
+ "confirmations.block.message": "Er du sikker på at du vil blokkera {name}?",
"confirmations.delete.confirm": "Slett",
- "confirmations.delete.message": "Er du sikker på at du vill slette denne statusen?",
+ "confirmations.delete.message": "Er du sikker på at du vil sletta denne statusen?",
"confirmations.delete_list.confirm": "Slett",
- "confirmations.delete_list.message": "Er du sikker på at du vill slette denne listen for alltid?",
+ "confirmations.delete_list.message": "Er du sikker på at du vil sletta denne lista for alltid?",
"confirmations.domain_block.confirm": "Gøym heile domenet",
- "confirmations.domain_block.message": "Er du ordentleg, ordentleg sikker på at du vill blokkere heile {domain}? I dei tilfeller er det bedre med ein målretta blokkering eller demping av individuelle brukare.",
+ "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil blokkera heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller målbindingar. Du kjem ikkje til å sjå innhald frå det domenet i nokon fødererte tidsliner eller i varsla dine. Fylgjarane dine frå det domenet vert fjerna.",
"confirmations.logout.confirm": "Logg ut",
- "confirmations.logout.message": "Er du sikker på at du vill logge ut?",
+ "confirmations.logout.message": "Er du sikker på at du vil logga ut?",
"confirmations.mute.confirm": "Målbind",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
- "confirmations.mute.message": "Er du sikker på at d vill målbinde {name}?",
- "confirmations.redraft.confirm": "Slett & gjennopprett",
- "confirmations.redraft.message": "Er du sikker på at du vill slette statusen og gjennoprette den? Favoritter og framhevinger vill bli borte, og svar til den originale posten vill bli einstøing.",
+ "confirmations.mute.explanation": "Dette gøymer innlegg frå dei og innlegg som nemner dei, men tillèt dei framleis å sjå dine innlegg og fylgja deg.",
+ "confirmations.mute.message": "Er du sikker på at du vil målbinda {name}?",
+ "confirmations.redraft.confirm": "Slett & skriv på nytt",
+ "confirmations.redraft.message": "Er du sikker på at du vil sletta denne statusen og skriva han på nytt? Då misser du favorittar og framhevingar, og svar til det opphavlege innlegget vert einstøingar.",
"confirmations.reply.confirm": "Svar",
- "confirmations.reply.message": "Å svare nå vill overskrive meldingen du er i ferd med å skrive. Er du sikker på at du vill gå fram?",
- "confirmations.unfollow.confirm": "Avfølj",
- "confirmations.unfollow.message": "Er du sikker på at du vill avfølje {name}?",
+ "confirmations.reply.message": "Å svara no vil overskriva meldinga du skriv no. Er du sikker på at du vil halda fram?",
+ "confirmations.unfollow.confirm": "Slutt å fylgja",
+ "confirmations.unfollow.message": "Er du sikker på at du vil slutta å fylgja {name}?",
"conversation.delete": "Slett samtale",
- "conversation.mark_as_read": "Merk som lest",
+ "conversation.mark_as_read": "Merk som lese",
"conversation.open": "Sjå samtale",
"conversation.with": "Med {names}",
- "directory.federated": "Fra kjent fedivers",
- "directory.local": "Fra berre {domain} domenet",
+ "directory.federated": "Frå kjent fedivers",
+ "directory.local": "Berre frå {domain}",
"directory.new_arrivals": "Nyankommne",
- "directory.recently_active": "Nylig aktiv",
- "embed.instructions": "Embed this status on your website by copying the code below.",
- "embed.preview": "Dette er korleis den vil sjå ut:",
+ "directory.recently_active": "Nyleg aktive",
+ "embed.instructions": "Bygg inn denne statusen på nettsida di ved å kopiera koden under.",
+ "embed.preview": "Slik bid det å sjå ut:",
"emoji_button.activity": "Aktivitet",
- "emoji_button.custom": "Custom",
+ "emoji_button.custom": "Eige",
"emoji_button.flags": "Flagg",
"emoji_button.food": "Mat & drikke",
- "emoji_button.label": "Legg til smilefjes",
+ "emoji_button.label": "Legg til emoji",
"emoji_button.nature": "Natur",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
- "emoji_button.objects": "Objektar",
+ "emoji_button.objects": "Objekt",
"emoji_button.people": "Folk",
"emoji_button.recent": "Ofte brukt",
"emoji_button.search": "Søk...",
- "emoji_button.search_results": "Søke resultater",
- "emoji_button.symbols": "Symbolar",
- "emoji_button.travel": "Reise & steder",
- "empty_column.account_timeline": "Ikkje nokon tutar her!",
+ "emoji_button.search_results": "Søkeresultat",
+ "emoji_button.symbols": "Symbol",
+ "emoji_button.travel": "Reise & stader",
+ "empty_column.account_timeline": "Ingen tut her!",
"empty_column.account_unavailable": "Profil ikkje tilgjengelig",
- "empty_column.blocks": "Du har ikkje blokkért nokon brukarar ennå.",
+ "empty_column.blocks": "Du har ikkje blokkert nokon brukarar enno.",
+ "empty_column.bookmarked_statuses": "Du har ikkje nokon bokmerkte tut enno. Når du bokmerkjer eit, dukkar det opp her.",
"empty_column.community": "Den lokale samtiden er tom. Skriv noko offentleg å få ballen til å rulle!",
- "empty_column.direct": "Du har ikkje nokon direkte meldingar ennå. Når du sendar eller får ein, så vill den ende opp her.",
- "empty_column.domain_blocks": "Der er ikkje nokon gøymte domener enno.",
- "empty_column.favourited_statuses": "Du har ikkje favorisert nokon tutar enno. Når du favoriserer noko, så vill det ende opp her.",
- "empty_column.favourites": "Ikkje nokon har favorisert denne tuten enno. Når nokon gjer det, så vill den ende opp her.",
- "empty_column.follow_requests": "Du har ikkje nokon føljar førespurnad enno. Når du får ein, så vill den sjåast her.",
- "empty_column.hashtag": "Det er ikkje noko i denne emneknaggen her enno.",
- "empty_column.home": "Din heime-tidslinja er tom! Dra til {public} eller søk for å starte å møte andre brukare.",
- "empty_column.home.public_timeline": "Den offentlege tidslinja",
- "empty_column.list": "Det er ikkje noko i denne lista enno. Når medlemmar av denne lista poster statuser, så vill dei sjåast her.",
- "empty_column.lists": "Du har ikkje nokon liste enno. Når du lagar ein, så vill den ende up her.",
- "empty_column.mutes": "Du har ikkje dempet nokon brukare enno.",
- "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
- "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Rapportér problem",
+ "empty_column.direct": "Du har ingen direktemeldingar ennå. Når du sender eller får ein vil den dukke opp her.",
+ "empty_column.domain_blocks": "Det er ingen gøymde domene ennå.",
+ "empty_column.favourited_statuses": "Du har ingen favoritt-tut ennå. Når du merkjer ein som favoritt, så dukkar det opp her.",
+ "empty_column.favourites": "Ingen har merkt dette tutet som favoritt enno. Når nokon gjer det, så dukkar det opp her.",
+ "empty_column.follow_requests": "Du har ingen følgjeførespurnadar ennå. Når du får ein, så vil den dukke opp her.",
+ "empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.",
+ "empty_column.home": "Heime-tidslinja di er tom! Besøk {public} eller søk for å starte og å møte andre brukarar.",
+ "empty_column.home.public_timeline": "den offentlege tidslina",
+ "empty_column.list": "Det er ingenting i denne lista enno. Når medlemer av denne lista legg ut nye statusar, så dukkar dei opp her.",
+ "empty_column.lists": "Du har ingen lister enno. Når du lagar ei, så dukkar ho opp her.",
+ "empty_column.mutes": "Du har ikkje målbunde nokon brukarar enno.",
+ "empty_column.notifications": "Du har ingen varsel ennå. Kommuniser med andre for å starte samtalen.",
+ "empty_column.public": "Det er ingenting her! Skriv noko offentleg, eller følg brukarar frå andre tenarar manuelt for å fylle det opp",
+ "error.unexpected_crash.explanation": "På grunn av ein feil i vår kode eller eit nettlesarkompatibilitetsproblem, kunne ikkje denne sida verte vist korrekt.",
+ "error.unexpected_crash.next_steps": "Prøv å lasta inn sida på nytt. Om det ikkje hjelper så kan du framleis nytta Mastodon i ein annan nettlesar eller app.",
+ "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla",
+ "errors.unexpected_crash.report_issue": "Rapporter problem",
"follow_request.authorize": "Autoriser",
- "follow_request.reject": "Reject",
- "getting_started.developers": "Utviklare",
- "getting_started.directory": "Profile directory",
+ "follow_request.reject": "Avvis",
+ "follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
+ "getting_started.developers": "Utviklarar",
+ "getting_started.directory": "Profilkatalog",
"getting_started.documentation": "Dokumentasjon",
- "getting_started.heading": "Komme i gong",
- "getting_started.invite": "Inviter folk",
- "getting_started.open_source_notice": "Mastodon har åpen kilde kode. Du kan hjelpe til med problemar på GitHub gjennom {github}.",
- "getting_started.security": "Brukar instillingar",
- "getting_started.terms": "Brukarvillkår",
+ "getting_started.heading": "Kom i gang",
+ "getting_started.invite": "Byd folk inn",
+ "getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidraga eller rapportera problem med GitHub på {github}.",
+ "getting_started.security": "Kontoinnstillingar",
+ "getting_started.terms": "Brukarvilkår",
"hashtag.column_header.tag_mode.all": "og {additional}",
"hashtag.column_header.tag_mode.any": "eller {additional}",
- "hashtag.column_header.tag_mode.none": "uten {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+ "hashtag.column_header.tag_mode.none": "utan {additional}",
+ "hashtag.column_settings.select.no_options_message": "Fann ingen forslag",
+ "hashtag.column_settings.select.placeholder": "Legg til emneknaggar…",
"hashtag.column_settings.tag_mode.all": "Alle disse",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
- "home.column_settings.basic": "Basic",
- "home.column_settings.show_reblogs": "Vis fremhevingar",
+ "hashtag.column_settings.tag_mode.any": "Kva som helst av desse",
+ "hashtag.column_settings.tag_mode.none": "Ikkje nokon av disse",
+ "hashtag.column_settings.tag_toggle": "Inkluder ekstra emneknaggar for denne kolonna",
+ "home.column_settings.basic": "Enkelt",
+ "home.column_settings.show_reblogs": "Vis framhevingar",
"home.column_settings.show_replies": "Vis svar",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "home.hide_announcements": "Skjul kunngjeringar",
+ "home.show_announcements": "Vis kunngjeringar",
+ "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}",
+ "intervals.full.hours": "{number, plural, one {# time} other {# timar}}",
+ "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutt}}",
"introduction.federation.action": "Neste",
- "introduction.federation.federated.headline": "Federert",
- "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+ "introduction.federation.federated.headline": "Føderert",
+ "introduction.federation.federated.text": "Offentlege innlegg frå andre tenarar i fødiverset dukkar opp i den fødererte tidslina.",
"introduction.federation.home.headline": "Heim",
- "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+ "introduction.federation.home.text": "Innlegg frå folk du fylgjer dukkar opp i heimetidslina di. Du kan fylgja kven som helst frå kva tenar som helst!",
"introduction.federation.local.headline": "Lokal",
- "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "introduction.federation.local.text": "Offentlege innlegg frå folk på same tenar som deg, dukkar opp i den lokale tidslina.",
"introduction.interactions.action": "Fullfør omvisning!",
- "introduction.interactions.favourite.headline": "Lik",
- "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
- "introduction.interactions.reblog.headline": "Fremhev",
- "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.favourite.headline": "Merk som favoritt",
+ "introduction.interactions.favourite.text": "Du kan lagra eit tut til seinare og lata forfattaren vita at du likte det med å merkja det som favoritt.",
+ "introduction.interactions.reblog.headline": "Framhev",
+ "introduction.interactions.reblog.text": "Du kan dela andre folk sine tut med å framheva dei.",
"introduction.interactions.reply.headline": "Svar",
- "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "Første steg",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
- "keyboard_shortcuts.back": "to navigate back",
- "keyboard_shortcuts.blocked": "to open blocked users list",
- "keyboard_shortcuts.boost": "to boost",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
- "keyboard_shortcuts.compose": "to focus the compose textarea",
- "keyboard_shortcuts.description": "Description",
- "keyboard_shortcuts.direct": "to open direct messages column",
- "keyboard_shortcuts.down": "to move down in the list",
- "keyboard_shortcuts.enter": "to open status",
- "keyboard_shortcuts.favourite": "to favourite",
- "keyboard_shortcuts.favourites": "to open favourites list",
- "keyboard_shortcuts.federated": "to open federated timeline",
- "keyboard_shortcuts.heading": "Keyboard Shortcuts",
- "keyboard_shortcuts.home": "to open home timeline",
- "keyboard_shortcuts.hotkey": "Hotkey",
- "keyboard_shortcuts.legend": "to display this legend",
- "keyboard_shortcuts.local": "to open local timeline",
- "keyboard_shortcuts.mention": "to mention author",
- "keyboard_shortcuts.muted": "to open muted users list",
- "keyboard_shortcuts.my_profile": "to open your profile",
- "keyboard_shortcuts.notifications": "to open notifications column",
- "keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "to open author's profile",
- "keyboard_shortcuts.reply": "to reply",
- "keyboard_shortcuts.requests": "to open follow requests list",
- "keyboard_shortcuts.search": "to focus search",
- "keyboard_shortcuts.start": "to open \"get started\" column",
- "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
- "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
- "keyboard_shortcuts.toot": "Start ein heilt ny tut",
- "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
- "keyboard_shortcuts.up": "to move up in the list",
- "lightbox.close": "Lukk",
+ "introduction.interactions.reply.text": "Du kan svare på andre folk sine tutar, som gjer at dei vert lenka saman i ein samtale.",
+ "introduction.welcome.action": "Lat oss koma i gang!",
+ "introduction.welcome.headline": "Fyrste steg",
+ "introduction.welcome.text": "Velkommen til fediverset! Om nokre minutt vil du kunne kringkaste meldingar og snakke med dine vener rundt omkring på eit bredt spekter av tenarar. Men denne tenaren, {domain}, er spesiell – den er vert for profilen din, så hugs namnet på den.",
+ "keyboard_shortcuts.back": "for å gå tilbake",
+ "keyboard_shortcuts.blocked": "for å opna lista med blokkerte brukarar",
+ "keyboard_shortcuts.boost": "for å framheva",
+ "keyboard_shortcuts.column": "for å fokusera på ein status i ei av kolonnane",
+ "keyboard_shortcuts.compose": "for å fokusera tekstfeltet for skriving",
+ "keyboard_shortcuts.description": "Skildring",
+ "keyboard_shortcuts.direct": "for å opna direktemeldingskolonna",
+ "keyboard_shortcuts.down": "for å flytta seg opp og ned i lista",
+ "keyboard_shortcuts.enter": "for å opna status",
+ "keyboard_shortcuts.favourite": "for å merkja som favoritt",
+ "keyboard_shortcuts.favourites": "for å opna favorittlista",
+ "keyboard_shortcuts.federated": "for å opna den samla tidslina",
+ "keyboard_shortcuts.heading": "Snøggtastar",
+ "keyboard_shortcuts.home": "for opna heimetidslina",
+ "keyboard_shortcuts.hotkey": "Snøggtast",
+ "keyboard_shortcuts.legend": "for å visa denne forklåringa",
+ "keyboard_shortcuts.local": "for å opna den lokale tidslina",
+ "keyboard_shortcuts.mention": "for å nemna forfattaren",
+ "keyboard_shortcuts.muted": "for å opna lista over målbundne brukarar",
+ "keyboard_shortcuts.my_profile": "for å opna profilen din",
+ "keyboard_shortcuts.notifications": "for å opna varselskolonna",
+ "keyboard_shortcuts.open_media": "for å opna media",
+ "keyboard_shortcuts.pinned": "for å opna lista over festa tut",
+ "keyboard_shortcuts.profile": "for å opna forfattaren sin profil",
+ "keyboard_shortcuts.reply": "for å svara",
+ "keyboard_shortcuts.requests": "for å opna lista med fylgjeførespurnader",
+ "keyboard_shortcuts.search": "for å fokusera søket",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "for å opna \"kom i gang\"-feltet",
+ "keyboard_shortcuts.toggle_hidden": "for å visa/gøyma tekst bak innhaldsvarsel",
+ "keyboard_shortcuts.toggle_sensitivity": "for å visa/gøyma media",
+ "keyboard_shortcuts.toot": "for å laga ein heilt ny tut",
+ "keyboard_shortcuts.unfocus": "for å fokusere vekk skrive-/søkefeltet",
+ "keyboard_shortcuts.up": "for å flytta seg opp på lista",
+ "lightbox.close": "Lukk att",
"lightbox.next": "Neste",
- "lightbox.previous": "Forrige",
+ "lightbox.previous": "Førre",
"lightbox.view_context": "Sjå kontekst",
"lists.account.add": "Legg til i liste",
- "lists.account.remove": "Ta burt fra liste",
+ "lists.account.remove": "Fjern frå liste",
"lists.delete": "Slett liste",
"lists.edit": "Rediger liste",
- "lists.edit.submit": "Bytt tittel",
+ "lists.edit.submit": "Endre tittel",
"lists.new.create": "Legg til liste",
- "lists.new.title_placeholder": "Ny liste tittel",
- "lists.search": "Søk gjennom folk du føljar",
+ "lists.new.title_placeholder": "Ny listetittel",
+ "lists.search": "Søk gjennom folk du følgjer",
"lists.subheading": "Dine lister",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "Laster...",
- "media_gallery.toggle_visible": "Toggle visibility",
+ "load_pending": "{count, plural, one {# nytt element} other {# nye element}}",
+ "loading_indicator.label": "Lastar...",
+ "media_gallery.toggle_visible": "Gjer synleg/usynleg",
"missing_indicator.label": "Ikkje funne",
- "missing_indicator.sublabel": "Denne ressursen ble ikkje funne",
- "mute_modal.hide_notifications": "Hide notifications from this user?",
- "navigation_bar.apps": "Mobile apps",
- "navigation_bar.blocks": "Blocked users",
- "navigation_bar.community_timeline": "Local timeline",
- "navigation_bar.compose": "Compose new toot",
- "navigation_bar.direct": "Direct messages",
- "navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "Edit profile",
- "navigation_bar.favourites": "Favourites",
- "navigation_bar.filters": "Muted words",
- "navigation_bar.follow_requests": "Follow requests",
- "navigation_bar.follows_and_followers": "Follows and followers",
- "navigation_bar.info": "About this server",
- "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "missing_indicator.sublabel": "Fann ikkje ressursen",
+ "mute_modal.hide_notifications": "Gøyme varsel frå denne brukaren?",
+ "navigation_bar.apps": "Mobilappar",
+ "navigation_bar.blocks": "Blokkerte brukarar",
+ "navigation_bar.bookmarks": "Bokmerke",
+ "navigation_bar.community_timeline": "Lokal tidsline",
+ "navigation_bar.compose": "Lag eit nytt tut",
+ "navigation_bar.direct": "Direktemeldingar",
+ "navigation_bar.discover": "Oppdag",
+ "navigation_bar.domain_blocks": "Skjulte domene",
+ "navigation_bar.edit_profile": "Rediger profil",
+ "navigation_bar.favourites": "Favorittar",
+ "navigation_bar.filters": "Målbundne ord",
+ "navigation_bar.follow_requests": "Fylgjeførespurnader",
+ "navigation_bar.follows_and_followers": "Fylgje og fylgjarar",
+ "navigation_bar.info": "Om denne tenaren",
+ "navigation_bar.keyboard_shortcuts": "Snøggtastar",
"navigation_bar.lists": "Lister",
"navigation_bar.logout": "Logg ut",
- "navigation_bar.mutes": "Dempa brukare",
- "navigation_bar.personal": "Personlig",
- "navigation_bar.pins": "Festa tuter",
- "navigation_bar.preferences": "Preferanser",
- "navigation_bar.public_timeline": "Federert tidslinje",
- "navigation_bar.security": "Sikkerheit",
- "notification.favourite": "{name} likte din status",
- "notification.follow": "{name} fulgte deg",
- "notification.mention": "{name} nevnte deg",
- "notification.poll": "A poll you have voted in has ended",
- "notification.reblog": "{name} boosted your status",
- "notifications.clear": "Klarer notifikasjoner",
- "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
- "notifications.column_settings.alert": "Desktop notifications",
- "notifications.column_settings.favourite": "Favourites:",
- "notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
- "notifications.column_settings.follow": "Nye føljare:",
- "notifications.column_settings.mention": "Mentions:",
- "notifications.column_settings.poll": "Poll results:",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.reblog": "Framhevinger:",
- "notifications.column_settings.show": "Show in column",
- "notifications.column_settings.sound": "Play sound",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Framhevinger",
- "notifications.filter.favourites": "Favoritter",
- "notifications.filter.follows": "Føljare",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
- "notifications.group": "{count} notifications",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
- "privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "Post to public timelines",
- "privacy.public.short": "Public",
- "privacy.unlisted.long": "Do not show in public timelines",
- "privacy.unlisted.short": "Unlisted",
- "refresh": "Refresh",
- "regeneration_indicator.label": "Loading…",
- "regeneration_indicator.sublabel": "Your home feed is being prepared!",
- "relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
- "relative_time.just_now": "now",
- "relative_time.minutes": "{number}m",
- "relative_time.seconds": "{number}s",
- "reply_indicator.cancel": "Cancel",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
- "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
- "report.placeholder": "Additional comments",
- "report.submit": "Submit",
- "report.target": "Report {target}",
- "search.placeholder": "Search",
- "search_popout.search_format": "Advanced search format",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
- "search_popout.tips.hashtag": "hashtag",
+ "navigation_bar.mutes": "Målbundne brukarar",
+ "navigation_bar.personal": "Personleg",
+ "navigation_bar.pins": "Festa tut",
+ "navigation_bar.preferences": "Innstillingar",
+ "navigation_bar.public_timeline": "Føderert tidsline",
+ "navigation_bar.security": "Tryggleik",
+ "notification.favourite": "{name} merkte statusen din som favoritt",
+ "notification.follow": "{name} fylgde deg",
+ "notification.follow_request": "{name} har bedt om å fylgja deg",
+ "notification.mention": "{name} nemnde deg",
+ "notification.own_poll": "Rundspørjinga di er ferdig",
+ "notification.poll": "Ei rundspørjing du har røysta i er ferdig",
+ "notification.reblog": "{name} framheva statusen din",
+ "notifications.clear": "Tøm varsel",
+ "notifications.clear_confirmation": "Er du sikker på at du vil fjerna alle varsla dine for alltid?",
+ "notifications.column_settings.alert": "Skrivebordsvarsel",
+ "notifications.column_settings.favourite": "Favorittar:",
+ "notifications.column_settings.filter_bar.advanced": "Vis alle kategoriar",
+ "notifications.column_settings.filter_bar.category": "Snarfilterlinje",
+ "notifications.column_settings.filter_bar.show": "Vis",
+ "notifications.column_settings.follow": "Nye fylgjarar:",
+ "notifications.column_settings.follow_request": "Ny fylgjarførespurnader:",
+ "notifications.column_settings.mention": "Nemningar:",
+ "notifications.column_settings.poll": "Røysteresultat:",
+ "notifications.column_settings.push": "Pushvarsel",
+ "notifications.column_settings.reblog": "Framhevingar:",
+ "notifications.column_settings.show": "Vis i kolonne",
+ "notifications.column_settings.sound": "Spel av lyd",
+ "notifications.filter.all": "Alle",
+ "notifications.filter.boosts": "Framhevingar",
+ "notifications.filter.favourites": "Favorittar",
+ "notifications.filter.follows": "Fylgjer",
+ "notifications.filter.mentions": "Nemningar",
+ "notifications.filter.polls": "Røysteresultat",
+ "notifications.group": "{count} varsel",
+ "poll.closed": "Lukka",
+ "poll.refresh": "Oppdater",
+ "poll.total_people": "{count, plural, one {# person} other {# folk}}",
+ "poll.total_votes": "{count, plural, one {# røyst} other {# røyster}}",
+ "poll.vote": "Røyst",
+ "poll.voted": "Du røysta på dette svaret",
+ "poll_button.add_poll": "Start ei meiningsmåling",
+ "poll_button.remove_poll": "Fjern røyst",
+ "privacy.change": "Juster status-synlegheit",
+ "privacy.direct.long": "Legg berre ut for nemnde brukarar",
+ "privacy.direct.short": "Direkte",
+ "privacy.private.long": "Post kun til følgjarar",
+ "privacy.private.short": "Kun følgjarar",
+ "privacy.public.long": "Post til offentlege tidslinjer",
+ "privacy.public.short": "Offentleg",
+ "privacy.unlisted.long": "Ikkje post til offentlege tidslinjer",
+ "privacy.unlisted.short": "Uoppført",
+ "refresh": "Oppdater",
+ "regeneration_indicator.label": "Lastar…",
+ "regeneration_indicator.sublabel": "Heimetidslinja di vert førebudd!",
+ "relative_time.days": "{number}dg",
+ "relative_time.hours": "{number}t",
+ "relative_time.just_now": "nå",
+ "relative_time.minutes": "{number}min",
+ "relative_time.seconds": "{number}sek",
+ "relative_time.today": "i dag",
+ "reply_indicator.cancel": "Avbryt",
+ "report.forward": "Vidaresend til {target}",
+ "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?",
+ "report.hint": "Rapporten vil verte sendt til dine tenarmoderatorar. Du kan oppgje ei forklaring på kvifor du rapporterer denne kontoen, under:",
+ "report.placeholder": "Tilleggskommentarar",
+ "report.submit": "Send inn",
+ "report.target": "Rapporterer {target}",
+ "search.placeholder": "Søk",
+ "search_popout.search_format": "Avansert søkeformat",
+ "search_popout.tips.full_text": "Enkel tekst returnerer statusar du har skrive, likt, framheva eller vorte nemnd i, i tillegg til samsvarande brukarnamn, visningsnamn og emneknaggar.",
+ "search_popout.tips.hashtag": "emneknagg",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
- "search_popout.tips.user": "user",
- "search_results.accounts": "People",
- "search_results.hashtags": "Hashtags",
- "search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
- "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
- "status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
- "status.block": "Block @{name}",
- "status.cancel_reblog_private": "Unboost",
- "status.cannot_reblog": "This post cannot be boosted",
- "status.copy": "Copy link to status",
- "status.delete": "Delete",
- "status.detailed_status": "Detailed conversation view",
- "status.direct": "Direct message @{name}",
- "status.embed": "Embed",
- "status.favourite": "Favourite",
- "status.filtered": "Filtered",
- "status.load_more": "Load more",
- "status.media_hidden": "Media hidden",
- "status.mention": "Mention @{name}",
- "status.more": "More",
- "status.mute": "Mute @{name}",
- "status.mute_conversation": "Mute conversation",
- "status.open": "Expand this status",
- "status.pin": "Pin on profile",
- "status.pinned": "Pinned toot",
- "status.read_more": "Read more",
- "status.reblog": "Boost",
- "status.reblog_private": "Boost to original audience",
- "status.reblogged_by": "{name} boosted",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
- "status.redraft": "Delete & re-draft",
- "status.reply": "Reply",
- "status.replyAll": "Reply to thread",
- "status.report": "Report @{name}",
- "status.sensitive_warning": "Sensitive content",
- "status.share": "Share",
- "status.show_less": "Show less",
- "status.show_less_all": "Show less for all",
- "status.show_more": "Show more",
- "status.show_more_all": "Show more for all",
- "status.show_thread": "Show thread",
- "status.uncached_media_warning": "Not available",
- "status.unmute_conversation": "Unmute conversation",
- "status.unpin": "Unpin from profile",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
- "tabs_bar.federated_timeline": "Federated",
- "tabs_bar.home": "Home",
- "tabs_bar.local_timeline": "Local",
- "tabs_bar.notifications": "Notifications",
- "tabs_bar.search": "Search",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "trends.trending_now": "Trending now",
- "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
- "upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media ({formats})",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
- "upload_form.description": "Describe for the visually impaired",
- "upload_form.edit": "Edit",
- "upload_form.undo": "Delete",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
- "upload_progress.label": "Uploading…",
- "video.close": "Close video",
- "video.exit_fullscreen": "Exit full screen",
- "video.expand": "Expand video",
- "video.fullscreen": "Full screen",
- "video.hide": "Hide video",
- "video.mute": "Mute sound",
+ "search_popout.tips.text": "Enkel tekst returnerer samsvarande visningsnamn, brukarnamn og emneknaggar",
+ "search_popout.tips.user": "brukar",
+ "search_results.accounts": "Folk",
+ "search_results.hashtags": "Emneknaggar",
+ "search_results.statuses": "Tut",
+ "search_results.statuses_fts_disabled": "På denne Matsodon-tenaren kan du ikkje søkja på tut etter innhaldet deira.",
+ "search_results.total": "{count, number} {count, plural, one {treff} other {treff}}",
+ "status.admin_account": "Opne moderasjonsgrensesnitt for @{name}",
+ "status.admin_status": "Opne denne statusen i moderasjonsgrensesnittet",
+ "status.block": "Blokker @{name}",
+ "status.bookmark": "Bokmerk",
+ "status.cancel_reblog_private": "Opphev framheving",
+ "status.cannot_reblog": "Denne posten kan ikkje framhevast",
+ "status.copy": "Kopier lenke til status",
+ "status.delete": "Slett",
+ "status.detailed_status": "Detaljert samtalevisning",
+ "status.direct": "Send melding til @{name}",
+ "status.embed": "Bygg inn",
+ "status.favourite": "Favoritt",
+ "status.filtered": "Filtrert",
+ "status.load_more": "Last inn meir",
+ "status.media_hidden": "Medium gøymd",
+ "status.mention": "Nemn @{name}",
+ "status.more": "Meir",
+ "status.mute": "Målbind @{name}",
+ "status.mute_conversation": "Målbind samtale",
+ "status.open": "Utvid denne statusen",
+ "status.pin": "Fest på profil",
+ "status.pinned": "Festa tut",
+ "status.read_more": "Les meir",
+ "status.reblog": "Framhev",
+ "status.reblog_private": "Framhev til dei originale mottakarane",
+ "status.reblogged_by": "{name} framheva",
+ "status.reblogs.empty": "Ingen har framheva dette tutet enno. Om nokon gjer, så dukkar det opp her.",
+ "status.redraft": "Slett & skriv på nytt",
+ "status.remove_bookmark": "Fjern bokmerke",
+ "status.reply": "Svar",
+ "status.replyAll": "Svar til tråd",
+ "status.report": "Rapporter @{name}",
+ "status.sensitive_warning": "Sensitivt innhald",
+ "status.share": "Del",
+ "status.show_less": "Vis mindre",
+ "status.show_less_all": "Vis mindre for alle",
+ "status.show_more": "Vis meir",
+ "status.show_more_all": "Vis meir for alle",
+ "status.show_thread": "Vis tråd",
+ "status.uncached_media_warning": "Ikkje tilgjengeleg",
+ "status.unmute_conversation": "Opphev målbinding av samtalen",
+ "status.unpin": "Løys frå profil",
+ "suggestions.dismiss": "Avslå framlegg",
+ "suggestions.header": "Du er kanskje interessert i…",
+ "tabs_bar.federated_timeline": "Føderert",
+ "tabs_bar.home": "Heim",
+ "tabs_bar.local_timeline": "Lokal",
+ "tabs_bar.notifications": "Varsel",
+ "tabs_bar.search": "Søk",
+ "time_remaining.days": "{number, plural, one {# dag} other {# dagar}} igjen",
+ "time_remaining.hours": "{number, plural, one {# time} other {# timar}} igjen",
+ "time_remaining.minutes": "{number, plural, one {# minutt} other {# minutt}} igjen",
+ "time_remaining.moments": "Kort tid igjen",
+ "time_remaining.seconds": "{number, plural, one {# sekund} other {# sekund}} igjen",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {folk}} snakkar",
+ "trends.trending_now": "Populært no",
+ "ui.beforeunload": "Kladden din forsvinn om du forlèt Mastodon no.",
+ "upload_area.title": "Drag & slepp for å lasta opp",
+ "upload_button.label": "Legg til medium ({formats})",
+ "upload_error.limit": "Du har gått over opplastingsgrensa.",
+ "upload_error.poll": "Filopplasting ikkje tillate med meiningsmålingar.",
+ "upload_form.audio_description": "Grei ut for folk med nedsett høyrsel",
+ "upload_form.description": "Skildr for synshemja",
+ "upload_form.edit": "Rediger",
+ "upload_form.undo": "Slett",
+ "upload_form.video_description": "Greit ut for folk med nedsett høyrsel eller syn",
+ "upload_modal.analyzing_picture": "Analyserer bilete…",
+ "upload_modal.apply": "Bruk",
+ "upload_modal.description_placeholder": "Ein rask brun rev hoppar over den late hunden",
+ "upload_modal.detect_text": "Gjenkjenn tekst i biletet",
+ "upload_modal.edit_media": "Rediger medium",
+ "upload_modal.hint": "Klikk og dra sirkelen på førehandsvisninga for å velge fokuspunktet som alltid vil vere synleg på alle miniatyrbileta.",
+ "upload_modal.preview_label": "Førehandsvis ({ratio})",
+ "upload_progress.label": "Lastar opp...",
+ "video.close": "Lukk video",
+ "video.download": "Last ned fil",
+ "video.exit_fullscreen": "Lukk fullskjerm",
+ "video.expand": "Utvid video",
+ "video.fullscreen": "Fullskjerm",
+ "video.hide": "Gøym video",
+ "video.mute": "Demp lyd",
"video.pause": "Pause",
- "video.play": "Play",
- "video.unmute": "Unmute sound"
+ "video.play": "Spel av",
+ "video.unmute": "Av-dempe lyd"
}
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 37b893938..85715c7bf 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -1,31 +1,35 @@
{
- "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Legg til eller fjern fra lister",
"account.badges.bot": "Bot",
+ "account.badges.group": "Gruppe",
"account.block": "Blokkér @{name}",
"account.block_domain": "Skjul alt fra {domain}",
- "account.blocked": "Blocked",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.blocked": "Blokkert",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Avbryt følge forespørsel",
"account.direct": "Direct Message @{name}",
- "account.domain_blocked": "Domain hidden",
+ "account.domain_blocked": "Domenet skjult",
"account.edit_profile": "Rediger profil",
- "account.endorse": "Feature on profile",
+ "account.endorse": "Vis frem på profilen",
"account.follow": "Følg",
"account.followers": "Følgere",
- "account.followers.empty": "No one follows this user yet.",
+ "account.followers.empty": "Ingen følger denne brukeren ennå.",
"account.follows": "Følger",
- "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows.empty": "Denne brukeren følger ikke noen enda.",
"account.follows_you": "Følger deg",
"account.hide_reblogs": "Skjul fremhevinger fra @{name}",
- "account.last_status": "Last active",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
- "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.last_status": "Sist aktiv",
+ "account.link_verified_on": "Eierskap av denne lenken ble sjekket {date}",
+ "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.",
"account.media": "Media",
"account.mention": "Nevn @{name}",
"account.moved_to": "{name} har flyttet til:",
"account.mute": "Demp @{name}",
"account.mute_notifications": "Ignorer varsler fra @{name}",
- "account.muted": "Muted",
- "account.never_active": "Never",
+ "account.muted": "Dempet",
+ "account.never_active": "Aldri",
"account.posts": "Innlegg",
"account.posts_with_replies": "Toots with replies",
"account.report": "Rapportér @{name}",
@@ -34,27 +38,33 @@
"account.show_reblogs": "Vis boosts fra @{name}",
"account.unblock": "Avblokker @{name}",
"account.unblock_domain": "Vis {domain}",
- "account.unendorse": "Don't feature on profile",
+ "account.unendorse": "Ikke vis frem på profilen",
"account.unfollow": "Avfølg",
"account.unmute": "Avdemp @{name}",
"account.unmute_notifications": "Vis varsler fra @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
- "alert.unexpected.message": "An unexpected error occurred.",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Vennligst prøv igjen etter kl. {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Hastighetsbegrenset",
+ "alert.unexpected.message": "En uventet feil oppstod.",
"alert.unexpected.title": "Oops!",
- "autosuggest_hashtag.per_week": "{count} per week",
+ "announcement.announcement": "Kunngjøring",
+ "autosuggest_hashtag.per_week": "{count} per uke",
"boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
"bundle_column_error.body": "Noe gikk galt mens denne komponenten lastet.",
"bundle_column_error.retry": "Prøv igjen",
- "bundle_column_error.title": "Network error",
+ "bundle_column_error.title": "Nettverksfeil",
"bundle_modal_error.close": "Lukk",
"bundle_modal_error.message": "Noe gikk galt da denne komponenten lastet.",
"bundle_modal_error.retry": "Prøv igjen",
"column.blocks": "Blokkerte brukere",
+ "column.bookmarks": "Bokmerker",
"column.community": "Lokal tidslinje",
- "column.direct": "Direct messages",
- "column.directory": "Browse profiles",
- "column.domain_blocks": "Hidden domains",
+ "column.direct": "Direktemeldinger",
+ "column.directory": "Bla gjennom profiler",
+ "column.domain_blocks": "Skjulte domener",
"column.favourites": "Likt",
"column.follow_requests": "Følgeforespørsler",
"column.home": "Hjem",
@@ -71,54 +81,58 @@
"column_header.show_settings": "Vis innstillinger",
"column_header.unpin": "Løsne",
"column_subheading.settings": "Innstillinger",
+ "community.column_settings.local_only": "Kun lokalt",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Kun eksternt",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
- "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.direct_message_warning_learn_more": "Lær mer",
"compose_form.hashtag_warning": "Denne tuten blir ikke listet under noen emneknagger da den er ulistet. Kun offentlige tuter kan søktes etter med emneknagg.",
"compose_form.lock_disclaimer": "Din konto er ikke {locked}. Hvem som helst kan følge deg og se dine private poster.",
"compose_form.lock_disclaimer.lock": "låst",
"compose_form.placeholder": "Hva har du på hjertet?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Legg til et valg",
+ "compose_form.poll.duration": "Avstemningens varighet",
+ "compose_form.poll.option_placeholder": "Valg {number}",
+ "compose_form.poll.remove_option": "Fjern dette valget",
+ "compose_form.poll.switch_to_multiple": "Endre avstemning til å tillate flere valg",
+ "compose_form.poll.switch_to_single": "Endre avstemning til å tillate ett valg",
"compose_form.publish": "Tut",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
- "compose_form.spoiler.marked": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.sensitive.hide": "Merk media som sensitivt",
+ "compose_form.sensitive.marked": "Mediet er merket som sensitiv",
+ "compose_form.sensitive.unmarked": "Mediet er ikke merket som sensitiv",
+ "compose_form.spoiler.marked": "Teksten er skjult bak en advarsel",
+ "compose_form.spoiler.unmarked": "Teksten er ikke skjult",
"compose_form.spoiler_placeholder": "Innholdsadvarsel",
"confirmation_modal.cancel": "Avbryt",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Blokker og rapporter",
"confirmations.block.confirm": "Blokkèr",
"confirmations.block.message": "Er du sikker på at du vil blokkere {name}?",
"confirmations.delete.confirm": "Slett",
"confirmations.delete.message": "Er du sikker på at du vil slette denne statusen?",
- "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.confirm": "Slett",
"confirmations.delete_list.message": "Er du sikker på at du vil slette denne listen permanent?",
"confirmations.domain_block.confirm": "Skjul alt fra domenet",
"confirmations.domain_block.message": "Er du sikker på at du vil skjule hele domenet {domain}? I de fleste tilfeller er det bedre med målrettet blokkering eller demping.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.logout.confirm": "Logg ut",
+ "confirmations.logout.message": "Er du sikker på at du vil logge ut?",
"confirmations.mute.confirm": "Demp",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Dette vil skjule innlegg fra dem og innlegg som nevner dem, men det vil fortsatt la dem se dine innlegg og å følge deg.",
"confirmations.mute.message": "Er du sikker på at du vil dempe {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.confirm": "Slett og drøft på nytt",
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "Svar",
+ "confirmations.reply.message": "Å svare nå vil overskrive meldingen du skriver for øyeblikket. Er du sikker på at du vil fortsette?",
"confirmations.unfollow.confirm": "Slutt å følge",
"confirmations.unfollow.message": "Er du sikker på at du vil slutte å følge {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
+ "conversation.delete": "Slett samtalen",
+ "conversation.mark_as_read": "Marker som lest",
+ "conversation.open": "Vis samtale",
+ "conversation.with": "Med {names}",
+ "directory.federated": "Fra det kjente strømiverset",
+ "directory.local": "Kun fra {domain}",
+ "directory.new_arrivals": "Nye ankomster",
+ "directory.recently_active": "Nylig aktiv",
"embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.",
"embed.preview": "Slik kommer det til å se ut:",
"emoji_button.activity": "Aktivitet",
@@ -135,176 +149,186 @@
"emoji_button.search_results": "Søkeresultat",
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Reise & steder",
- "empty_column.account_timeline": "No toots here!",
- "empty_column.account_unavailable": "Profile unavailable",
- "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.account_timeline": "Ingen tuter er her!",
+ "empty_column.account_unavailable": "Profilen er utilgjengelig",
+ "empty_column.blocks": "Du har ikke blokkert noen brukere enda.",
+ "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen tuter enda. Når du bokmerker en, vil den dukke opp her.",
"empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!",
- "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
- "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
- "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
- "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.direct": "Du har ingen direktemeldinger enda. Når du mottar eller sender en, vil den dukke opp her.",
+ "empty_column.domain_blocks": "Det er ingen skjulte domener enda.",
+ "empty_column.favourited_statuses": "Du har ikke likt noen tuter enda. Når du liker en, vil den dukke opp her.",
+ "empty_column.favourites": "Ingen har likt denne tuten enda. Når noen gjør det, vil de dukke opp her.",
+ "empty_column.follow_requests": "Du har ingen følgeforespørsler enda. Når du mottar en, vil den dukke opp her.",
"empty_column.hashtag": "Det er ingenting i denne hashtagen ennå.",
"empty_column.home": "Du har ikke fulgt noen ennå. Besøk {publlic} eller bruk søk for å komme i gang og møte andre brukere.",
"empty_column.home.public_timeline": "en offentlig tidslinje",
"empty_column.list": "Det er ingenting i denne listen ennå. Når medlemmene av denne listen legger ut nye statuser vil de dukke opp her.",
- "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
- "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.lists": "Du har ingen lister enda. Når du lager en, vil den dukke opp her.",
+ "empty_column.mutes": "Du har ikke dempet noen brukere enda.",
"empty_column.notifications": "Du har ingen varsler ennå. Kommuniser med andre for å begynne samtalen.",
"empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "På grunn av en bug i koden vår eller et nettleserkompatibilitetsproblem, kunne denne siden ikke vises riktig.",
+ "error.unexpected_crash.next_steps": "Prøv å oppfriske siden. Dersom det ikke hjelper, vil du kanskje fortsatt kunne bruke Mastodon gjennom en annen nettleser eller app.",
+ "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace-en til utklippstavlen",
+ "errors.unexpected_crash.report_issue": "Rapporter en feil",
"follow_request.authorize": "Autorisér",
"follow_request.reject": "Avvis",
- "getting_started.developers": "Developers",
- "getting_started.directory": "Profile directory",
- "getting_started.documentation": "Documentation",
+ "follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
+ "getting_started.developers": "Utviklere",
+ "getting_started.directory": "Profilmappe",
+ "getting_started.documentation": "Dokumentasjon",
"getting_started.heading": "Kom i gang",
- "getting_started.invite": "Invite people",
+ "getting_started.invite": "Inviter folk",
"getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidra eller rapportere problemer på GitHub på {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
+ "getting_started.security": "Kontoinnstillinger",
+ "getting_started.terms": "Bruksvilkår",
+ "hashtag.column_header.tag_mode.all": "og {additional}",
+ "hashtag.column_header.tag_mode.any": "eller {additional}",
+ "hashtag.column_header.tag_mode.none": "uten {additional}",
+ "hashtag.column_settings.select.no_options_message": "Ingen forslag ble funnet",
+ "hashtag.column_settings.select.placeholder": "Skriv inn emneknagger …",
+ "hashtag.column_settings.tag_mode.all": "Alle disse",
+ "hashtag.column_settings.tag_mode.any": "Enhver av disse",
+ "hashtag.column_settings.tag_mode.none": "Ingen av disse",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
- "home.column_settings.basic": "Enkel",
+ "home.column_settings.basic": "Enkelt",
"home.column_settings.show_reblogs": "Vis fremhevinger",
"home.column_settings.show_replies": "Vis svar",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
- "introduction.federation.federated.headline": "Federated",
- "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
- "introduction.federation.home.headline": "Home",
- "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
- "introduction.federation.local.headline": "Local",
- "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
- "introduction.interactions.action": "Finish toot-orial!",
- "introduction.interactions.favourite.headline": "Favourite",
- "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
- "introduction.interactions.reblog.headline": "Boost",
- "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
- "introduction.interactions.reply.headline": "Reply",
- "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "First steps",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "home.hide_announcements": "Skjul kunngjøring",
+ "home.show_announcements": "Vis kunngjøring",
+ "intervals.full.days": "{number, plural,one {# dag} other {# dager}}",
+ "intervals.full.hours": "{number, plural, one {# time} other {# timer}}",
+ "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutter}}",
+ "introduction.federation.action": "Neste",
+ "introduction.federation.federated.headline": "Felles",
+ "introduction.federation.federated.text": "Offentlige innlegg fra andre tjenere i strømiverset vil dukke opp i fellestidslinjen.",
+ "introduction.federation.home.headline": "Hjem",
+ "introduction.federation.home.text": "Innlegg fra folk du følger vil dukke opp på hjemmestrømmen din. Du kan følge hvem som helst på enhver tjener!",
+ "introduction.federation.local.headline": "Lokalt",
+ "introduction.federation.local.text": "Offentlige innlegg fra folk på samme tjener som deg, vil dukke opp i den lokale tidslinjen.",
+ "introduction.interactions.action": "Avslutt veiledningen!",
+ "introduction.interactions.favourite.headline": "Lik",
+ "introduction.interactions.favourite.text": "Du kan lagre en tut til senere, og la forfatteren vite at du satte pris på det, ved å like det.",
+ "introduction.interactions.reblog.headline": "Fremhev",
+ "introduction.interactions.reblog.text": "Du kan dele andre folks tutinger med dine følgere ved å fremheve dem.",
+ "introduction.interactions.reply.headline": "Svar",
+ "introduction.interactions.reply.text": "Du kan svare på tuten til andre folk og til deg selv, som vil binde dem sammen til en samtale.",
+ "introduction.welcome.action": "La oss sette i gang!",
+ "introduction.welcome.headline": "De første skritt",
+ "introduction.welcome.text": "Velkommen til strømiverset! Om noen øyeblikk, vil du kunne sende meldinger og snakke med dine venner over et bredt spekter av tjenere. Men denne tjeneren, {domain}, er spesiell, for den inneholder profilen din, så husk på navnet dens.",
"keyboard_shortcuts.back": "for å navigere tilbake",
- "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.blocked": "åpne listen over blokkerte brukere",
"keyboard_shortcuts.boost": "å fremheve",
"keyboard_shortcuts.column": "å fokusere en status i en av kolonnene",
"keyboard_shortcuts.compose": "å fokusere komponeringsfeltet",
- "keyboard_shortcuts.description": "Description",
- "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.description": "Beskrivelse",
+ "keyboard_shortcuts.direct": "åpne direktemeldingskolonnen",
"keyboard_shortcuts.down": "for å flytte ned i listen",
- "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.enter": "å åpne status",
"keyboard_shortcuts.favourite": "for å favorittmarkere",
- "keyboard_shortcuts.favourites": "to open favourites list",
- "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.favourites": "åpne listen over likte ting",
+ "keyboard_shortcuts.federated": "for å åpne fellestidslinjen",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
- "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.home": "åpne hjemmetidslinjen",
"keyboard_shortcuts.hotkey": "Lyntast",
"keyboard_shortcuts.legend": "å vise denne forklaringen",
- "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.local": "åpne den lokale tidslinjen",
"keyboard_shortcuts.mention": "å nevne forfatter",
- "keyboard_shortcuts.muted": "to open muted users list",
- "keyboard_shortcuts.my_profile": "to open your profile",
- "keyboard_shortcuts.notifications": "to open notifications column",
- "keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.muted": "åpne listen over dempede brukere",
+ "keyboard_shortcuts.my_profile": "å åpne profilen din",
+ "keyboard_shortcuts.notifications": "åpne varslingskolonnen",
+ "keyboard_shortcuts.open_media": "å åpne media",
+ "keyboard_shortcuts.pinned": "åpne listen over klistrede tuter",
+ "keyboard_shortcuts.profile": "åpne forfatterens profil",
"keyboard_shortcuts.reply": "for å svare",
- "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.requests": "åpne følgingsforespørselslisten",
"keyboard_shortcuts.search": "å fokusere søk",
- "keyboard_shortcuts.start": "to open \"get started\" column",
- "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
- "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "åpne «Sett i gang»-kolonnen",
+ "keyboard_shortcuts.toggle_hidden": "å vise/skjule tekst bak en innholdsadvarsel",
+ "keyboard_shortcuts.toggle_sensitivity": "å vise/skjule media",
"keyboard_shortcuts.toot": "å starte en helt ny tut",
"keyboard_shortcuts.unfocus": "å ufokusere komponerings-/søkefeltet",
"keyboard_shortcuts.up": "å flytte opp i listen",
"lightbox.close": "Lukk",
"lightbox.next": "Neste",
"lightbox.previous": "Forrige",
- "lightbox.view_context": "View context",
+ "lightbox.view_context": "Vis sammenheng",
"lists.account.add": "Legg til i listen",
"lists.account.remove": "Fjern fra listen",
"lists.delete": "Slett listen",
"lists.edit": "Rediger listen",
- "lists.edit.submit": "Change title",
+ "lists.edit.submit": "Endre tittel",
"lists.new.create": "Ligg til liste",
"lists.new.title_placeholder": "Ny listetittel",
"lists.search": "Søk blant personer du følger",
"lists.subheading": "Dine lister",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "load_pending": "{count, plural,one {# ny gjenstand} other {# nye gjenstander}}",
"loading_indicator.label": "Laster...",
"media_gallery.toggle_visible": "Veksle synlighet",
"missing_indicator.label": "Ikke funnet",
"missing_indicator.sublabel": "Denne ressursen ble ikke funnet",
"mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?",
- "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.apps": "Mobilapper",
"navigation_bar.blocks": "Blokkerte brukere",
+ "navigation_bar.bookmarks": "Bokmerker",
"navigation_bar.community_timeline": "Lokal tidslinje",
- "navigation_bar.compose": "Compose new toot",
- "navigation_bar.direct": "Direct messages",
- "navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.compose": "Skriv en ny tut",
+ "navigation_bar.direct": "Direktemeldinger",
+ "navigation_bar.discover": "Oppdag",
+ "navigation_bar.domain_blocks": "Skjulte domener",
"navigation_bar.edit_profile": "Rediger profil",
"navigation_bar.favourites": "Favoritter",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Stilnede ord",
"navigation_bar.follow_requests": "Følgeforespørsler",
- "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.follows_and_followers": "Følginger og følgere",
"navigation_bar.info": "Utvidet informasjon",
"navigation_bar.keyboard_shortcuts": "Tastatursnarveier",
"navigation_bar.lists": "Lister",
"navigation_bar.logout": "Logg ut",
"navigation_bar.mutes": "Dempede brukere",
- "navigation_bar.personal": "Personal",
+ "navigation_bar.personal": "Personlig",
"navigation_bar.pins": "Festa tuter",
- "navigation_bar.preferences": "Preferanser",
+ "navigation_bar.preferences": "Innstillinger",
"navigation_bar.public_timeline": "Felles tidslinje",
- "navigation_bar.security": "Security",
+ "navigation_bar.security": "Sikkerhet",
"notification.favourite": "{name} likte din status",
"notification.follow": "{name} fulgte deg",
+ "notification.follow_request": "{name} har bedt om å få følge deg",
"notification.mention": "{name} nevnte deg",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.own_poll": "Avstemningen din er ferdig",
+ "notification.poll": "En avstemning du har stemt på har avsluttet",
"notification.reblog": "{name} fremhevde din status",
"notifications.clear": "Fjern varsler",
"notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?",
"notifications.column_settings.alert": "Skrivebordsvarslinger",
"notifications.column_settings.favourite": "Likt:",
- "notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.filter_bar.advanced": "Vis alle kategorier",
+ "notifications.column_settings.filter_bar.category": "Hurtigfiltreringslinje",
+ "notifications.column_settings.filter_bar.show": "Vis",
"notifications.column_settings.follow": "Nye følgere:",
+ "notifications.column_settings.follow_request": "Nye følgerforespørsler:",
"notifications.column_settings.mention": "Nevnt:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Avstemningsresultater:",
"notifications.column_settings.push": "Push varsler",
"notifications.column_settings.reblog": "Fremhevet:",
"notifications.column_settings.show": "Vis i kolonne",
"notifications.column_settings.sound": "Spill lyd",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Boosts",
- "notifications.filter.favourites": "Favourites",
- "notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
- "notifications.group": "{count} notifications",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "notifications.filter.all": "Alle",
+ "notifications.filter.boosts": "Fremhevinger",
+ "notifications.filter.favourites": "Favoritter",
+ "notifications.filter.follows": "Følginger",
+ "notifications.filter.mentions": "Nevnelser",
+ "notifications.filter.polls": "Avstemningsresultater",
+ "notifications.group": "{count} varslinger",
+ "poll.closed": "Lukket",
+ "poll.refresh": "Oppdater",
+ "poll.total_people": "{count, plural, one {# person} other {# personer}}",
+ "poll.total_votes": "{count, plural, one {# stemme} other {# stemmer}}",
+ "poll.vote": "Stem",
+ "poll.voted": "Du stemte på dette svaret",
+ "poll_button.add_poll": "Legg til en avstemning",
+ "poll_button.remove_poll": "Fjern avstemningen",
"privacy.change": "Justér synlighet",
"privacy.direct.long": "Post kun til nevnte brukere",
"privacy.direct.short": "Direkte",
@@ -314,45 +338,47 @@
"privacy.public.short": "Offentlig",
"privacy.unlisted.long": "Ikke vis i offentlige tidslinjer",
"privacy.unlisted.short": "Uoppført",
- "refresh": "Refresh",
+ "refresh": "Oppfrisk",
"regeneration_indicator.label": "Laster…",
"regeneration_indicator.sublabel": "Dine startside forberedes!",
"relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
+ "relative_time.hours": "{number}t",
"relative_time.just_now": "nå",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "i dag",
"reply_indicator.cancel": "Avbryt",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.forward": "Videresend til {target}",
+ "report.forward_hint": "Denne kontoen er fra en annen tjener. Vil du sende en anonymisert kopi av rapporten dit også?",
"report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
"report.placeholder": "Tilleggskommentarer",
"report.submit": "Send inn",
"report.target": "Rapporterer",
"search.placeholder": "Søk",
"search_popout.search_format": "Avansert søkeformat",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.full_text": "Enkel tekst gir resultater for statuser du har skrevet, likt, fremhevet, eller har blitt nevnt i, i tillegg til samsvarende brukernavn, visningsnavn og emneknagger.",
"search_popout.tips.hashtag": "emneknagg",
"search_popout.tips.status": "status",
"search_popout.tips.text": "Enkel tekst returnerer matchende visningsnavn, brukernavn og emneknagger",
"search_popout.tips.user": "bruker",
- "search_results.accounts": "People",
- "search_results.hashtags": "Hashtags",
- "search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.accounts": "Folk",
+ "search_results.hashtags": "Emneknagger",
+ "search_results.statuses": "Tuter",
+ "search_results.statuses_fts_disabled": "Å søke i tuter etter innhold er ikke skrudd på i denne Mastodon-tjeneren.",
"search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}",
- "status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
- "status.block": "Block @{name}",
- "status.cancel_reblog_private": "Unboost",
+ "status.admin_account": "Åpne moderatorgrensesnittet for @{name}",
+ "status.admin_status": "Åpne denne statusen i moderatorgrensesnittet",
+ "status.block": "Blokkér @{name}",
+ "status.bookmark": "Bokmerke",
+ "status.cancel_reblog_private": "Fjern fremheving",
"status.cannot_reblog": "Denne posten kan ikke fremheves",
- "status.copy": "Copy link to status",
+ "status.copy": "Kopier lenken til statusen",
"status.delete": "Slett",
- "status.detailed_status": "Detailed conversation view",
- "status.direct": "Direct message @{name}",
+ "status.detailed_status": "Detaljert samtalevisning",
+ "status.direct": "Send direktemelding til @{name}",
"status.embed": "Bygge inn",
"status.favourite": "Lik",
- "status.filtered": "Filtered",
+ "status.filtered": "Filtrert",
"status.load_more": "Last mer",
"status.media_hidden": "Media skjult",
"status.mention": "Nevn @{name}",
@@ -361,60 +387,68 @@
"status.mute_conversation": "Demp samtale",
"status.open": "Utvid denne statusen",
"status.pin": "Fest på profilen",
- "status.pinned": "Pinned toot",
- "status.read_more": "Read more",
+ "status.pinned": "Festet tut",
+ "status.read_more": "Les mer",
"status.reblog": "Fremhev",
- "status.reblog_private": "Boost to original audience",
+ "status.reblog_private": "Fremhev til det opprinnelige publikummet",
"status.reblogged_by": "Fremhevd av {name}",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
- "status.redraft": "Delete & re-draft",
+ "status.reblogs.empty": "Ingen har fremhevet denne tuten enda. Når noen gjør det, vil de dukke opp her.",
+ "status.redraft": "Slett og drøft på nytt",
+ "status.remove_bookmark": "Fjern bokmerke",
"status.reply": "Svar",
"status.replyAll": "Svar til samtale",
"status.report": "Rapporter @{name}",
"status.sensitive_warning": "Følsomt innhold",
"status.share": "Del",
"status.show_less": "Vis mindre",
- "status.show_less_all": "Show less for all",
+ "status.show_less_all": "Vis mindre for alle",
"status.show_more": "Vis mer",
- "status.show_more_all": "Show more for all",
- "status.show_thread": "Show thread",
- "status.uncached_media_warning": "Not available",
+ "status.show_more_all": "Vis mer for alle",
+ "status.show_thread": "Vis tråden",
+ "status.uncached_media_warning": "Ikke tilgjengelig",
"status.unmute_conversation": "Ikke demp samtale",
"status.unpin": "Angre festing på profilen",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Utelukk forslaget",
+ "suggestions.header": "Du er kanskje interessert i …",
"tabs_bar.federated_timeline": "Felles",
"tabs_bar.home": "Hjem",
"tabs_bar.local_timeline": "Lokal",
"tabs_bar.notifications": "Varslinger",
- "tabs_bar.search": "Search",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "trends.trending_now": "Trending now",
+ "tabs_bar.search": "Søk",
+ "time_remaining.days": "{number, plural,one {# dag} other {# dager}} igjen",
+ "time_remaining.hours": "{number, plural, one {# time} other {# timer}} igjen",
+ "time_remaining.minutes": "{number, plural, one {# minutt} other {# minutter}} igjen",
+ "time_remaining.moments": "Gjenværende øyeblikk",
+ "time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} igjen",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {personer}} snakker om det",
+ "trends.trending_now": "Trender nå",
"ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.",
"upload_area.title": "Dra og slipp for å laste opp",
"upload_button.label": "Legg til media",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.limit": "Filopplastingsgrensen er oversteget.",
+ "upload_error.poll": "Filopplasting inni avstemninger er ikke tillatt.",
+ "upload_form.audio_description": "Beskriv det for folk med hørselstap",
"upload_form.description": "Beskriv for synshemmede",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "Rediger",
"upload_form.undo": "Angre",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_form.video_description": "Beskriv det for folk med hørselstap eller synshemminger",
+ "upload_modal.analyzing_picture": "Analyserer bildet …",
+ "upload_modal.apply": "Bruk",
+ "upload_modal.description_placeholder": "Når du en gang kommer, neste sommer, skal vi atter drikke vin",
+ "upload_modal.detect_text": "Oppdag tekst i bildet",
+ "upload_modal.edit_media": "Rediger media",
+ "upload_modal.hint": "Klikk eller dra sirkelen i forhåndsvisningen for å velge hovedpunktet som alltid vil bli vist i alle miniatyrbilder.",
+ "upload_modal.preview_label": "Forhåndsvisning ({ratio})",
"upload_progress.label": "Laster opp...",
"video.close": "Lukk video",
+ "video.download": "Last ned fil",
"video.exit_fullscreen": "Lukk fullskjerm",
"video.expand": "Utvid video",
- "video.fullscreen": "Full screen",
+ "video.fullscreen": "Fullskjerm",
"video.hide": "Skjul video",
"video.mute": "Skru av lyd",
"video.pause": "Pause",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index b52d58970..e0c9e99c6 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Ajustar o tirar de las listas",
"account.badges.bot": "Robòt",
+ "account.badges.group": "Grop",
"account.block": "Blocar @{name}",
"account.block_domain": "Tot amagar del domeni {domain}",
"account.blocked": "Blocat",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Anullar la demanda de seguiment",
"account.direct": "Escriure un MP a @{name}",
"account.domain_blocked": "Domeni amagat",
@@ -38,10 +42,15 @@
"account.unfollow": "Quitar de sègre",
"account.unmute": "Quitar de rescondre @{name}",
"account.unmute_notifications": "Mostrar las notificacions de @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Mercés de tornar ensajar aprèp {retry_time, time, medium}.",
"alert.rate_limited.title": "Taus limitat",
"alert.unexpected.message": "Una error s’es producha.",
"alert.unexpected.title": "Ops !",
+ "announcement.announcement": "Anóncia",
"autosuggest_hashtag.per_week": "{count} per setmana",
"boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven",
"bundle_column_error.body": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.",
"bundle_modal_error.retry": "Tornar ensajar",
"column.blocks": "Personas blocadas",
+ "column.bookmarks": "Marcadors",
"column.community": "Flux public local",
"column.direct": "Messatges dirèctes",
"column.directory": "Percórrer los perfils",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Mostrar los paramètres",
"column_header.unpin": "Despenjar",
"column_subheading.settings": "Paramètres",
+ "community.column_settings.local_only": "Sonque local",
"community.column_settings.media_only": "Solament los mèdias",
+ "community.column_settings.remote_only": "Sonque alonhat",
"compose_form.direct_message_warning": "Sols los mencionats poiràn veire aqueste tut.",
"compose_form.direct_message_warning_learn_more": "Ne saber mai",
"compose_form.hashtag_warning": "Aqueste tut serà pas ligat a cap d’etiqueta estant qu’es pas listat. Òm pòt pas cercar que los tuts publics per etiqueta.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Durada del sondatge",
"compose_form.poll.option_placeholder": "Opcion {number}",
"compose_form.poll.remove_option": "Levar aquesta opcion",
+ "compose_form.poll.switch_to_multiple": "Cambiar lo sondatge per permetre de causidas multiplas",
+ "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida",
"compose_form.publish": "Tut",
"compose_form.publish_loud": "{publish} !",
"compose_form.sensitive.hide": "Marcar coma sensible",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "Desconnexion",
"confirmations.logout.message": "Volètz vertadièrament vos desconnectar ?",
"confirmations.mute.confirm": "Rescondre",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Aquò lor escondrà las publicacions e mencions, mas aquò lor permetrà encara de veire vòstra publicacions e de vos sègre.",
"confirmations.mute.message": "Volètz vertadièrament rescondre {name} ?",
"confirmations.redraft.confirm": "Escafar & tornar formular",
"confirmations.redraft.message": "Volètz vertadièrament escafar aqueste estatut e lo reformular ? Totes sos partiments e favorits seràn perduts, e sas responsas seràn orfanèlas.",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Cap de tuts aquí !",
"empty_column.account_unavailable": "Perfil pas disponible",
"empty_column.blocks": "Avètz pas blocat degun pel moment.",
+ "empty_column.bookmarked_statuses": "Avètz pas cap de tuts marcats pel moment. Quand ne marquetz un, serà mostrat aquí.",
"empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !",
"empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.",
"empty_column.domain_blocks": "I a pas encara cap de domeni amagat.",
@@ -152,12 +167,13 @@
"empty_column.mutes": "Encara avètz pas mes en silenci degun.",
"empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.",
"empty_column.public": "I a pas res aquí ! Escrivètz quicòm de public, o seguètz de personas d’autres servidors per garnir lo flux public",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "error.unexpected_crash.explanation": "A causa d’una avaria dins nòstre còdi o d’un problèma de compatibilitat de navegador, aquesta pagina se pòt pas afichar corrèctament.",
+ "error.unexpected_crash.next_steps": "Ensajatz d’actualizar la pagina. S’aquò càmbia pas res, podètz provar d’utilizar Mastodon via un navegador diferent o d’una aplicacion nativa estant.",
+ "errors.unexpected_crash.copy_stacktrace": "Copiar las traças al quichapapièrs",
"errors.unexpected_crash.report_issue": "Senhalar un problèma",
"follow_request.authorize": "Acceptar",
"follow_request.reject": "Regetar",
+ "follow_requests.unlocked_explanation": "Encara que vòstre compte siasque pas verrolhat, la còla de {domain} pensèt que volriatz benlèu repassar las demandas d’abonament d’aquestes comptes.",
"getting_started.developers": "Desvelopaires",
"getting_started.directory": "Annuari de perfils",
"getting_started.documentation": "Documentacion",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Mostrar los partatges",
"home.column_settings.show_replies": "Mostrar las responsas",
+ "home.hide_announcements": "Rescondre las anóncias",
+ "home.show_announcements": "Mostrar las anóncias",
"intervals.full.days": "{number, plural, one {# jorn} other {# jorns}}",
"intervals.full.hours": "{number, plural, one {# ora} other {# oras}}",
"intervals.full.minutes": "{number, plural, one {# minuta} other {# minutas}}",
@@ -219,14 +237,16 @@
"keyboard_shortcuts.muted": "dobrir la lista dels utilizaires silenciats",
"keyboard_shortcuts.my_profile": "dobrir vòstre perfil",
"keyboard_shortcuts.notifications": "dobrir la colomna de notificacions",
+ "keyboard_shortcuts.open_media": "dobrir lo mèdia",
"keyboard_shortcuts.pinned": "dobrir la lista dels tuts penjats",
"keyboard_shortcuts.profile": "dobrir lo perfil de l’autor",
"keyboard_shortcuts.reply": "respondre",
"keyboard_shortcuts.requests": "dorbir la lista de demanda d’abonament",
"keyboard_shortcuts.search": "anar a la recèrca",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "dobrir la colomna « Per començar »",
"keyboard_shortcuts.toggle_hidden": "mostrar/amagar lo tèxte dels avertiments",
- "keyboard_shortcuts.toggle_sensitivity": "per mostrar/rescondre los mèdias",
+ "keyboard_shortcuts.toggle_sensitivity": "mostrar/rescondre los mèdias",
"keyboard_shortcuts.toot": "començar un estatut tot novèl",
"keyboard_shortcuts.unfocus": "quitar lo camp tèxte/de recèrca",
"keyboard_shortcuts.up": "far montar dins la lista",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Rescondre las notificacions d’aquesta persona ?",
"navigation_bar.apps": "Aplicacions mobil",
"navigation_bar.blocks": "Personas blocadas",
+ "navigation_bar.bookmarks": "Marcadors",
"navigation_bar.community_timeline": "Flux public local",
"navigation_bar.compose": "Escriure un nòu tut",
"navigation_bar.direct": "Messatges dirèctes",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Seguretat",
"notification.favourite": "{name} a ajustat a sos favorits",
"notification.follow": "{name} vos sèc",
+ "notification.follow_request": "{name} a demandat a vos sègre",
"notification.mention": "{name} vos a mencionat",
+ "notification.own_poll": "Vòstre sondatge es acabat",
"notification.poll": "Avètz participat a un sondatge que ven de s’acabar",
"notification.reblog": "{name} a partejat vòstre estatut",
"notifications.clear": "Escafar",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Barra de recèrca rapida",
"notifications.column_settings.filter_bar.show": "Mostrar",
"notifications.column_settings.follow": "Nòus seguidors :",
+ "notifications.column_settings.follow_request": "Novèla demanda d’abonament :",
"notifications.column_settings.mention": "Mencions :",
"notifications.column_settings.poll": "Resultats del sondatge :",
"notifications.column_settings.push": "Notificacions",
@@ -302,7 +326,7 @@
"poll.total_people": "{count, plural, one {# persona} other {# personas}}",
"poll.total_votes": "{count, plural, one {# vòte} other {# vòtes}}",
"poll.vote": "Votar",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "Avètz votat per aquesta responsa",
"poll_button.add_poll": "Ajustar un sondatge",
"poll_button.remove_poll": "Levar lo sondatge",
"privacy.change": "Ajustar la confidencialitat del messatge",
@@ -322,6 +346,7 @@
"relative_time.just_now": "ara",
"relative_time.minutes": "fa {number} min",
"relative_time.seconds": "fa {number}s",
+ "relative_time.today": "uèi",
"reply_indicator.cancel": "Anullar",
"report.forward": "Far sègre a {target}",
"report.forward_hint": "Lo compte ven d’un autre servidor. Volètz mandar una còpia anonima del rapòrt enlai tanben ?",
@@ -344,6 +369,7 @@
"status.admin_account": "Dobrir l’interfàcia de moderacion per @{name}",
"status.admin_status": "Dobrir aqueste estatut dins l’interfàcia de moderacion",
"status.block": "Blocar @{name}",
+ "status.bookmark": "Marcador",
"status.cancel_reblog_private": "Quitar de partejar",
"status.cannot_reblog": "Aqueste estatut pòt pas èsser partejat",
"status.copy": "Copiar lo ligam de l’estatut",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} a partejat",
"status.reblogs.empty": "Degun a pas encara partejat aqueste tut. Quand qualqu’un o farà, apareisserà aquí.",
"status.redraft": "Escafar e tornar formular",
+ "status.remove_bookmark": "Suprimir lo marcador",
"status.reply": "Respondre",
"status.replyAll": "Respondre a la conversacion",
"status.report": "Senhalar @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "demòra{number, plural, one { # minuta} other {n # minutas}}",
"time_remaining.moments": "Moments restants",
"time_remaining.seconds": "demòra{number, plural, one { # segonda} other {n # segondas}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} ne charra other {people}} ne charran",
"trends.trending_now": "Tendéncia del moment",
"ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Mastodon.",
@@ -400,18 +431,21 @@
"upload_button.label": "Ajustar un mèdia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Talha maximum pels mandadís subrepassada.",
"upload_error.poll": "Lo mandadís de fichièr es pas autorizat pels sondatges.",
+ "upload_form.audio_description": "Descriure per las personas amb pèrdas auditivas",
"upload_form.description": "Descripcion pels mal vesents",
"upload_form.edit": "Modificar",
"upload_form.undo": "Suprimir",
+ "upload_form.video_description": "Descriure per las personas amb pèrdas auditivas o mal vesent",
"upload_modal.analyzing_picture": "Analisi de l’imatge…",
"upload_modal.apply": "Aplicar",
"upload_modal.description_placeholder": "Lo dròlle bilingüe manja un yaourt de ròcs exagonals e kiwis verds farà un an mai",
"upload_modal.detect_text": "Detectar lo tèxt de l’imatge",
"upload_modal.edit_media": "Modificar lo mèdia",
- "upload_modal.hint": "Clicatz o lissatz lo cercle de l’apercebut per causir lo ponch que serà totjorn visible dins las vinhetas.",
+ "upload_modal.hint": "Clicatz o lisatz lo cercle de l’apercebut per causir lo ponch que serà totjorn visible dins las vinhetas.",
"upload_modal.preview_label": "Apercebut ({ratio})",
"upload_progress.label": "Mandadís…",
"video.close": "Tampar la vidèo",
+ "video.download": "Telecargar lo fichièr",
"video.exit_fullscreen": "Sortir plen ecran",
"video.expand": "Agrandir la vidèo",
"video.fullscreen": "Ecran complèt",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 1eb982249..1d6810d8c 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Dodaj lub usuń z list",
"account.badges.bot": "Bot",
+ "account.badges.group": "Grupa",
"account.block": "Blokuj @{name}",
"account.block_domain": "Blokuj wszystko z {domain}",
"account.blocked": "Zablokowany(-a)",
+ "account.browse_more_on_origin_server": "Zobacz więcej na oryginalnym profilu",
"account.cancel_follow_request": "Zrezygnuj z prośby o możliwość śledzenia",
"account.direct": "Wyślij wiadomość bezpośrednią do @{name}",
"account.domain_blocked": "Ukryto domenę",
@@ -38,10 +42,15 @@
"account.unfollow": "Przestań śledzić",
"account.unmute": "Cofnij wyciszenie @{name}",
"account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Spróbuj ponownie po {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "alert.rate_limited.title": "Ograniczony czasowo",
"alert.unexpected.message": "Wystąpił nieoczekiwany błąd.",
"alert.unexpected.title": "O nie!",
+ "announcement.announcement": "Ogłoszenie",
"autosuggest_hashtag.per_week": "{count} co tydzień",
"boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem",
"bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Coś poszło nie tak podczas ładowania tego składnika.",
"bundle_modal_error.retry": "Spróbuj ponownie",
"column.blocks": "Zablokowani użytkownicy",
+ "column.bookmarks": "Zakładki",
"column.community": "Lokalna oś czasu",
"column.direct": "Wiadomości bezpośrednie",
"column.directory": "Przeglądaj profile",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Pokaż ustawienia",
"column_header.unpin": "Cofnij przypięcie",
"column_subheading.settings": "Ustawienia",
+ "community.column_settings.local_only": "Tylko Lokalne",
"community.column_settings.media_only": "Tylko zawartość multimedialna",
+ "community.column_settings.remote_only": "Tylko Zdalne",
"compose_form.direct_message_warning": "Ten wpis będzie widoczny tylko dla wszystkich wspomnianych użytkowników.",
"compose_form.direct_message_warning_learn_more": "Dowiedz się więcej",
"compose_form.hashtag_warning": "Ten wpis nie będzie widoczny pod podanymi hashtagami, ponieważ jest oznaczony jako niewidoczny. Tylko publiczne wpisy mogą zostać znalezione z użyciem hashtagów.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Czas trwania głosowania",
"compose_form.poll.option_placeholder": "Opcja {number}",
"compose_form.poll.remove_option": "Usuń tę opcję",
+ "compose_form.poll.switch_to_multiple": "Pozwól na wybranie wielu opcji",
+ "compose_form.poll.switch_to_single": "Pozwól na wybranie tylko jednej opcji",
"compose_form.publish": "Wyślij",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Oznacz multimedia jako wrażliwe",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Brak wpisów tutaj!",
"empty_column.account_unavailable": "Profil niedostępny",
"empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.",
+ "empty_column.bookmarked_statuses": "Nie dodałeś(-aś) żadnego wpisu do zakładek. Kiedy to zrobisz, pojawi się on tutaj.",
"empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!",
"empty_column.direct": "Nie masz żadnych wiadomości bezpośrednich. Kiedy dostaniesz lub wyślesz jakąś, pojawi się ona tutaj.",
"empty_column.domain_blocks": "Brak ukrytych domen.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Zgłoś problem",
"follow_request.authorize": "Autoryzuj",
"follow_request.reject": "Odrzuć",
+ "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość śledzenia.",
"getting_started.developers": "Dla programistów",
"getting_started.directory": "Katalog profilów",
"getting_started.documentation": "Dokumentacja",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Podstawowe",
"home.column_settings.show_reblogs": "Pokazuj podbicia",
"home.column_settings.show_replies": "Pokazuj odpowiedzi",
+ "home.hide_announcements": "Ukryj ogłoszenia",
+ "home.show_announcements": "Pokaż ogłoszenia",
"intervals.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}",
"intervals.full.hours": "{number, plural, one {# godzina} few {# godziny} many {# godzin} other {# godzin}}",
"intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "aby przejść do listy wyciszonych użytkowników",
"keyboard_shortcuts.my_profile": "aby otworzyć własny profil",
"keyboard_shortcuts.notifications": "aby otworzyć kolumnę powiadomień",
+ "keyboard_shortcuts.open_media": "aby otworzyć zawartość multimedialną",
"keyboard_shortcuts.pinned": "aby przejść do listy przypiętych wpisów",
"keyboard_shortcuts.profile": "aby przejść do profilu autora wpisu",
"keyboard_shortcuts.reply": "aby odpowiedzieć",
"keyboard_shortcuts.requests": "aby przejść do listy próśb o możliwość śledzenia",
"keyboard_shortcuts.search": "aby przejść do pola wyszukiwania",
+ "keyboard_shortcuts.spoilers": "aby pokazać/ukryć pole CW",
"keyboard_shortcuts.start": "aby otworzyć kolumnę „Rozpocznij”",
"keyboard_shortcuts.toggle_hidden": "aby wyświetlić lub ukryć wpis spod CW",
"keyboard_shortcuts.toggle_sensitivity": "by pokazać/ukryć multimedia",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?",
"navigation_bar.apps": "Aplikacje mobilne",
"navigation_bar.blocks": "Zablokowani użytkownicy",
+ "navigation_bar.bookmarks": "Zakładki",
"navigation_bar.community_timeline": "Lokalna oś czasu",
"navigation_bar.compose": "Utwórz nowy wpis",
"navigation_bar.direct": "Wiadomości bezpośrednie",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Bezpieczeństwo",
"notification.favourite": "{name} dodał(a) Twój wpis do ulubionych",
"notification.follow": "{name} zaczął(-ęła) Cię śledzić",
+ "notification.follow_request": "{name} poprosił(a) o możliwość śledzenia Cię",
"notification.mention": "{name} wspomniał(a) o tobie",
+ "notification.own_poll": "Twoje głosowanie zakończyło się",
"notification.poll": "Głosowanie w którym brałeś(-aś) udział zakończyła się",
"notification.reblog": "{name} podbił(a) Twój wpis",
"notifications.clear": "Wyczyść powiadomienia",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Szybkie filtrowanie",
"notifications.column_settings.filter_bar.show": "Pokaż",
"notifications.column_settings.follow": "Nowi śledzący:",
+ "notifications.column_settings.follow_request": "Nowe prośby o możliwość śledzenia:",
"notifications.column_settings.mention": "Wspomnienia:",
"notifications.column_settings.poll": "Wyniki głosowania:",
"notifications.column_settings.push": "Powiadomienia push",
@@ -302,7 +326,7 @@
"poll.total_people": "{count, plural, one {# osoba} few {# osoby} many {# osób} other {# osób}}",
"poll.total_votes": "{count, plural, one {# głos} few {# głosy} many {# głosów} other {# głosów}}",
"poll.vote": "Zagłosuj",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "Zagłosowałeś_aś na tą odpowiedź",
"poll_button.add_poll": "Dodaj głosowanie",
"poll_button.remove_poll": "Usuń głosowanie",
"privacy.change": "Dostosuj widoczność wpisów",
@@ -322,6 +346,7 @@
"relative_time.just_now": "teraz",
"relative_time.minutes": "{number} min.",
"relative_time.seconds": "{number} s.",
+ "relative_time.today": "dzisiaj",
"reply_indicator.cancel": "Anuluj",
"report.forward": "Przekaż na {target}",
"report.forward_hint": "To konto znajduje się na innej instancji. Czy chcesz wysłać anonimową kopię zgłoszenia rnież na nią?",
@@ -344,6 +369,7 @@
"status.admin_account": "Otwórz interfejs moderacyjny dla @{name}",
"status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym",
"status.block": "Zablokuj @{name}",
+ "status.bookmark": "Dodaj zakładkę",
"status.cancel_reblog_private": "Cofnij podbicie",
"status.cannot_reblog": "Ten wpis nie może zostać podbity",
"status.copy": "Skopiuj odnośnik do wpisu",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} podbił(a)",
"status.reblogs.empty": "Nikt nie podbił jeszcze tego wpisu. Gdy ktoś to zrobi, pojawi się tutaj.",
"status.redraft": "Usuń i przeredaguj",
+ "status.remove_bookmark": "Usuń zakładkę",
"status.reply": "Odpowiedz",
"status.replyAll": "Odpowiedz na wątek",
"status.report": "Zgłoś @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {Pozostała # minuta} few {Pozostały # minuty} many {Pozostało # minut} other {Pozostało # minut}}",
"time_remaining.moments": "Pozostała chwila",
"time_remaining.seconds": "{number, plural, one {Pozostała # sekunda} few {Pozostały # sekundy} many {Pozostało # sekund} other {Pozostało # sekund}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} z innych serwerów nie są wyświetlane.",
+ "timeline_hint.resources.followers": "Śledzący",
+ "timeline_hint.resources.follows": "Śledzeni",
+ "timeline_hint.resources.statuses": "Starsze wpisy",
"trends.count_by_accounts": "{count} {rawCount, plural, one {osoba rozmawia} few {osoby rozmawiają} other {osób rozmawia}} o tym",
"trends.trending_now": "Popularne teraz",
"ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Mastodona.",
@@ -400,9 +431,11 @@
"upload_button.label": "Dodaj zawartość multimedialną (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Przekroczono limit plików do wysłania.",
"upload_error.poll": "Dołączanie plików nie dozwolone z głosowaniami.",
+ "upload_form.audio_description": "Opisz dla osób niesłyszących i niedosłyszących",
"upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących",
"upload_form.edit": "Edytuj",
"upload_form.undo": "Usuń",
+ "upload_form.video_description": "Opisz dla osób niesłyszących, niedosłyszących, niewidomych i niedowidzących",
"upload_modal.analyzing_picture": "Analizowanie obrazu…",
"upload_modal.apply": "Zastosuj",
"upload_modal.description_placeholder": "Pchnąć w tę łódź jeża lub ośm skrzyń fig",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Podgląd ({ratio})",
"upload_progress.label": "Wysyłanie…",
"video.close": "Zamknij film",
+ "video.download": "Pobierz plik",
"video.exit_fullscreen": "Opuść tryb pełnoekranowy",
"video.expand": "Rozszerz film",
"video.fullscreen": "Pełny ekran",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 7c6a1fd22..b45ed4d06 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -1,29 +1,33 @@
{
- "account.add_or_remove_from_list": "Adicionar ou remover de listas",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Adicionar ou Remover de listas",
"account.badges.bot": "Robô",
+ "account.badges.group": "Grupo",
"account.block": "Bloquear @{name}",
- "account.block_domain": "Esconder tudo de {domain}",
+ "account.block_domain": "Bloquear domínio {domain}",
"account.blocked": "Bloqueado",
+ "account.browse_more_on_origin_server": "Encontre mais no perfil original",
"account.cancel_follow_request": "Cancelar solicitação para seguir",
- "account.direct": "Direct Message @{name}",
- "account.domain_blocked": "Domínio escondido",
+ "account.direct": "Enviar toot direto para @{name}",
+ "account.domain_blocked": "Domínio bloqueado",
"account.edit_profile": "Editar perfil",
"account.endorse": "Destacar no perfil",
"account.follow": "Seguir",
"account.followers": "Seguidores",
- "account.followers.empty": "Ninguém segue esse usuário no momento.",
- "account.follows": "Segue",
- "account.follows.empty": "Esse usuário não segue ninguém no momento.",
+ "account.followers.empty": "Nada aqui.",
+ "account.follows": "Seguindo",
+ "account.follows.empty": "Nada aqui.",
"account.follows_you": "Segue você",
- "account.hide_reblogs": "Esconder compartilhamentos de @{name}",
- "account.last_status": "Última atividade",
- "account.link_verified_on": "A posse desse link foi verificada em {date}",
- "account.locked_info": "Essa conta está trancada. Se você a seguir sua solicitação será revisada manualmente.",
+ "account.hide_reblogs": "Ocultar boosts de @{name}",
+ "account.last_status": "Ativo pela última vez",
+ "account.link_verified_on": "Posse deste link foi verificada em {date}",
+ "account.locked_info": "Esta conta está trancada. Sua solicitação para seguir requer aprovação manual do usuário.",
"account.media": "Mídia",
"account.mention": "Mencionar @{name}",
"account.moved_to": "{name} se mudou para:",
"account.mute": "Silenciar @{name}",
- "account.mute_notifications": "Silenciar notificações de @{name}",
+ "account.mute_notifications": "Ocultar notificações de @{name}",
"account.muted": "Silenciado",
"account.never_active": "Nunca",
"account.posts": "Toots",
@@ -31,273 +35,293 @@
"account.report": "Denunciar @{name}",
"account.requested": "Aguardando aprovação. Clique para cancelar a solicitação",
"account.share": "Compartilhar perfil de @{name}",
- "account.show_reblogs": "Mostra compartilhamentos de @{name}",
+ "account.show_reblogs": "Mostrar boosts de @{name}",
"account.unblock": "Desbloquear @{name}",
- "account.unblock_domain": "Desbloquear {domain}",
+ "account.unblock_domain": "Desbloquear domínio {domain}",
"account.unendorse": "Não destacar no perfil",
"account.unfollow": "Deixar de seguir",
- "account.unmute": "Não silenciar @{name}",
- "account.unmute_notifications": "Retirar silêncio das notificações vindas de @{name}",
+ "account.unmute": "Tirar @{name} do mudo",
+ "account.unmute_notifications": "Mostrar notificações de @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Por favor tente novamente após {retry_time, time, medium}.",
- "alert.rate_limited.title": "Limite de tentativas",
- "alert.unexpected.message": "Um erro inesperado ocorreu.",
+ "alert.rate_limited.title": "Frequência limitada",
+ "alert.unexpected.message": "Ocorreu um erro inesperado.",
"alert.unexpected.title": "Eita!",
+ "announcement.announcement": "Anúncio",
"autosuggest_hashtag.per_week": "{count} por semana",
- "boost_modal.combo": "Você pode pressionar {combo} para ignorar este diálogo na próxima vez",
- "bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.",
+ "boost_modal.combo": "Pode pressionar {combo} para pular isto na próxima vez",
+ "bundle_column_error.body": "Ocorreu um problema ao carregar este componente.",
"bundle_column_error.retry": "Tente novamente",
"bundle_column_error.title": "Erro de rede",
"bundle_modal_error.close": "Fechar",
- "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.",
+ "bundle_modal_error.message": "Ocorreu um problema ao carregar este componente.",
"bundle_modal_error.retry": "Tente novamente",
"column.blocks": "Usuários bloqueados",
+ "column.bookmarks": "Salvos",
"column.community": "Local",
- "column.direct": "Mensagens diretas",
+ "column.direct": "Mensagens Diretas",
"column.directory": "Explorar perfis",
- "column.domain_blocks": "Domínios escondidos",
+ "column.domain_blocks": "Domínios bloqueados",
"column.favourites": "Favoritos",
"column.follow_requests": "Seguidores pendentes",
"column.home": "Página inicial",
"column.lists": "Listas",
"column.mutes": "Usuários silenciados",
"column.notifications": "Notificações",
- "column.pins": "Postagens fixadas",
+ "column.pins": "Toots fixados",
"column.public": "Global",
"column_back_button.label": "Voltar",
- "column_header.hide_settings": "Esconder configurações",
+ "column_header.hide_settings": "Ocultar configurações",
"column_header.moveLeft_settings": "Mover coluna para a esquerda",
"column_header.moveRight_settings": "Mover coluna para a direita",
"column_header.pin": "Fixar",
"column_header.show_settings": "Mostrar configurações",
"column_header.unpin": "Desafixar",
"column_subheading.settings": "Configurações",
- "community.column_settings.media_only": "Apenas mídia",
+ "community.column_settings.local_only": "Apenas local",
+ "community.column_settings.media_only": "Somente Mídia",
+ "community.column_settings.remote_only": "Apenas remoto",
"compose_form.direct_message_warning": "Este toot só será enviado aos usuários mencionados.",
- "compose_form.direct_message_warning_learn_more": "Saber mais",
- "compose_form.hashtag_warning": "Esse toot não será listado em nenhuma hashtag por ser não listado. Somente toots públicos podem ser pesquisados por hashtag.",
- "compose_form.lock_disclaimer": "A sua conta não está {locked}. Qualquer pessoa pode te seguir e visualizar postagens direcionadas a apenas seguidores.",
+ "compose_form.direct_message_warning_learn_more": "Saiba mais",
+ "compose_form.hashtag_warning": "Este toot não vai estar listado em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.",
+ "compose_form.lock_disclaimer": "Sua conta não está {locked}. Qualquer pessoa pode te seguir e ver seus toots privados.",
"compose_form.lock_disclaimer.lock": "trancada",
"compose_form.placeholder": "No que você está pensando?",
- "compose_form.poll.add_option": "Adicionar uma opção",
+ "compose_form.poll.add_option": "Adicionar uma escolha",
"compose_form.poll.duration": "Duração da enquete",
- "compose_form.poll.option_placeholder": "Opção {number}",
- "compose_form.poll.remove_option": "Remover essa opção",
- "compose_form.publish": "Publicar",
+ "compose_form.poll.option_placeholder": "Escolha {number}",
+ "compose_form.poll.remove_option": "Remover esta escolha",
+ "compose_form.poll.switch_to_multiple": "Alterar enquete para permitir múltiplas escolhas",
+ "compose_form.poll.switch_to_single": "Alterar enquete para permitir uma única escolha",
+ "compose_form.publish": "TOOT",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Marcar mídia como sensível",
"compose_form.sensitive.marked": "Mídia está marcada como sensível",
"compose_form.sensitive.unmarked": "Mídia não está marcada como sensível",
- "compose_form.spoiler.marked": "O texto está escondido por um aviso de conteúdo",
- "compose_form.spoiler.unmarked": "O texto não está escondido",
- "compose_form.spoiler_placeholder": "Aviso de conteúdo",
+ "compose_form.spoiler.marked": "Com Aviso de Conteúdo",
+ "compose_form.spoiler.unmarked": "Sem Aviso de Conteúdo",
+ "compose_form.spoiler_placeholder": "Aviso de Conteúdo aqui",
"confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Bloquear e denunciar",
"confirmations.block.confirm": "Bloquear",
- "confirmations.block.message": "Você tem certeza de que quer bloquear {name}?",
+ "confirmations.block.message": "Você tem certeza de que deseja bloquear {name}?",
"confirmations.delete.confirm": "Excluir",
- "confirmations.delete.message": "Você tem certeza de que quer excluir esta postagem?",
+ "confirmations.delete.message": "Tem certeza que quer excluir este status?",
"confirmations.delete_list.confirm": "Excluir",
- "confirmations.delete_list.message": "Você tem certeza que quer deletar permanentemente a lista?",
- "confirmations.domain_block.confirm": "Esconder o domínio inteiro",
- "confirmations.domain_block.message": "Você quer mesmo bloquear {domain} inteiro? Na maioria dos casos, silenciar ou bloquear alguns usuários é o suficiente e o recomendado. Você não vai ver conteúdo desse domínio em nenhuma das timelines públicas ou nas suas notificações. Seus seguidores desse domínio serão removidos.",
+ "confirmations.delete_list.message": "Você tem certeza de que deseja excluir esta lista?",
+ "confirmations.domain_block.confirm": "Bloquear domínio inteiro",
+ "confirmations.domain_block.message": "Você tem certeza de que deseja bloquear tudo de {domain}? Você não verá mais o conteúdo desta instância em nenhuma linha do tempo pública ou nas suas notificações. Seus seguidores desta instância serão removidos.",
"confirmations.logout.confirm": "Sair",
- "confirmations.logout.message": "Tem certeza que deseja encerrar a sessão?",
+ "confirmations.logout.message": "Você tem certeza de que deseja sair?",
"confirmations.mute.confirm": "Silenciar",
- "confirmations.mute.explanation": "Isto irá esconder postagens e postagens que mencionam, mas ainda vai permitir que eles vejam suas publicações e sigam você.",
- "confirmations.mute.message": "Você tem certeza de que quer silenciar {name}?",
- "confirmations.redraft.confirm": "Apagar & usar como rascunho",
- "confirmations.redraft.message": "Você tem certeza que deseja apagar esse status e usá-lo como rascunho? Seus compartilhamentos e favoritos serão perdidos e as respostas ao toot original ficarão desconectadas.",
+ "confirmations.mute.explanation": "Isso ocultará toots deles e toots mencionando-os, mas ainda permitirá que eles vejam seus toots e te sigam.",
+ "confirmations.mute.message": "Você tem certeza de que deseja silenciar {name}?",
+ "confirmations.redraft.confirm": "Excluir e rascunhar",
+ "confirmations.redraft.message": "Tem certeza que quer excluir este status e re-rascunhá-lo? Favoritos e boots vão ser perdidos, e as respostas ao post original vão ficar órfãs.",
"confirmations.reply.confirm": "Responder",
- "confirmations.reply.message": "Responder agora vai sobrescrever a mensagem que você está compondo. Você tem certeza que quer continuar?",
+ "confirmations.reply.message": "Responder agora sobrescreverá o toot que você está compondo. Deseja continuar?",
"confirmations.unfollow.confirm": "Deixar de seguir",
- "confirmations.unfollow.message": "Você tem certeza de que quer deixar de seguir {name}?",
+ "confirmations.unfollow.message": "Você tem certeza de que deseja deixar de seguir {name}?",
"conversation.delete": "Excluir conversa",
"conversation.mark_as_read": "Marcar como lida",
"conversation.open": "Ver conversa",
"conversation.with": "Com {names}",
- "directory.federated": "De fediverso conhecido",
- "directory.local": "De {domain} apenas",
+ "directory.federated": "Do fediverso conhecido",
+ "directory.local": "Apenas do {domain}",
"directory.new_arrivals": "Acabaram de chegar",
- "directory.recently_active": "Reverta esta propriedade para seu valor padrão",
- "embed.instructions": "Incorpore esta postagem em seu site copiando o código abaixo.",
- "embed.preview": "Aqui está uma previsão de como ficará:",
- "emoji_button.activity": "Atividades",
- "emoji_button.custom": "Customizados",
+ "directory.recently_active": "Ativos recentemente",
+ "embed.instructions": "Incorpore este status em seu website ao copiar o código abaixo.",
+ "embed.preview": "Aqui está como vai ficar:",
+ "emoji_button.activity": "Atividade",
+ "emoji_button.custom": "Personalizados",
"emoji_button.flags": "Bandeiras",
- "emoji_button.food": "Comidas & Bebidas",
- "emoji_button.label": "Inserir Emoji",
+ "emoji_button.food": "Comida & Bebida",
+ "emoji_button.label": "Inserir emoji",
"emoji_button.nature": "Natureza",
- "emoji_button.not_found": "Não tem emojos! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.not_found": "Sem emojis! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objetos",
"emoji_button.people": "Pessoas",
"emoji_button.recent": "Usados frequentemente",
- "emoji_button.search": "Buscar...",
- "emoji_button.search_results": "Resultados da busca",
+ "emoji_button.search": "Pesquisar...",
+ "emoji_button.search_results": "Resultados da pesquisa",
"emoji_button.symbols": "Símbolos",
- "emoji_button.travel": "Viagens & Lugares",
- "empty_column.account_timeline": "Não há toots aqui!",
+ "emoji_button.travel": "Viagem & Lugares",
+ "empty_column.account_timeline": "Nada aqui!",
"empty_column.account_unavailable": "Perfil indisponível",
- "empty_column.blocks": "Você ainda não bloqueou nenhum usuário.",
- "empty_column.community": "A timeline local está vazia. Escreva algo publicamente para começar!",
- "empty_column.direct": "Você não tem nenhuma mensagem direta ainda. Quando você enviar ou receber uma, as mensagens aparecerão por aqui.",
- "empty_column.domain_blocks": "Ainda não há nenhum domínio escondido.",
- "empty_column.favourited_statuses": "Você ainda não tem nenhum toot favorito. Quando você favoritar um toot, ele aparecerá aqui.",
- "empty_column.favourites": "Ninguém favoritou esse toot até agora. Quando alguém favoritar, a pessoa aparecerá aqui.",
- "empty_column.follow_requests": "Você não tem nenhum pedido de seguir por agora. Quando você receber um, ele aparecerá aqui.",
- "empty_column.hashtag": "Ainda não há qualquer conteúdo com essa hashtag.",
- "empty_column.home": "Você ainda não segue usuário algum. Visite a timeline {public} ou use o buscador para procurar e conhecer outros usuários.",
- "empty_column.home.public_timeline": "global",
- "empty_column.list": "Ainda não há nada nesta lista. Quando membros dessa lista fizerem novas postagens, elas aparecerão aqui.",
- "empty_column.lists": "Você ainda não tem nenhuma lista. Quando você criar uma, ela aparecerá aqui.",
- "empty_column.mutes": "Você ainda não silenciou nenhum usuário.",
- "empty_column.notifications": "Você ainda não possui notificações. Interaja com outros usuários para começar a conversar.",
- "empty_column.public": "Não há nada aqui! Escreva algo publicamente ou siga manualmente usuários de outras instâncias",
- "error.unexpected_crash.explanation": "Devido a um bug em nosso código ou a um problema de compatibilidade do navegador, esta página não pode ser exibida corretamente.",
- "error.unexpected_crash.next_steps": "Tente atualizar a página. Se isso não ajudar, você ainda pode usar Mastodon através de um navegador diferente ou aplicativo nativo.",
- "errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace para a área de transferência",
- "errors.unexpected_crash.report_issue": "Reportar problema",
- "follow_request.authorize": "Autorizar",
- "follow_request.reject": "Rejeitar",
+ "empty_column.blocks": "Nada aqui.",
+ "empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar um toot, ele aparecerá aqui.",
+ "empty_column.community": "A linha do tempo local está vazia. Escreva algo publicamente para fazer a bola rolar!",
+ "empty_column.direct": "Nada aqui. Quando você enviar ou receber toots diretos, eles aparecerão aqui.",
+ "empty_column.domain_blocks": "Não há domínios bloqueados ainda.",
+ "empty_column.favourited_statuses": "Nada aqui. Quando você favoritar um toot, ele aparecerá aqui.",
+ "empty_column.favourites": "Nada aqui. Quando alguém favoritar, o autor aparecerá aqui.",
+ "empty_column.follow_requests": "Nada aqui. Quando você tiver seguidores pendentes, eles aparecerão aqui.",
+ "empty_column.hashtag": "Nada aqui.",
+ "empty_column.home": "Sua linha do tempo está vazia! Visite {public} ou use a pesquisa para começar e conhecer outros usuários.",
+ "empty_column.home.public_timeline": "a linha do tempo pública",
+ "empty_column.list": "Não há nada nesta lista ainda. Quando membros desta lista postarem novos statuses, eles vão aparecer aqui.",
+ "empty_column.lists": "Nada aqui. Quando você criar listas, elas aparecerão aqui.",
+ "empty_column.mutes": "Nada aqui.",
+ "empty_column.notifications": "Nada aqui. Interaja com outros usuários para começar a conversar.",
+ "empty_column.public": "Não há nada aqui! Escreva algo publicamente, ou siga manualmente usuários de outros servidores para enchê-la",
+ "error.unexpected_crash.explanation": "Devido a um bug em nosso código ou um problema de compatibilidade de navegador, esta página não pôde ser exibida corretamente.",
+ "error.unexpected_crash.next_steps": "Tente atualizar a página. Se não resolver, você ainda pode conseguir usar o Mastodon por meio de um navegador ou app nativo diferente.",
+ "errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace para área de transferência",
+ "errors.unexpected_crash.report_issue": "Denunciar problema",
+ "follow_request.authorize": "Aprovar",
+ "follow_request.reject": "Vetar",
+ "follow_requests.unlocked_explanation": "Embora sua conta não esteja trancada, o staff de {domain} achou que você podia querer revisar pedidos para te seguir destas contas manualmente.",
"getting_started.developers": "Desenvolvedores",
"getting_started.directory": "Diretório de perfis",
"getting_started.documentation": "Documentação",
"getting_started.heading": "Primeiros passos",
- "getting_started.invite": "Convide pessoas",
- "getting_started.open_source_notice": "Mastodon é um software de código aberto. Você pode contribuir ou reportar problemas na página do GitHub do projeto: {github}.",
- "getting_started.security": "Segurança",
+ "getting_started.invite": "Convidar pessoas",
+ "getting_started.open_source_notice": "Mastodon é um software de código aberto. Você pode contribuir ou reportar problemas na página do projeto no GitHub em {github}.",
+ "getting_started.security": "Configurações da conta",
"getting_started.terms": "Termos de serviço",
"hashtag.column_header.tag_mode.all": "e {additional}",
"hashtag.column_header.tag_mode.any": "ou {additional}",
"hashtag.column_header.tag_mode.none": "sem {additional}",
"hashtag.column_settings.select.no_options_message": "Nenhuma sugestão encontrada",
- "hashtag.column_settings.select.placeholder": "Adicione as hashtags…",
- "hashtag.column_settings.tag_mode.all": "Todas essas",
- "hashtag.column_settings.tag_mode.any": "Qualquer uma dessas",
- "hashtag.column_settings.tag_mode.none": "Nenhuma dessas",
- "hashtag.column_settings.tag_toggle": "Incluir outras hashtags nessa coluna",
+ "hashtag.column_settings.select.placeholder": "Insira hashtags…",
+ "hashtag.column_settings.tag_mode.all": "Todas estas",
+ "hashtag.column_settings.tag_mode.any": "Qualquer uma destas",
+ "hashtag.column_settings.tag_mode.none": "Nenhuma destas",
+ "hashtag.column_settings.tag_toggle": "Incluir tags adicionais para esta coluna",
"home.column_settings.basic": "Básico",
- "home.column_settings.show_reblogs": "Mostrar compartilhamentos",
- "home.column_settings.show_replies": "Mostrar as respostas",
+ "home.column_settings.show_reblogs": "Mostrar boosts",
+ "home.column_settings.show_replies": "Mostrar respostas",
+ "home.hide_announcements": "Esconder anúncios",
+ "home.show_announcements": "Mostrar anúncios",
"intervals.full.days": "{number, plural, one {# dia} other {# dias}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
"introduction.federation.action": "Próximo",
- "introduction.federation.federated.headline": "Global",
- "introduction.federation.federated.text": "Posts públicos de outros servidores do fediverso vão aparecer na timeline global.",
+ "introduction.federation.federated.headline": "Federada",
+ "introduction.federation.federated.text": "Posts públicos de outros servidores do fediverso vão aparecer na linha do tempo federada.",
"introduction.federation.home.headline": "Início",
- "introduction.federation.home.text": "Posts de pessoas que você segue vão aparecer na sua página inicial. Você pode seguir pessoas de qualquer servidor!",
+ "introduction.federation.home.text": "Posts de pessoas que você segue vão aparecer no seu feed de início. Você pode seguir qualquer pessoa em qualquer servidor!",
"introduction.federation.local.headline": "Local",
- "introduction.federation.local.text": "Posts públicos de pessoas no mesmo servidor que você vão aparecer na timeline local.",
- "introduction.interactions.action": "Finalizar o tutorial!",
+ "introduction.federation.local.text": "Posts públicos de pessoas no mesmo servidor que você vão aparecer na linha do tempo local.",
+ "introduction.interactions.action": "Terminar tutorial!",
"introduction.interactions.favourite.headline": "Favoritos",
- "introduction.interactions.favourite.text": "Você pode salvar um toot pra mais tarde, e deixar a pessoa que postou saber que você gostou, favoritando-o.",
- "introduction.interactions.reblog.headline": "Compartilhamento",
- "introduction.interactions.reblog.text": "Você pode mostrar toots de outras pessoas aos seus seguidores compartilhando.",
+ "introduction.interactions.favourite.text": "Ao favoritar, você sinaliza ao autor que você gostou do toot.",
+ "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.text": "Ao dar boost, você compartilha toots de outras pessoas para seus seguidores.",
"introduction.interactions.reply.headline": "Responder",
- "introduction.interactions.reply.text": "Você pode responder a toots de outras pessoas e aos seus, e isso vai uni-los em uma conversa.",
- "introduction.welcome.action": "Vamos!",
+ "introduction.interactions.reply.text": "Você pode responder aos toots de outras pessoas e formar uma conversa ou responder aos seus e formar uma sequência.",
+ "introduction.welcome.action": "Vamos lá!",
"introduction.welcome.headline": "Primeiros passos",
- "introduction.welcome.text": "Boas vindas ao fediverso! Em alguns momentos, você vai poder transmitir mensagens e falar com pessoas amigas através de uma variedade de servidores. Mas esse servidor, {domain}, é especial—é onde o seu perfil está hospedado, então lembre do nome.",
- "keyboard_shortcuts.back": "para navegar de volta",
- "keyboard_shortcuts.blocked": "para abrir a lista de usuários bloqueados",
- "keyboard_shortcuts.boost": "para compartilhar",
- "keyboard_shortcuts.column": "Focar um status em uma das colunas",
- "keyboard_shortcuts.compose": "para focar a área de redação",
+ "introduction.welcome.text": "Boas vindas ao fediverso! Em alguns momentos, você vai poder transmitir mensagens e falar com pessoas amigas através de uma variedade de servidores. Mas este servidor, {domain}, é especial—é onde seu perfil está hospedado, então lembre do nome dele.",
+ "keyboard_shortcuts.back": "voltar",
+ "keyboard_shortcuts.blocked": "abrir lista de usuários bloqueados",
+ "keyboard_shortcuts.boost": "dar boost",
+ "keyboard_shortcuts.column": "para focar um status de uma das colunas",
+ "keyboard_shortcuts.compose": "focar na composição",
"keyboard_shortcuts.description": "Descrição",
- "keyboard_shortcuts.direct": "para abrir a coluna de mensagens diretas",
+ "keyboard_shortcuts.direct": "abrir Mensagens Diretas",
"keyboard_shortcuts.down": "para mover para baixo na lista",
- "keyboard_shortcuts.enter": "para expandir um status",
- "keyboard_shortcuts.favourite": "para adicionar aos favoritos",
- "keyboard_shortcuts.favourites": "para abrir a lista de favoritos",
- "keyboard_shortcuts.federated": "para abrir a timeline global",
+ "keyboard_shortcuts.enter": "para abrir status",
+ "keyboard_shortcuts.favourite": "favoritar",
+ "keyboard_shortcuts.favourites": "abrir os favoritos",
+ "keyboard_shortcuts.federated": "para abrir linha do tempo federada",
"keyboard_shortcuts.heading": "Atalhos de teclado",
- "keyboard_shortcuts.home": "para abrir a página inicial",
+ "keyboard_shortcuts.home": "para abrir linha do tempo de início",
"keyboard_shortcuts.hotkey": "Atalho",
- "keyboard_shortcuts.legend": "para mostrar essa legenda",
- "keyboard_shortcuts.local": "para abrir a timeline local",
- "keyboard_shortcuts.mention": "para mencionar o autor",
- "keyboard_shortcuts.muted": "para abrir a lista de usuários silenciados",
- "keyboard_shortcuts.my_profile": "para abrir o seu perfil",
- "keyboard_shortcuts.notifications": "para abrir a coluna de notificações",
- "keyboard_shortcuts.pinned": "para abrir a lista de toots fixados",
- "keyboard_shortcuts.profile": "para abrir o perfil do autor",
+ "keyboard_shortcuts.legend": "mostrar estes atalhos",
+ "keyboard_shortcuts.local": "para abrir linha do tempo local",
+ "keyboard_shortcuts.mention": "para mencionar autor",
+ "keyboard_shortcuts.muted": "abrir lista de usuários silenciados",
+ "keyboard_shortcuts.my_profile": "para abrir seu perfil",
+ "keyboard_shortcuts.notifications": "para abrir coluna de notificações",
+ "keyboard_shortcuts.open_media": "para abrir mídia",
+ "keyboard_shortcuts.pinned": "abrir toots fixados",
+ "keyboard_shortcuts.profile": "para abrir perfil do autor",
"keyboard_shortcuts.reply": "para responder",
- "keyboard_shortcuts.requests": "para abrir a lista de seguidores pendentes",
- "keyboard_shortcuts.search": "para focar a pesquisa",
- "keyboard_shortcuts.start": "para abrir a coluna \"primeiros passos\"",
- "keyboard_shortcuts.toggle_hidden": "mostrar/esconder o texto com aviso de conteúdo",
- "keyboard_shortcuts.toggle_sensitivity": "mostrar/esconder mídia",
- "keyboard_shortcuts.toot": "para compor um novo toot",
- "keyboard_shortcuts.unfocus": "para remover o foco da área de composição/pesquisa",
+ "keyboard_shortcuts.requests": "abrir lista de seguidores pendentes",
+ "keyboard_shortcuts.search": "para focar pesquisa",
+ "keyboard_shortcuts.spoilers": "para mostrar/ocultar o campo AC",
+ "keyboard_shortcuts.start": "para abrir coluna \"primeiros passos\"",
+ "keyboard_shortcuts.toggle_hidden": "mostrar/ocultar o toot com Aviso de Conteúdo",
+ "keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar mídia",
+ "keyboard_shortcuts.toot": "para começar um toot novo em folha",
+ "keyboard_shortcuts.unfocus": "para desfocar de área de texto de composição/pesquisa",
"keyboard_shortcuts.up": "para mover para cima na lista",
"lightbox.close": "Fechar",
"lightbox.next": "Próximo",
"lightbox.previous": "Anterior",
"lightbox.view_context": "Ver contexto",
- "lists.account.add": "Adicionar a listas",
+ "lists.account.add": "Adicionar à lista",
"lists.account.remove": "Remover da lista",
"lists.delete": "Excluir lista",
"lists.edit": "Editar lista",
- "lists.edit.submit": "Mudar o título",
- "lists.new.create": "Adicionar lista",
- "lists.new.title_placeholder": "Novo título da lista",
+ "lists.edit.submit": "Renomear",
+ "lists.new.create": "Criar lista",
+ "lists.new.title_placeholder": "Nome da lista",
"lists.search": "Procurar entre as pessoas que você segue",
"lists.subheading": "Suas listas",
"load_pending": "{count, plural, one {# novo item} other {# novos items}}",
"loading_indicator.label": "Carregando...",
- "media_gallery.toggle_visible": "Esconder/Mostrar",
+ "media_gallery.toggle_visible": "Esconder mídia",
"missing_indicator.label": "Não encontrado",
"missing_indicator.sublabel": "Esse recurso não pôde ser encontrado",
- "mute_modal.hide_notifications": "Esconder notificações deste usuário?",
- "navigation_bar.apps": "Apps",
+ "mute_modal.hide_notifications": "Ocultar notificações deste usuário?",
+ "navigation_bar.apps": "Aplicativos",
"navigation_bar.blocks": "Usuários bloqueados",
- "navigation_bar.community_timeline": "Local",
- "navigation_bar.compose": "Compor um novo toot",
+ "navigation_bar.bookmarks": "Salvos",
+ "navigation_bar.community_timeline": "Linha do tempo local",
+ "navigation_bar.compose": "Compor novo toot",
"navigation_bar.direct": "Mensagens diretas",
"navigation_bar.discover": "Descobrir",
- "navigation_bar.domain_blocks": "Domínios escondidos",
+ "navigation_bar.domain_blocks": "Domínios bloqueados",
"navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.favourites": "Favoritos",
- "navigation_bar.filters": "Palavras silenciadas",
+ "navigation_bar.filters": "Palavras filtradas",
"navigation_bar.follow_requests": "Seguidores pendentes",
"navigation_bar.follows_and_followers": "Seguindo e seguidores",
- "navigation_bar.info": "Mais informações",
+ "navigation_bar.info": "Sobre este servidor",
"navigation_bar.keyboard_shortcuts": "Atalhos de teclado",
"navigation_bar.lists": "Listas",
"navigation_bar.logout": "Sair",
"navigation_bar.mutes": "Usuários silenciados",
"navigation_bar.personal": "Pessoal",
- "navigation_bar.pins": "Postagens fixadas",
+ "navigation_bar.pins": "Toots fixados",
"navigation_bar.preferences": "Preferências",
- "navigation_bar.public_timeline": "Global",
+ "navigation_bar.public_timeline": "Linha do tempo federada",
"navigation_bar.security": "Segurança",
- "notification.favourite": "{name} adicionou a sua postagem aos favoritos",
+ "notification.favourite": "{name} favoritou seu status",
"notification.follow": "{name} te seguiu",
+ "notification.follow_request": "{name} quer te seguir",
"notification.mention": "{name} te mencionou",
- "notification.poll": "Uma enquete em que você votou chegou ao fim",
- "notification.reblog": "{name} compartilhou a sua postagem",
+ "notification.own_poll": "Sua enquete terminou",
+ "notification.poll": "Uma enquete que você votou terminou",
+ "notification.reblog": "{name} boostou seu status",
"notifications.clear": "Limpar notificações",
- "notifications.clear_confirmation": "Você tem certeza de que quer limpar todas as suas notificações permanentemente?",
+ "notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?",
"notifications.column_settings.alert": "Notificações no computador",
"notifications.column_settings.favourite": "Favoritos:",
"notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorias",
"notifications.column_settings.filter_bar.category": "Barra de filtro rápido",
"notifications.column_settings.filter_bar.show": "Mostrar",
- "notifications.column_settings.follow": "Novos seguidores:",
+ "notifications.column_settings.follow": "Seguidores:",
+ "notifications.column_settings.follow_request": "Seguidores pendentes:",
"notifications.column_settings.mention": "Menções:",
- "notifications.column_settings.poll": "Resultados da enquete:",
+ "notifications.column_settings.poll": "Enquetes:",
"notifications.column_settings.push": "Enviar notificações",
- "notifications.column_settings.reblog": "Compartilhamento:",
+ "notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Mostrar nas colunas",
- "notifications.column_settings.sound": "Reproduzir som",
+ "notifications.column_settings.sound": "Tocar som",
"notifications.filter.all": "Tudo",
- "notifications.filter.boosts": "Compartilhamentos",
+ "notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favoritos",
- "notifications.filter.follows": "Seguidores",
+ "notifications.filter.follows": "Seguindo",
"notifications.filter.mentions": "Menções",
- "notifications.filter.polls": "Resultados da enquete",
+ "notifications.filter.polls": "Resultados de enquete",
"notifications.group": "{count} notificações",
- "poll.closed": "Fechada",
+ "poll.closed": "Fechou",
"poll.refresh": "Atualizar",
"poll.total_people": "{count, plural, one {# pessoa} other {# pessoas}}",
"poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
@@ -305,53 +329,55 @@
"poll.voted": "Você votou nesta resposta",
"poll_button.add_poll": "Adicionar uma enquete",
"poll_button.remove_poll": "Remover enquete",
- "privacy.change": "Ajustar a privacidade da mensagem",
- "privacy.direct.long": "Apenas para usuários mencionados",
+ "privacy.change": "Ajustar privacidade de status",
+ "privacy.direct.long": "Visível somente para usuários mencionados",
"privacy.direct.short": "Direta",
- "privacy.private.long": "Apenas para seus seguidores",
- "privacy.private.short": "Privada",
- "privacy.public.long": "Publicar em todos os feeds",
+ "privacy.private.long": "Visível somente para seguidores",
+ "privacy.private.short": "Seguidores-somente",
+ "privacy.public.long": "Visível para todos, mostrado em linhas do tempo públicas",
"privacy.public.short": "Pública",
- "privacy.unlisted.long": "Não publicar em feeds públicos",
- "privacy.unlisted.short": "Não listada",
+ "privacy.unlisted.long": "Visível para todos, mas não em linhas do tempo públicas",
+ "privacy.unlisted.short": "Não-listada",
"refresh": "Atualizar",
"regeneration_indicator.label": "Carregando…",
- "regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!",
+ "regeneration_indicator.sublabel": "Seu feed de início está sendo preparado!",
"relative_time.days": "{number}d",
"relative_time.hours": "{number}h",
"relative_time.just_now": "agora",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "hoje",
"reply_indicator.cancel": "Cancelar",
"report.forward": "Encaminhar para {target}",
- "report.forward_hint": "Essa conta pertence à um outro servidor. Encaminhar uma cópia da denúncia com seus dados tornados anônimos para esse servidor?",
- "report.hint": "A sua denúncia será enviada aos moderadores da instância. Você pode adicionar uma explicação de porque você está denunciando essa conta abaixo:",
+ "report.forward_hint": "A conta é de outro servidor. Enviar uma cópia anonimizada da denúncia para lá também?",
+ "report.hint": "Sua denúncia vai ser enviada aos moderadores de seu servidor. Você pode prover uma explicação de por que está denunciando essa conta abaixo:",
"report.placeholder": "Comentários adicionais",
"report.submit": "Enviar",
- "report.target": "Denunciar",
+ "report.target": "Denunciando {target}",
"search.placeholder": "Pesquisar",
- "search_popout.search_format": "Formato de busca avançado",
- "search_popout.tips.full_text": "Texto simples retorna status que você escreveu, favoritou, compartilhou ou em que tenha sido mencionado; também retorna nomes de exibição, usuários e hashtags correspondentes.",
+ "search_popout.search_format": "Formato de pesquisa avançada",
+ "search_popout.tips.full_text": "Texto simples retorna statuses que você escreveu, favoritou, deu boost, ou em que foi mencionado, assim como nomes de usuário e de exibição, e hashtags correspondentes.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status",
- "search_popout.tips.text": "Texto simples retorna nomes de exibição, usuários e hashtags correspondentes",
+ "search_popout.tips.text": "Texto simples retorna nomes de exibição e de usuário, e hashtags correspondentes",
"search_popout.tips.user": "usuário",
"search_results.accounts": "Pessoas",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está habilitado neste servidor Mastodon.",
+ "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.",
"search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
"status.admin_account": "Abrir interface de moderação para @{name}",
- "status.admin_status": "Abrir esse status na interface de moderação",
+ "status.admin_status": "Abrir este status na interface de moderação",
"status.block": "Bloquear @{name}",
- "status.cancel_reblog_private": "Desfazer compartilhamento",
- "status.cannot_reblog": "Esta postagem não pode ser compartilhada",
- "status.copy": "Copiar o link para o status",
+ "status.bookmark": "Salvar",
+ "status.cancel_reblog_private": "Desboostar",
+ "status.cannot_reblog": "Este post não pode ser dado boost",
+ "status.copy": "Copiar link para status",
"status.delete": "Excluir",
"status.detailed_status": "Visão detalhada da conversa",
- "status.direct": "Enviar mensagem direta a @{name}",
+ "status.direct": "Enviar mensagem direta para @{name}",
"status.embed": "Incorporar",
- "status.favourite": "Adicionar aos favoritos",
+ "status.favourite": "Favoritar",
"status.filtered": "Filtrado",
"status.load_more": "Carregar mais",
"status.media_hidden": "Mídia escondida",
@@ -359,65 +385,73 @@
"status.more": "Mais",
"status.mute": "Silenciar @{name}",
"status.mute_conversation": "Silenciar conversa",
- "status.open": "Expandir",
+ "status.open": "Expandir este status",
"status.pin": "Fixar no perfil",
"status.pinned": "Toot fixado",
"status.read_more": "Ler mais",
- "status.reblog": "Compartilhar",
- "status.reblog_private": "Compartilhar com a audiência original",
- "status.reblogged_by": "{name} compartilhou",
- "status.reblogs.empty": "Ninguém compartilhou esse toot até agora. Quando alguém o fizer, eles aparecerão aqui.",
- "status.redraft": "Apagar & usar como rascunho",
+ "status.reblog": "Boostar",
+ "status.reblog_private": "Boostar para audiência original",
+ "status.reblogged_by": "{name} boostou",
+ "status.reblogs.empty": "Nada aqui. Quando alguém der boost, o autor aparecerá aqui.",
+ "status.redraft": "Excluir & re-rascunhar",
+ "status.remove_bookmark": "Remover marcador",
"status.reply": "Responder",
- "status.replyAll": "Responder à sequência",
+ "status.replyAll": "Responder a thread",
"status.report": "Denunciar @{name}",
"status.sensitive_warning": "Conteúdo sensível",
"status.share": "Compartilhar",
"status.show_less": "Mostrar menos",
- "status.show_less_all": "Mostrar menos para todas as mensagens",
+ "status.show_less_all": "Mostrar menos para todos os toots",
"status.show_more": "Mostrar mais",
- "status.show_more_all": "Mostrar mais para todas as mensagens",
- "status.show_thread": "Mostrar sequência",
+ "status.show_more_all": "Mostrar mais para todos os toots",
+ "status.show_thread": "Mostrar conversa",
"status.uncached_media_warning": "Não disponível",
- "status.unmute_conversation": "Desativar silêncio desta conversa",
+ "status.unmute_conversation": "Tirar conversa do mudo",
"status.unpin": "Desafixar do perfil",
- "suggestions.dismiss": "Ignorar a sugestão",
- "suggestions.header": "Você pode se interessar por…",
- "tabs_bar.federated_timeline": "Global",
- "tabs_bar.home": "Página inicial",
+ "suggestions.dismiss": "Ignorar sugestão",
+ "suggestions.header": "Você pode estar interessado em…",
+ "tabs_bar.federated_timeline": "Federada",
+ "tabs_bar.home": "Início",
"tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notificações",
- "tabs_bar.search": "Buscar",
+ "tabs_bar.search": "Pesquisar",
"time_remaining.days": "{number, plural, one {# dia restante} other {# dias restantes}}",
"time_remaining.hours": "{number, plural, one {# hora restante} other {# horas restantes}}",
"time_remaining.minutes": "{number, plural, one {# minuto restante} other {# minutos restantes}}",
- "time_remaining.moments": "Momentos restantes",
+ "time_remaining.moments": "Momentos faltantes",
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre",
+ "timeline_hint.remote_resource_not_displayed": "{resource} de outros servidores não são exibidos.",
+ "timeline_hint.resources.followers": "Seguidores",
+ "timeline_hint.resources.follows": "Seguindo",
+ "timeline_hint.resources.statuses": "Toots mais antigos",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando",
"trends.trending_now": "Em alta no momento",
- "ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.",
- "upload_area.title": "Arraste e solte para enviar",
- "upload_button.label": "Adicionar mídia (JPEG, PNG, GIF, WebM, MP4, MOV)",
- "upload_error.limit": "Limite de envio de arquivos excedido.",
- "upload_error.poll": "Envio de arquivos não é permitido com enquetes.",
- "upload_form.description": "Descreva a imagem para deficientes visuais",
+ "ui.beforeunload": "Seu rascunho vai ser perdido se você sair do Mastodon.",
+ "upload_area.title": "Arraste & solte para fazer upload",
+ "upload_button.label": "Adicionar mídia ({formats})",
+ "upload_error.limit": "Limite de upload de arquivos excedido.",
+ "upload_error.poll": "Não é possível fazer upload de arquivos com enquetes.",
+ "upload_form.audio_description": "Descrever para pessoas com deficiência auditiva",
+ "upload_form.description": "Descreva para deficientes visuais",
"upload_form.edit": "Editar",
- "upload_form.undo": "Remover",
+ "upload_form.undo": "Excluir",
+ "upload_form.video_description": "Descreva para pessoas com deficiência auditiva ou visual",
"upload_modal.analyzing_picture": "Analisando imagem…",
"upload_modal.apply": "Aplicar",
- "upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente",
+ "upload_modal.description_placeholder": "Um pequeno jabuti xereta viu dez cegonhas felizes",
"upload_modal.detect_text": "Detectar texto da imagem",
"upload_modal.edit_media": "Editar mídia",
- "upload_modal.hint": "Clique ou arraste o círculo na visualização para escolher o ponto focal que sempre será visto em todas as miniaturas.",
+ "upload_modal.hint": "Clique ou arraste o círculo na prévia para escolher o ponto focal que vai estar sempre visível em todas as thumbnails.",
"upload_modal.preview_label": "Prévia ({ratio})",
- "upload_progress.label": "Salvando...",
+ "upload_progress.label": "Fazendo upload...",
"video.close": "Fechar vídeo",
+ "video.download": "Fazer download de arquivo",
"video.exit_fullscreen": "Sair da tela cheia",
"video.expand": "Expandir vídeo",
"video.fullscreen": "Tela cheia",
- "video.hide": "Esconder vídeo",
- "video.mute": "Silenciar",
- "video.pause": "Parar",
- "video.play": "Reproduzir",
- "video.unmute": "Retirar silêncio"
+ "video.hide": "Ocultar vídeo",
+ "video.mute": "Colocar no mudo",
+ "video.pause": "Pausar",
+ "video.play": "Tocar",
+ "video.unmute": "Tirar do mudo"
}
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index 859dc1991..2697b0a0c 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -1,10 +1,14 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Adicionar ou remover das listas",
"account.badges.bot": "Robô",
+ "account.badges.group": "Grupo",
"account.block": "Bloquear @{name}",
"account.block_domain": "Esconder tudo do domínio {domain}",
"account.blocked": "Bloqueado",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.browse_more_on_origin_server": "Encontre mais no perfil original",
+ "account.cancel_follow_request": "Cancelar pedido de seguidor",
"account.direct": "Mensagem directa @{name}",
"account.domain_blocked": "Domínio escondido",
"account.edit_profile": "Editar perfil",
@@ -16,20 +20,20 @@
"account.follows.empty": "Este utilizador ainda não segue alguém.",
"account.follows_you": "É teu seguidor",
"account.hide_reblogs": "Esconder partilhas de @{name}",
- "account.last_status": "Last active",
+ "account.last_status": "Última atividade",
"account.link_verified_on": "A posse deste link foi verificada em {date}",
- "account.locked_info": "O estatuto de privacidade desta conta é fechado. O dono revê manualmente que a pode seguir.",
- "account.media": "Média",
+ "account.locked_info": "O estatuto de privacidade desta conta é fechado. O dono revê manualmente quem a pode seguir.",
+ "account.media": "Media",
"account.mention": "Mencionar @{name}",
"account.moved_to": "{name} mudou a sua conta para:",
"account.mute": "Silenciar @{name}",
"account.mute_notifications": "Silenciar notificações de @{name}",
"account.muted": "Silenciada",
- "account.never_active": "Never",
+ "account.never_active": "Nunca",
"account.posts": "Publicações",
"account.posts_with_replies": "Publicações e respostas",
"account.report": "Denunciar @{name}",
- "account.requested": "A aguardar aprovação. Clique para cancelar o pedido de seguimento",
+ "account.requested": "A aguardar aprovação. Clique para cancelar o pedido de seguidor",
"account.share": "Partilhar o perfil @{name}",
"account.show_reblogs": "Mostrar partilhas de @{name}",
"account.unblock": "Desbloquear @{name}",
@@ -38,11 +42,16 @@
"account.unfollow": "Deixar de seguir",
"account.unmute": "Não silenciar @{name}",
"account.unmute_notifications": "Deixar de silenciar @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Volte a tentar depois das {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Limite de tentativas",
"alert.unexpected.message": "Ocorreu um erro inesperado.",
"alert.unexpected.title": "Bolas!",
- "autosuggest_hashtag.per_week": "{count} per week",
+ "announcement.announcement": "Anúncio",
+ "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
"bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.",
"bundle_column_error.retry": "Tente de novo",
@@ -51,9 +60,10 @@
"bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.",
"bundle_modal_error.retry": "Tente de novo",
"column.blocks": "Utilizadores Bloqueados",
+ "column.bookmarks": "Itens salvos",
"column.community": "Cronologia local",
"column.direct": "Mensagens directas",
- "column.directory": "Browse profiles",
+ "column.directory": "Procurar perfis",
"column.domain_blocks": "Domínios escondidos",
"column.favourites": "Favoritos",
"column.follow_requests": "Seguidores pendentes",
@@ -71,25 +81,29 @@
"column_header.show_settings": "Mostrar configurações",
"column_header.unpin": "Desafixar",
"column_subheading.settings": "Configurações",
- "community.column_settings.media_only": "Somente multimédia",
+ "community.column_settings.local_only": "Local apenas",
+ "community.column_settings.media_only": "Somente media",
+ "community.column_settings.remote_only": "Remoto apenas",
"compose_form.direct_message_warning": "Esta publicação será enviada apenas para os utilizadores mencionados.",
"compose_form.direct_message_warning_learn_more": "Conhecer mais",
"compose_form.hashtag_warning": "Este toot não será listado em nenhuma hashtag por ser não listado. Apenas toots públics podem ser pesquisados por hashtag.",
"compose_form.lock_disclaimer": "A tua conta não está {locked}. Qualquer pessoa pode seguir-te e ver as publicações direcionadas apenas a seguidores.",
"compose_form.lock_disclaimer.lock": "bloqueado",
- "compose_form.placeholder": "Em que estás a pensar?",
+ "compose_form.placeholder": "Em que está a pensar?",
"compose_form.poll.add_option": "Adicionar uma opção",
"compose_form.poll.duration": "Duração da votação",
"compose_form.poll.option_placeholder": "Opção {number}",
"compose_form.poll.remove_option": "Eliminar esta opção",
+ "compose_form.poll.switch_to_multiple": "Alterar a votação para permitir múltiplas escolhas",
+ "compose_form.poll.switch_to_single": "Alterar a votação para permitir uma única escolha",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Marcar multimédia como sensível",
- "compose_form.sensitive.marked": "Média marcada como sensível",
- "compose_form.sensitive.unmarked": "Média não está marcada como sensível",
+ "compose_form.sensitive.hide": "Marcar media como sensível",
+ "compose_form.sensitive.marked": "Media marcada como sensível",
+ "compose_form.sensitive.unmarked": "Media não está marcada como sensível",
"compose_form.spoiler.marked": "Texto escondido atrás de aviso",
"compose_form.spoiler.unmarked": "O texto não está escondido",
- "compose_form.spoiler_placeholder": "Escreve o teu aviso aqui",
+ "compose_form.spoiler_placeholder": "Escreva o seu aviso aqui",
"confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Bloquear e denunciar",
"confirmations.block.confirm": "Bloquear",
@@ -100,26 +114,26 @@
"confirmations.delete_list.message": "Tens a certeza de que desejas eliminar permanentemente esta lista?",
"confirmations.domain_block.confirm": "Esconder tudo deste domínio",
"confirmations.domain_block.message": "De certeza que queres bloquear completamente o domínio {domain}? Na maioria dos casos, silenciar ou bloquear alguns utilizadores é suficiente e é o recomendado. Não irás ver conteúdo daquele domínio em cronologia alguma nem nas tuas notificações. Os teus seguidores daquele domínio serão removidos.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.logout.confirm": "Terminar sessão",
+ "confirmations.logout.message": "Deseja terminar a sessão?",
"confirmations.mute.confirm": "Silenciar",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Isto irá esconder publicações deles ou publicações que os mencionem, mas irá permitir que vejam as suas publicações e sejam seus seguidores.",
"confirmations.mute.message": "De certeza que queres silenciar {name}?",
"confirmations.redraft.confirm": "Apagar & redigir",
"confirmations.redraft.message": "Tens a certeza que queres apagar e redigir esta publicação? Os favoritos e as partilhas perder-se-ão e as respostas à publicação original ficarão órfãs.",
"confirmations.reply.confirm": "Responder",
- "confirmations.reply.message": "Responder agora irá reescrever a mensagem que estás a compor actualmente. Tens a certeza que queres continuar?",
+ "confirmations.reply.message": "Responder agora irá reescrever a mensagem que está a compor actualmente. Tem a certeza que quer continuar?",
"confirmations.unfollow.confirm": "Deixar de seguir",
"confirmations.unfollow.message": "De certeza que queres deixar de seguir {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
- "embed.instructions": "Publica esta publicação no teu site copiando o código abaixo.",
+ "conversation.delete": "Eliminar conversa",
+ "conversation.mark_as_read": "Marcar como lida",
+ "conversation.open": "Ver conversa",
+ "conversation.with": "Com {names}",
+ "directory.federated": "Do fediverso conhecido",
+ "directory.local": "Apenas de {domain}",
+ "directory.new_arrivals": "Recém chegados",
+ "directory.recently_active": "Com actividade recente",
+ "embed.instructions": "Incorpora esta publicação no teu site copiando o código abaixo.",
"embed.preview": "Podes ver aqui como irá ficar:",
"emoji_button.activity": "Actividade",
"emoji_button.custom": "Personalizar",
@@ -138,12 +152,13 @@
"empty_column.account_timeline": "Sem toots por aqui!",
"empty_column.account_unavailable": "Perfil indisponível",
"empty_column.blocks": "Ainda não bloqueaste qualquer utilizador.",
+ "empty_column.bookmarked_statuses": "Ainda não adicionou nenhum toot aos Itens salvos. Quando adicionar, eles serão exibidos aqui.",
"empty_column.community": "A timeline local está vazia. Escreve algo publicamente para começar!",
"empty_column.direct": "Ainda não tens qualquer mensagem directa. Quando enviares ou receberes alguma, ela irá aparecer aqui.",
"empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.",
"empty_column.favourited_statuses": "Ainda não tens quaisquer toots favoritos. Quando tiveres algum, ele irá aparecer aqui.",
"empty_column.favourites": "Ainda ninguém marcou este toot como favorito. Quando alguém o fizer, ele irá aparecer aqui.",
- "empty_column.follow_requests": "Ainda não tens nenhum pedido de seguimento. Quando receberes algum, ele irá aparecer aqui.",
+ "empty_column.follow_requests": "Ainda não tens nenhum pedido de seguidor. Quando receberes algum, ele irá aparecer aqui.",
"empty_column.hashtag": "Não foram encontradas publicações com essa hashtag.",
"empty_column.home": "Ainda não segues qualquer utilizador. Visita {public} ou utiliza a pesquisa para procurar outros utilizadores.",
"empty_column.home.public_timeline": "Cronologia pública",
@@ -152,12 +167,13 @@
"empty_column.mutes": "Ainda não silenciaste qualquer utilizador.",
"empty_column.notifications": "Não tens notificações. Interage com outros utilizadores para iniciar uma conversa.",
"empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para veres aqui os conteúdos públicos",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "Devido a um erro no nosso código ou a uma compatilidade com o seu navegador, esta página não pôde ser apresentada correctamente.",
+ "error.unexpected_crash.next_steps": "Tente atualizar a página. Se isso não ajudar, pode usar o Mastodon através de um navegador diferente ou uma aplicação nativa.",
+ "errors.unexpected_crash.copy_stacktrace": "Copiar a stacktrace para o clipboard",
+ "errors.unexpected_crash.report_issue": "Reportar problema",
"follow_request.authorize": "Autorizar",
"follow_request.reject": "Rejeitar",
+ "follow_requests.unlocked_explanation": "Apesar de a sua não estar bloqueada, a administração de {domain} pensa que poderá querer rever os pedidos dessas contas manualmente.",
"getting_started.developers": "Responsáveis pelo desenvolvimento",
"getting_started.directory": "Directório de perfil",
"getting_started.documentation": "Documentação",
@@ -178,16 +194,18 @@
"home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar boosts",
"home.column_settings.show_replies": "Mostrar respostas",
+ "home.hide_announcements": "Ocultar anúncios",
+ "home.show_announcements": "Exibir anúncios",
"intervals.full.days": "{number, plural, one {# dia} other {# dias}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
"introduction.federation.action": "Seguinte",
"introduction.federation.federated.headline": "Federada",
- "introduction.federation.federated.text": "Publicações públicas de outros servidores do fediverse aparecerão na cronologia federativa.",
+ "introduction.federation.federated.text": "Publicações públicas de outras instâncias do fediverso aparecerão na cronologia federada.",
"introduction.federation.home.headline": "Início",
- "introduction.federation.home.text": "As publicações das pessoas que tu segues aparecerão na tua coluna inicial. Tu podes seguir qualquer pessoa em qualquer servidor!",
+ "introduction.federation.home.text": "As publicações das pessoas que você segue aparecerão na sua coluna de início. Você pode seguir qualquer pessoa em qualquer instância!",
"introduction.federation.local.headline": "Local",
- "introduction.federation.local.text": "Publicações públicas de pessoas que tu segues no teu servidor aparecerão na coluna local.",
+ "introduction.federation.local.text": "Publicações públicas de pessoas na mesma instância que você aparecerão na coluna local.",
"introduction.interactions.action": "Terminar o tutorial!",
"introduction.interactions.favourite.headline": "Favorito",
"introduction.interactions.favourite.text": "Podes guardar um toot para depois e deixar o autor saber que gostaste dele, marcando-o como favorito.",
@@ -197,7 +215,7 @@
"introduction.interactions.reply.text": "Tu podes responder a toots de outras pessoas e aos teus, o que os irá juntar numa conversa.",
"introduction.welcome.action": "Vamos!",
"introduction.welcome.headline": "Primeiros passos",
- "introduction.welcome.text": "Bem-vindo ao fediverso! Em pouco tempo poderás enviar mensagens e falar com os teus amigos numa grande variedade de servidores. Mas este servidor, {domain}, é especial—ele alberga o teu perfil. Por isso, lembra-te do seu nome.",
+ "introduction.welcome.text": "Bem-vindo ao fediverso! Em pouco tempo poderás enviar mensagens e falar com os seus amigos numa grande variedade de instâncias. Mas esta instância, {domain}, é especial—ela alberga o seu perfil. Por isso, lembre-se do seu nome.",
"keyboard_shortcuts.back": "para voltar",
"keyboard_shortcuts.blocked": "para abrir a lista de utilizadores bloqueados",
"keyboard_shortcuts.boost": "para partilhar",
@@ -206,7 +224,7 @@
"keyboard_shortcuts.description": "Descrição",
"keyboard_shortcuts.direct": "para abrir a coluna das mensagens directas",
"keyboard_shortcuts.down": "para mover para baixo na lista",
- "keyboard_shortcuts.enter": "para expandir um estado",
+ "keyboard_shortcuts.enter": "para expandir uma publicação",
"keyboard_shortcuts.favourite": "para adicionar aos favoritos",
"keyboard_shortcuts.favourites": "para abrir a lista dos favoritos",
"keyboard_shortcuts.federated": "para abrir a cronologia federada",
@@ -219,14 +237,16 @@
"keyboard_shortcuts.muted": "para abrir a lista dos utilizadores silenciados",
"keyboard_shortcuts.my_profile": "para abrir o teu perfil",
"keyboard_shortcuts.notifications": "para abrir a coluna das notificações",
+ "keyboard_shortcuts.open_media": "para abrir media",
"keyboard_shortcuts.pinned": "para abrir a lista dos toots fixados",
"keyboard_shortcuts.profile": "para abrir o perfil do autor",
"keyboard_shortcuts.reply": "para responder",
- "keyboard_shortcuts.requests": "para abrir a lista dos pedidos de seguimento",
+ "keyboard_shortcuts.requests": "para abrir a lista dos pedidos de seguidor",
"keyboard_shortcuts.search": "para focar na pesquisa",
+ "keyboard_shortcuts.spoilers": "para mostrar/esconder o campo AC",
"keyboard_shortcuts.start": "para abrir a coluna dos \"primeiros passos\"",
"keyboard_shortcuts.toggle_hidden": "para mostrar/esconder texto atrás de CW",
- "keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar média",
+ "keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar media",
"keyboard_shortcuts.toot": "para compor um novo toot",
"keyboard_shortcuts.unfocus": "para remover o foco da área de texto/pesquisa",
"keyboard_shortcuts.up": "para mover para cima na lista",
@@ -243,14 +263,15 @@
"lists.new.title_placeholder": "Título da nova lista",
"lists.search": "Pesquisa entre as pessoas que segues",
"lists.subheading": "As tuas listas",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "load_pending": "{count, plural, one {# novo item} other {# novos itens}}",
"loading_indicator.label": "A carregar...",
- "media_gallery.toggle_visible": "Mostrar/ocultar",
+ "media_gallery.toggle_visible": "Alternar visibilidade",
"missing_indicator.label": "Não encontrado",
"missing_indicator.sublabel": "Este recurso não foi encontrado",
"mute_modal.hide_notifications": "Esconder notificações deste utilizador?",
"navigation_bar.apps": "Aplicações móveis",
"navigation_bar.blocks": "Utilizadores bloqueados",
+ "navigation_bar.bookmarks": "Itens salvos",
"navigation_bar.community_timeline": "Cronologia local",
"navigation_bar.compose": "Escrever novo toot",
"navigation_bar.direct": "Mensagens directas",
@@ -261,7 +282,7 @@
"navigation_bar.filters": "Palavras silenciadas",
"navigation_bar.follow_requests": "Seguidores pendentes",
"navigation_bar.follows_and_followers": "Seguindo e seguidores",
- "navigation_bar.info": "Sobre este servidor",
+ "navigation_bar.info": "Sobre esta instância",
"navigation_bar.keyboard_shortcuts": "Atalhos de teclado",
"navigation_bar.lists": "Listas",
"navigation_bar.logout": "Sair",
@@ -271,11 +292,13 @@
"navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Cronologia federada",
"navigation_bar.security": "Segurança",
- "notification.favourite": "{name} adicionou o teu estado aos favoritos",
+ "notification.favourite": "{name} adicionou a tua publicação aos favoritos",
"notification.follow": "{name} começou a seguir-te",
+ "notification.follow_request": "{name} pediu para segui-lo",
"notification.mention": "{name} mencionou-te",
- "notification.poll": "Uma votação em participaste chegou ao fim",
- "notification.reblog": "{name} fez boost ao teu o teu estado",
+ "notification.own_poll": "A sua votação terminou",
+ "notification.poll": "Uma votação em que participaste chegou ao fim",
+ "notification.reblog": "{name} partilhou a tua publicação",
"notifications.clear": "Limpar notificações",
"notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?",
"notifications.column_settings.alert": "Notificações no computador",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Barra de filtros rápidos",
"notifications.column_settings.filter_bar.show": "Mostrar",
"notifications.column_settings.follow": "Novos seguidores:",
+ "notifications.column_settings.follow_request": "Novos pedidos de seguidor:",
"notifications.column_settings.mention": "Menções:",
"notifications.column_settings.poll": "Resultados da votação:",
"notifications.column_settings.push": "Notificações Push",
@@ -293,19 +317,19 @@
"notifications.filter.all": "Todas",
"notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favoritos",
- "notifications.filter.follows": "Seguimento",
- "notifications.filter.mentions": "Referências",
- "notifications.filter.polls": "Resultados da votação",
+ "notifications.filter.follows": "Seguidores",
+ "notifications.filter.mentions": "Menções",
+ "notifications.filter.polls": "Votações",
"notifications.group": "{count} notificações",
"poll.closed": "Fechado",
"poll.refresh": "Recarregar",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, one {# pessoa} other {# pessoas}}",
"poll.total_votes": "{contar, plural, um {# vote} outro {# votes}}",
"poll.vote": "Votar",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "Você votou nesta resposta",
"poll_button.add_poll": "Adicionar votação",
"poll_button.remove_poll": "Remover votação",
- "privacy.change": "Ajustar a privacidade da mensagem",
+ "privacy.change": "Ajustar a privacidade da publicação",
"privacy.direct.long": "Apenas para utilizadores mencionados",
"privacy.direct.short": "Directo",
"privacy.private.long": "Apenas para os seguidores",
@@ -314,7 +338,7 @@
"privacy.public.short": "Público",
"privacy.unlisted.long": "Não publicar nos feeds públicos",
"privacy.unlisted.short": "Não listar",
- "refresh": "Refresh",
+ "refresh": "Actualizar",
"regeneration_indicator.label": "A carregar…",
"regeneration_indicator.sublabel": "A tua home está a ser preparada!",
"relative_time.days": "{number}d",
@@ -322,10 +346,11 @@
"relative_time.just_now": "agora",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "hoje",
"reply_indicator.cancel": "Cancelar",
"report.forward": "Reenviar para {target}",
- "report.forward_hint": "A conta é de outro servidor. Enviar uma cópia anónima do relatório para lá também?",
- "report.hint": "O relatório será enviado para os moderadores do teu servidor. Podes fornecer, em baixo, uma explicação do motivo pelo qual estás a denunciar esta conta:",
+ "report.forward_hint": "A conta é de outra instância. Enviar uma cópia anónima do relatório para lá também?",
+ "report.hint": "O relatório será enviado para os moderadores da sua instância. Pode fornecer, em baixo, uma explicação do motivo pelo qual está a denunciar esta conta:",
"report.placeholder": "Comentários adicionais",
"report.submit": "Enviar",
"report.target": "Denunciar",
@@ -333,17 +358,18 @@
"search_popout.search_format": "Formato avançado de pesquisa",
"search_popout.tips.full_text": "Texto simples devolve publicações que tu escreveste, marcaste como favorita, partilhaste ou em que foste mencionado, tal como nomes de utilizador correspondentes, alcunhas e hashtags.",
"search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "estado",
+ "search_popout.tips.status": "publicação",
"search_popout.tips.text": "O texto simples retorna a correspondência de nomes, utilizadores e hashtags",
"search_popout.tips.user": "utilizador",
"search_results.accounts": "Pessoas",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.statuses_fts_disabled": "A pesquisa de toots pelo seu conteúdo não está disponível nesta instância Mastodon.",
"search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
"status.admin_account": "Abrir a interface de moderação para @{name}",
"status.admin_status": "Abrir esta publicação na interface de moderação",
"status.block": "Bloquear @{name}",
+ "status.bookmark": "Salvar",
"status.cancel_reblog_private": "Remover boost",
"status.cannot_reblog": "Não é possível fazer boost a esta publicação",
"status.copy": "Copiar o link para a publicação",
@@ -354,7 +380,7 @@
"status.favourite": "Adicionar aos favoritos",
"status.filtered": "Filtrada",
"status.load_more": "Carregar mais",
- "status.media_hidden": "Média escondida",
+ "status.media_hidden": "Media escondida",
"status.mention": "Mencionar @{name}",
"status.more": "Mais",
"status.mute": "Silenciar @{name}",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} fez boost",
"status.reblogs.empty": "Ainda ninguém fez boost a este toot. Quando alguém o fizer, ele irá aparecer aqui.",
"status.redraft": "Apagar & reescrever",
+ "status.remove_bookmark": "Remover dos itens salvos",
"status.reply": "Responder",
"status.replyAll": "Responder à conversa",
"status.report": "Denunciar @{name}",
@@ -378,7 +405,7 @@
"status.show_more": "Mostrar mais",
"status.show_more_all": "Mostrar mais para todas",
"status.show_thread": "Mostrar conversa",
- "status.uncached_media_warning": "Not available",
+ "status.uncached_media_warning": "Não disponível",
"status.unmute_conversation": "Deixar de silenciar esta conversa",
"status.unpin": "Não fixar no perfil",
"suggestions.dismiss": "Dispensar a sugestão",
@@ -393,25 +420,32 @@
"time_remaining.minutes": "{número, plural, um {# minute} outro {# minutes}} faltam",
"time_remaining.moments": "Momentos restantes",
"time_remaining.seconds": "{número, plural, um {# second} outro {# seconds}} faltam",
+ "timeline_hint.remote_resource_not_displayed": "{resource} de outros servidores não são exibidos.",
+ "timeline_hint.resources.followers": "Seguidores",
+ "timeline_hint.resources.follows": "Seguindo",
+ "timeline_hint.resources.statuses": "Toots antigos",
"trends.count_by_accounts": "{count} {rawCount, plural, uma {person} outra {people}} a falar",
- "trends.trending_now": "Trending now",
+ "trends.trending_now": "Tendências atuais",
"ui.beforeunload": "O teu rascunho será perdido se abandonares o Mastodon.",
"upload_area.title": "Arraste e solte para enviar",
- "upload_button.label": "Adicionar media",
+ "upload_button.label": "Adicionar media ({formats})",
"upload_error.limit": "Limite máximo do ficheiro a carregar excedido.",
"upload_error.poll": "Carregamento de ficheiros não é permitido em votações.",
+ "upload_form.audio_description": "Descreva para pessoas com diminuição da acuidade auditiva",
"upload_form.description": "Descrição da imagem para pessoas com dificuldades visuais",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "Editar",
"upload_form.undo": "Apagar",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_form.video_description": "Descreva para pessoas com diminuição da acuidade auditiva ou visual",
+ "upload_modal.analyzing_picture": "A analizar imagem…",
+ "upload_modal.apply": "Aplicar",
+ "upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente",
+ "upload_modal.detect_text": "Detectar texto na imagem",
+ "upload_modal.edit_media": "Editar media",
+ "upload_modal.hint": "Clique ou arraste o círculo na pré-visualização para escolher o ponto focal que será sempre visível em todas as miniaturas.",
+ "upload_modal.preview_label": "Pré-visualizar ({ratio})",
"upload_progress.label": "A enviar...",
"video.close": "Fechar vídeo",
+ "video.download": "Descarregar ficheiro",
"video.exit_fullscreen": "Sair de full screen",
"video.expand": "Expandir vídeo",
"video.fullscreen": "Ecrã completo",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index 617dbcc0d..e470a7f90 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -1,65 +1,75 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Adaugă sau Elimină din liste",
- "account.badges.bot": "Bot",
- "account.block": "Blochează @{name}",
- "account.block_domain": "Ascunde tot de la {domain}",
+ "account.badges.bot": "Robot",
+ "account.badges.group": "Grup",
+ "account.block": "Blocați @{name}",
+ "account.block_domain": "Blocați domeniul {domain}",
"account.blocked": "Blocat",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.browse_more_on_origin_server": "Caută mai multe în profilul original",
+ "account.cancel_follow_request": "Anulați cererea de urmărire",
"account.direct": "Mesaj direct @{name}",
- "account.domain_blocked": "Domeniu ascuns",
- "account.edit_profile": "Editează profilul",
- "account.endorse": "Redistribuie pe profil",
+ "account.domain_blocked": "Domeniu blocat",
+ "account.edit_profile": "Editați profilul",
+ "account.endorse": "Promovați pe profil",
"account.follow": "Urmărește",
"account.followers": "Urmăritori",
"account.followers.empty": "Acest utilizator nu are încă urmăritori.",
"account.follows": "Urmărește",
- "account.follows.empty": "Acest utilizator nu urmărește pe nimeni incă.",
+ "account.follows.empty": "Acest utilizator nu urmărește pe nimeni încă.",
"account.follows_you": "Te urmărește",
- "account.hide_reblogs": "Ascunde redistribuirile de la @{name}",
- "account.last_status": "Last active",
+ "account.hide_reblogs": "Ascunde impulsurile de la @{name}",
+ "account.last_status": "Ultima activitate",
"account.link_verified_on": "Deținerea acestui link a fost verificată la {date}",
- "account.locked_info": "Acest profil este privat. Această persoană gestioneaz manual cine o urmărește.",
+ "account.locked_info": "Acest profil este privat. Această persoană gestionează manual cine o urmărește.",
"account.media": "Media",
- "account.mention": "Menționează @{name}",
+ "account.mention": "Menționează pe @{name}",
"account.moved_to": "{name} a fost mutat la:",
- "account.mute": "Oprește @{name}",
- "account.mute_notifications": "Oprește notificările de la @{name}",
+ "account.mute": "Ignoră pe @{name}",
+ "account.mute_notifications": "Ignoră notificările de la @{name}",
"account.muted": "Oprit",
- "account.never_active": "Never",
+ "account.never_active": "Niciodată",
"account.posts": "Postări",
- "account.posts_with_replies": "Postări și replici",
- "account.report": "Raportează @{name}",
+ "account.posts_with_replies": "Postări și răspunsuri",
+ "account.report": "Raportează pe @{name}",
"account.requested": "Se așteaptă aprobarea. Apasă pentru a anula cererea de urmărire",
"account.share": "Distribuie profilul lui @{name}",
- "account.show_reblogs": "Arată redistribuirile de la @{name}",
- "account.unblock": "Deblochează @{name}",
- "account.unblock_domain": "Arată {domain}",
+ "account.show_reblogs": "Arată impulsurile de la @{name}",
+ "account.unblock": "Deblochează pe @{name}",
+ "account.unblock_domain": "Deblochează domeniul {domain}",
"account.unendorse": "Nu promova pe profil",
"account.unfollow": "Nu mai urmări",
- "account.unmute": "Activează notificările de la @{name}",
+ "account.unmute": "Nu mai ignora pe @{name}",
"account.unmute_notifications": "Activează notificările de la @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Vă rugăm să reîncercați după {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Rată limitată",
"alert.unexpected.message": "A apărut o eroare neașteptată.",
"alert.unexpected.title": "Hopa!",
- "autosuggest_hashtag.per_week": "{count} per week",
+ "announcement.announcement": "Anunț",
+ "autosuggest_hashtag.per_week": "{count} pe săptămână",
"boost_modal.combo": "Poți apăsa {combo} pentru a omite asta data viitoare",
"bundle_column_error.body": "Ceva nu a funcționat la încărcarea acestui component.",
"bundle_column_error.retry": "Încearcă din nou",
"bundle_column_error.title": "Eroare de rețea",
"bundle_modal_error.close": "Închide",
- "bundle_modal_error.message": "Ceva nu a funcționat în timupul încărcării acestui component.",
+ "bundle_modal_error.message": "Ceva nu a funcționat în timpul încărcării acestei componente.",
"bundle_modal_error.retry": "Încearcă din nou",
"column.blocks": "Utilizatori blocați",
- "column.community": "Fluxul Local",
+ "column.bookmarks": "Marcaje",
+ "column.community": "Fluxul local",
"column.direct": "Mesaje directe",
- "column.directory": "Browse profiles",
- "column.domain_blocks": "Domenii ascunse",
+ "column.directory": "Răsfoiți profiluri",
+ "column.domain_blocks": "Domenii blocate",
"column.favourites": "Favorite",
"column.follow_requests": "Cereri de urmărire",
"column.home": "Acasă",
"column.lists": "Liste",
- "column.mutes": "Utilizatori opriți",
+ "column.mutes": "Utilizatori ignorați",
"column.notifications": "Notificări",
"column.pins": "Postări fixate",
"column.public": "Flux global",
@@ -71,93 +81,99 @@
"column_header.show_settings": "Arată setările",
"column_header.unpin": "Eliberează",
"column_subheading.settings": "Setări",
+ "community.column_settings.local_only": "Doar local",
"community.column_settings.media_only": "Doar media",
+ "community.column_settings.remote_only": "Doar la distanţă",
"compose_form.direct_message_warning": "Această postare va fi trimisă doar utilizatorilor menționați.",
"compose_form.direct_message_warning_learn_more": "Află mai multe",
- "compose_form.hashtag_warning": "Această postare nu va fi listată sub nici un hastag. Doar postările publice pot fi găsite dupa un hastag.",
+ "compose_form.hashtag_warning": "Această postare nu va fi listată sub niciun hashtag pentru că este nelistată. Doar postările publice pot fi găsite după un hashtag.",
"compose_form.lock_disclaimer": "Contul tău nu este {locked}. Oricine te poate urmări fără aprobarea ta și vedea toate postările tale.",
"compose_form.lock_disclaimer.lock": "privat",
"compose_form.placeholder": "La ce te gândești?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Adăugați o opțiune",
+ "compose_form.poll.duration": "Durata sondajului",
+ "compose_form.poll.option_placeholder": "Opțiunea {number}",
+ "compose_form.poll.remove_option": "Îndepărtați acestă opțiune",
+ "compose_form.poll.switch_to_multiple": "Modificați sondajul pentru a permite multiple opțiuni",
+ "compose_form.poll.switch_to_single": "Modificați sondajul pentru a permite o singură opțiune",
"compose_form.publish": "Postează",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.hide": "Marcați conținutul media ca sensibil",
"compose_form.sensitive.marked": "Conținutul media este marcat ca sensibil",
"compose_form.sensitive.unmarked": "Conținutul media nu este marcat ca sensibil",
"compose_form.spoiler.marked": "Textul este ascuns sub o avertizare",
"compose_form.spoiler.unmarked": "Textul nu este ascuns",
- "compose_form.spoiler_placeholder": "Scrie averitzarea aici",
+ "compose_form.spoiler_placeholder": "Scrie avertizarea aici",
"confirmation_modal.cancel": "Anulează",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Blocați și Raportați",
"confirmations.block.confirm": "Blochează",
- "confirmations.block.message": "Ești sigur că vrei să blochezi {name}?",
+ "confirmations.block.message": "Ești sigur că vrei să blochezi pe {name}?",
"confirmations.delete.confirm": "Șterge",
- "confirmations.delete.message": "Ești șigur că vrei să ștergi asta?",
+ "confirmations.delete.message": "Ești sigur că vrei să ștergi asta?",
"confirmations.delete_list.confirm": "Șterge",
"confirmations.delete_list.message": "Ești sigur că vrei să ștergi permanent această listă?",
"confirmations.domain_block.confirm": "Ascunde tot domeniul",
- "confirmations.domain_block.message": "Ești absolut sigur că vrei să blochezi complet {domain}? În cele mai multe cazuri raportarea sau oprirea anumitor lucruri este suficientă și de preferat. Nu vei mai vedea nici un conținut de la acest domeniu in nici un flux public sau în notificările tale. Urmăritorii tăi de la acele domenii vor fi eliminați.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
- "confirmations.mute.confirm": "Oprește",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
- "confirmations.mute.message": "Ești sigur că vrei să oprești {name}?",
+ "confirmations.domain_block.message": "Ești absolut sigur că vrei să blochezi complet domeniul {domain}? În cele mai multe cazuri raportarea sau ignorarea anumitor lucruri este suficientă și de preferat. Nu vei mai vedea niciun conținut de la acest domeniu în nici un flux public sau în notificările tale. Urmăritorii tăi de la acele domenii vor fi eliminați.",
+ "confirmations.logout.confirm": "Deconectare",
+ "confirmations.logout.message": "Ești sigur că vrei să te deconectezi?",
+ "confirmations.mute.confirm": "Ignoră",
+ "confirmations.mute.explanation": "Acest lucru va ascunde postări față de ei și postări în care sunt menționați, dar le vor permite încă să vă vadă postările și să vă urmărească.",
+ "confirmations.mute.message": "Ești sigur că vrei să ignori pe {name}?",
"confirmations.redraft.confirm": "Șterge și salvează ca ciornă",
- "confirmations.redraft.message": "Ești sigur că vrei să faci asta? Tot ce ține de această postare, inclusiv răspunsurile vor fi deconectate.",
+ "confirmations.redraft.message": "Ești sigur că vrei să ștergi această stare și să o faci ciornă? Favoritele și impulsurile se vor pierde, iar răspunsurile către postarea originală vor rămâne orfane.",
"confirmations.reply.confirm": "Răspunde",
"confirmations.reply.message": "Răspunzând la asta acum, mesajul pe care îl compui în prezent se va șterge. Ești sigur că vrei să continui?",
"confirmations.unfollow.confirm": "Nu mai urmări",
- "confirmations.unfollow.message": "Ești sigur că nu mai vrei să îl urmărești pe {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
- "embed.instructions": "Inserează această postare pe site-ul tău adăugând codul de mai jos.",
+ "confirmations.unfollow.message": "Ești sigur că nu mai vrei să urmărești pe {name}?",
+ "conversation.delete": "Ștergeți conversația",
+ "conversation.mark_as_read": "Marcați ca citit",
+ "conversation.open": "Vizualizați conversația",
+ "conversation.with": "Cu {names}",
+ "directory.federated": "De la un cunoscut fedivers",
+ "directory.local": "Doar de la {domain}",
+ "directory.new_arrivals": "Noi sosiți",
+ "directory.recently_active": "Recent activi",
+ "embed.instructions": "Înglobează această postare pe site-ul tău adăugând codul de mai jos.",
"embed.preview": "Cam așa va arăta:",
"emoji_button.activity": "Activitate",
"emoji_button.custom": "Personalizat",
"emoji_button.flags": "Marcaje",
"emoji_button.food": "Mâncare și Băuturi",
- "emoji_button.label": "Inserează un emoji",
+ "emoji_button.label": "Inserează un zâmbet",
"emoji_button.nature": "Natură",
- "emoji_button.not_found": "Fară emojiuri (╯°□°)╯︵ ┻━┻",
+ "emoji_button.not_found": "Fără zâmbete (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Obiecte",
"emoji_button.people": "Persoane",
"emoji_button.recent": "Utilizate frecvent",
"emoji_button.search": "Caută...",
"emoji_button.search_results": "Rezultatele căutării",
"emoji_button.symbols": "Simboluri",
- "emoji_button.travel": "Călătorii si Locuri",
- "empty_column.account_timeline": "Nici o postare aici!",
- "empty_column.account_unavailable": "Profile unavailable",
- "empty_column.blocks": "Nu ai blocat nici un utilizator incă.",
- "empty_column.community": "Fluxul local este gol. Scrie ceva public pentru a împinge bila la vale!",
- "empty_column.direct": "Nu ai nici un mesaj direct incă. Când trimiți sau primești unul, va fi afișat aici.",
- "empty_column.domain_blocks": "Nu sunt domenii ascunse incă.",
- "empty_column.favourited_statuses": "Nu ai nici o postare favorită încă. Când vei avea, vor fi afișate aici.",
+ "emoji_button.travel": "Călătorii și Locuri",
+ "empty_column.account_timeline": "Nicio postare aici!",
+ "empty_column.account_unavailable": "Profil indisponibil",
+ "empty_column.blocks": "Nu ai blocat nici un utilizator încă.",
+ "empty_column.bookmarked_statuses": "Nu aveți nici o postare marcată încă. Atunci când veți marca una, va fi afișată aici.",
+ "empty_column.community": "Fluxul local este gol. Scrie ceva public pentru a sparge gheața!",
+ "empty_column.direct": "Nu ai nici un mesaj direct încă. Când trimiți sau primești unul, va fi afișat aici.",
+ "empty_column.domain_blocks": "Nu sunt domenii blocate încă.",
+ "empty_column.favourited_statuses": "Nu ai nici o postare favorită încă. Când vei favoriza una, va fi afișată aici.",
"empty_column.favourites": "Nimeni nu are această postare adăugată la favorite. Când cineva o va face va fi afișat aici.",
"empty_column.follow_requests": "Nu ai încă nici o cerere de urmărire. Când vei primi una, va fi afișată aici.",
- "empty_column.hashtag": "Acest hastag nu a fost folosit încă.",
+ "empty_column.hashtag": "Acest hashtag nu a fost folosit încă.",
"empty_column.home": "Fluxul tău este gol. Vizitează {public} sau fă o căutare pentru a începe să cunoști oameni noi.",
"empty_column.home.public_timeline": "fluxul public",
"empty_column.list": "Nu este nimic încă în această listă. Când membrii acestei liste vor începe să posteze, va apărea aici.",
"empty_column.lists": "Nu ai încă nici o listă. Când vei crea una, va apărea aici.",
- "empty_column.mutes": "Nu ai oprit nici un utilizator incă.",
+ "empty_column.mutes": "Nu ai ignorat nici un utilizator încă.",
"empty_column.notifications": "Nu ai nici o notificare încă. Interacționează cu alții pentru a începe o conversație.",
- "empty_column.public": "Nu este nimci aici încă! Scrie ceva public, sau urmărește alți utilizatori din alte instanțe pentru a porni fluxul",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "empty_column.public": "Nu este nimic aici! Scrie ceva public, sau urmărește alți utilizatori din alte instanțe pentru a porni fluxul",
+ "error.unexpected_crash.explanation": "Din cauza unei erori în codul nostru sau a unei probleme de compatibilitate cu navigatorul, această pagină nu a putut fi afișată corect.",
+ "error.unexpected_crash.next_steps": "Încercați să reîmprospătați pagina. Dacă acest lucru nu ajută, este posibil să mai puteți folosi site-ul printr-un navigator diferit sau o aplicație nativă.",
+ "errors.unexpected_crash.copy_stacktrace": "Copiați stiva în clipboard",
+ "errors.unexpected_crash.report_issue": "Raportați o problemă",
"follow_request.authorize": "Autorizează",
"follow_request.reject": "Respinge",
+ "follow_requests.unlocked_explanation": "Chiar dacă contul dvs nu este blocat, personalul {domain} a crezut că ați putea dori să revizuiți cererile de la aceste conturi în mod manual.",
"getting_started.developers": "Dezvoltatori",
"getting_started.directory": "Explorează",
"getting_started.documentation": "Documentație",
@@ -169,45 +185,47 @@
"hashtag.column_header.tag_mode.all": "și {additional}",
"hashtag.column_header.tag_mode.any": "sau {additional}",
"hashtag.column_header.tag_mode.none": "fără {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+ "hashtag.column_settings.select.no_options_message": "Nu s-au găsit sugestii",
+ "hashtag.column_settings.select.placeholder": "Itroduceți hashtag-uri…",
"hashtag.column_settings.tag_mode.all": "Toate acestea",
"hashtag.column_settings.tag_mode.any": "Oricare din acestea",
- "hashtag.column_settings.tag_mode.none": "Niciuna din aceastea",
+ "hashtag.column_settings.tag_mode.none": "Niciuna din acestea",
"hashtag.column_settings.tag_toggle": "Adaugă etichete adiționale pentru această coloană",
"home.column_settings.basic": "De bază",
- "home.column_settings.show_reblogs": "Arată redistribuirile",
+ "home.column_settings.show_reblogs": "Arată impulsurile",
"home.column_settings.show_replies": "Arată răspunsurile",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "home.hide_announcements": "Ascundeți anunțurile",
+ "home.show_announcements": "Afișați anunțurile",
+ "intervals.full.days": "{number, plural,one {# zi} other {# zile}}",
+ "intervals.full.hours": "{number, plural, one {# oră} other {# ore}}",
+ "intervals.full.minutes": "{number, plural, one {# minut} other {# minute}}",
"introduction.federation.action": "Următorul",
"introduction.federation.federated.headline": "Federalizat",
"introduction.federation.federated.text": "Postările publice de pe alte servere din rețea vor apărea in fluxul global.",
"introduction.federation.home.headline": "Acasă",
- "introduction.federation.home.text": "Postările de la persoanele pe care le urmărești vor apărea in fluxul tău \"Acasă\". Poți urmări pe orice de pe orice server!",
+ "introduction.federation.home.text": "Postările de la persoanele pe care le urmărești vor apărea în fluxul tău \"Acasă\". Poți urmări pe orice de pe orice server!",
"introduction.federation.local.headline": "Local",
"introduction.federation.local.text": "Postările publice de la persoanele de pe acest server vor apărea în fluxul local.",
"introduction.interactions.action": "Încheie ghidul!",
"introduction.interactions.favourite.headline": "Favorite",
- "introduction.interactions.favourite.text": "Poți salva o postare pentru a fi citită mai târziu și poți lăsa autorul să știe că iți place adăugândo la favorite.",
- "introduction.interactions.reblog.headline": "Redistribuie",
- "introduction.interactions.reblog.text": "Poți împărtăși postările altora cu urmăritorii tăi redistribuindule.",
+ "introduction.interactions.favourite.text": "Poți salva o postare pentru a fi citită mai târziu și poți anunța autorul să știe că iți place adăugând-o la favorite.",
+ "introduction.interactions.reblog.headline": "Impuls",
+ "introduction.interactions.reblog.text": "Poți împărtăși postările altora cu urmăritorii tăi impulsionându-le.",
"introduction.interactions.reply.headline": "Răspunde",
"introduction.interactions.reply.text": "Poți răspunde la postările tale și alte altora, care se vor lărgii în discuții.",
"introduction.welcome.action": "Să începem!",
"introduction.welcome.headline": "Primii pași",
- "introduction.welcome.text": "Bun Venit in federație! In câteva momente, vei putea să transmiți mesaje și să participi la discuții cu oameni noi intr-o varietate foarte largă de servere din întreaga lume. Dar în special acest server, {domain},găzduiește profilul tău, deci reține numele acestuia.",
- "keyboard_shortcuts.back": "navighează inapoi",
+ "introduction.welcome.text": "Bun Venit în federație! În câteva momente, vei putea să transmiți mesaje și să participi la discuții cu oameni noi într-o varietate foarte largă de servere din întreaga lume. Dar în special acest server, {domain}, găzduiește profilul tău, deci reține numele acestuia.",
+ "keyboard_shortcuts.back": "navighează înapoi",
"keyboard_shortcuts.blocked": "să deschidă lista utilizatorilor blocați",
- "keyboard_shortcuts.boost": "să redistribuie",
- "keyboard_shortcuts.column": "să focuzeze o postare in una dintre coloane",
- "keyboard_shortcuts.compose": "sa focuzeze zona de compunere",
+ "keyboard_shortcuts.boost": "să impulsioneze",
+ "keyboard_shortcuts.column": "să focalizeze o postare în una dintre coloane",
+ "keyboard_shortcuts.compose": "sa focalizeze zona de compunere",
"keyboard_shortcuts.description": "Descriere",
"keyboard_shortcuts.direct": "să deschidă coloana de mesaje directe",
- "keyboard_shortcuts.down": "să fie mutată jos in lista",
- "keyboard_shortcuts.enter": "să deschidă un status",
- "keyboard_shortcuts.favourite": "să adauge la favorite",
+ "keyboard_shortcuts.down": "să fie mutată jos în lista",
+ "keyboard_shortcuts.enter": "să deschidă o stare",
+ "keyboard_shortcuts.favourite": "să favorizeze",
"keyboard_shortcuts.favourites": "să deschidă lista cu favorite",
"keyboard_shortcuts.federated": "să deschidă fluxul global",
"keyboard_shortcuts.heading": "Comenzi rapide",
@@ -216,95 +234,101 @@
"keyboard_shortcuts.legend": "să afișeze această legendă",
"keyboard_shortcuts.local": "să deschidă fluxul local",
"keyboard_shortcuts.mention": "să menționeze autorul",
- "keyboard_shortcuts.muted": "să deschidă lista utilizatorilor opriți",
+ "keyboard_shortcuts.muted": "să deschidă lista utilizatorilor ignorați",
"keyboard_shortcuts.my_profile": "să deschidă profilul tău",
"keyboard_shortcuts.notifications": "să deschidă coloana cu notificări",
+ "keyboard_shortcuts.open_media": "pentru a deschide media",
"keyboard_shortcuts.pinned": "să deschidă lista postărilor fixate",
- "keyboard_shortcuts.profile": "să deschidă porfilul autorului",
+ "keyboard_shortcuts.profile": "să deschidă profilul autorului",
"keyboard_shortcuts.reply": "să răspundă",
"keyboard_shortcuts.requests": "să deschidă lista cu cereri de urmărire",
- "keyboard_shortcuts.search": "să focuseze căutarea",
+ "keyboard_shortcuts.search": "să focalizeze căutarea",
+ "keyboard_shortcuts.spoilers": "pentru a afişa/ascunde câmpul CW",
"keyboard_shortcuts.start": "să deschidă coloana \"Începere\"",
- "keyboard_shortcuts.toggle_hidden": "să arate/ascundă textul in spatele CW",
- "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toggle_hidden": "să arate/ascundă textul în spatele CW",
+ "keyboard_shortcuts.toggle_sensitivity": "pentru a afișa/ascunde media",
"keyboard_shortcuts.toot": "să înceapă o postare nouă",
"keyboard_shortcuts.unfocus": "să dezactiveze zona de compunere/căutare",
"keyboard_shortcuts.up": "să mute mai sus în listă",
"lightbox.close": "Închide",
"lightbox.next": "Următorul",
"lightbox.previous": "Precedentul",
- "lightbox.view_context": "View context",
+ "lightbox.view_context": "Vizualizați contextul",
"lists.account.add": "Adaugă în listă",
"lists.account.remove": "Elimină din listă",
"lists.delete": "Șterge lista",
"lists.edit": "Editează lista",
- "lists.edit.submit": "Change title",
+ "lists.edit.submit": "Schimbă titlul",
"lists.new.create": "Adaugă listă",
"lists.new.title_placeholder": "Titlu pentru noua listă",
- "lists.search": "Caută printre persoanale pe care le urmărești",
+ "lists.search": "Caută printre persoanele pe care le urmărești",
"lists.subheading": "Listele tale",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "Încărcare...",
- "media_gallery.toggle_visible": "Comutați vizibilitatea",
+ "load_pending": "{count, plural, one {# element nou} other {# elemente noi}}",
+ "loading_indicator.label": "Se încarcă...",
+ "media_gallery.toggle_visible": "Ascunde media",
"missing_indicator.label": "Nu a fost găsit",
"missing_indicator.sublabel": "Această resursă nu a putut fi găsită",
"mute_modal.hide_notifications": "Ascunzi notificările de la acest utilizator?",
"navigation_bar.apps": "Aplicații mobile",
"navigation_bar.blocks": "Utilizatori blocați",
+ "navigation_bar.bookmarks": "Marcaje",
"navigation_bar.community_timeline": "Flux local",
"navigation_bar.compose": "Compune o nouă postare",
"navigation_bar.direct": "Mesaje directe",
"navigation_bar.discover": "Descoperă",
- "navigation_bar.domain_blocks": "Domenii ascunse",
+ "navigation_bar.domain_blocks": "Domenii blocate",
"navigation_bar.edit_profile": "Editează profilul",
"navigation_bar.favourites": "Favorite",
- "navigation_bar.filters": "Cuvinte oprite",
+ "navigation_bar.filters": "Cuvinte ignorate",
"navigation_bar.follow_requests": "Cereri de urmărire",
- "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.follows_and_followers": "Urmăriri și urmăritori",
"navigation_bar.info": "Despre această instanță",
"navigation_bar.keyboard_shortcuts": "Prescurtări",
"navigation_bar.lists": "Liste",
"navigation_bar.logout": "Deconectare",
- "navigation_bar.mutes": "Utilizatori opriți",
- "navigation_bar.personal": "Personal",
+ "navigation_bar.mutes": "Utilizatori ignorați",
+ "navigation_bar.personal": "Personale",
"navigation_bar.pins": "Postări fixate",
"navigation_bar.preferences": "Preferințe",
"navigation_bar.public_timeline": "Flux global",
"navigation_bar.security": "Securitate",
- "notification.favourite": "{name} a adăugat statusul tău la favorite",
+ "notification.favourite": "{name} a adăugat postarea ta la favorite",
"notification.follow": "{name} te urmărește",
+ "notification.follow_request": "{name} a cerut să te urmărească",
"notification.mention": "{name} te-a menționat",
- "notification.poll": "A poll you have voted in has ended",
- "notification.reblog": "{name} a redistribuit postarea ta",
+ "notification.own_poll": "Sondajul tău s-a sfârșit",
+ "notification.poll": "Un sondaj la care ai votat s-a sfârșit",
+ "notification.reblog": "{name} a impulsionat postarea ta",
"notifications.clear": "Șterge notificările",
- "notifications.clear_confirmation": "Ești sigur că vrei să ștergi toate notificările?",
+ "notifications.clear_confirmation": "Ești sigur că vrei să ștergi permanent toate notificările?",
"notifications.column_settings.alert": "Notificări pe desktop",
"notifications.column_settings.favourite": "Favorite:",
"notifications.column_settings.filter_bar.advanced": "Afișează toate categoriile",
"notifications.column_settings.filter_bar.category": "Bară de filtrare rapidă",
"notifications.column_settings.filter_bar.show": "Arată",
"notifications.column_settings.follow": "Noi urmăritori:",
+ "notifications.column_settings.follow_request": "Noi cereri de urmărire:",
"notifications.column_settings.mention": "Mențiuni:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Rezultate sondaj:",
"notifications.column_settings.push": "Notificări push",
- "notifications.column_settings.reblog": "Redistribuite:",
+ "notifications.column_settings.reblog": "Impulsuri:",
"notifications.column_settings.show": "Arată în coloană",
"notifications.column_settings.sound": "Redă sunet",
"notifications.filter.all": "Toate",
- "notifications.filter.boosts": "Redistribuiri",
+ "notifications.filter.boosts": "Impulsuri",
"notifications.filter.favourites": "Favorite",
"notifications.filter.follows": "Urmărește",
"notifications.filter.mentions": "Menționări",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.polls": "Rezultate sondaj",
"notifications.group": "{count} notificări",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll.closed": "Închis",
+ "poll.refresh": "Reîmprospătează",
+ "poll.total_people": "{count, plural, one {# persoană} other {# persoane}}",
+ "poll.total_votes": "{count, plural, one {# vot} other {# voturi}}",
+ "poll.vote": "Votează",
+ "poll.voted": "Ai votat pentru acest răspuns",
+ "poll_button.add_poll": "Adaugă un sondaj",
+ "poll_button.remove_poll": "Îndepărtează sondajul",
"privacy.change": "Cine vede asta",
"privacy.direct.long": "Postează doar pentru utilizatorii menționați",
"privacy.direct.short": "Direct",
@@ -312,73 +336,76 @@
"privacy.private.short": "Doar urmăritorii",
"privacy.public.long": "Postează în fluxul public",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Nu afisa in fluxul public",
+ "privacy.unlisted.long": "Nu afișa în fluxul public",
"privacy.unlisted.short": "Nelistat",
- "refresh": "Refresh",
- "regeneration_indicator.label": "Încărcare…",
+ "refresh": "Reîmprospătează",
+ "regeneration_indicator.label": "Se încarcă…",
"regeneration_indicator.sublabel": "Fluxul tău este în preparare!",
"relative_time.days": "{number}z",
- "relative_time.hours": "{number}h",
+ "relative_time.hours": "{number}o",
"relative_time.just_now": "acum",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "azi",
"reply_indicator.cancel": "Anulează",
- "report.forward": "Redirecționează catre {target}",
+ "report.forward": "Redirecționează către {target}",
"report.forward_hint": "Acest cont este de pe un alt server. Trimitem o copie anonimă a raportului și acolo?",
- "report.hint": "Sesizarea va fi trimsă către moderatorii acestei instanțe. Poți oferi o explicație pentru această sesizare mai jos:",
- "report.placeholder": "Comentarii opționale",
+ "report.hint": "Sesizarea va fi trimisă către moderatorii acestei instanțe. Poți oferi o explicație pentru această sesizare mai jos:",
+ "report.placeholder": "Comentarii adiționale",
"report.submit": "Trimite",
"report.target": "Raportează {target}",
"search.placeholder": "Caută",
"search_popout.search_format": "Formate pentru căutare avansată",
- "search_popout.tips.full_text": "Textele simple returnează statusuri pe care le-ai scris, favorizat, redistribuit, sau în care sunt menționate , deasmenea și utilizatorii sau hastagurile care se potrivesc.",
+ "search_popout.tips.full_text": "Textele simple returnează postări pe care le-ai scris, favorizat, impulsionat, sau în care sunt menționate, deasemenea și utilizatorii sau hashtag-urile care se potrivesc.",
"search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "status",
- "search_popout.tips.text": "Textele simple returnează nume, nume de utilizarori și hastagurile care se potrivesc",
+ "search_popout.tips.status": "stare",
+ "search_popout.tips.text": "Textele simple returnează nume, nume de utilizatori și hashtag-urile care se potrivesc",
"search_popout.tips.user": "utilizator",
- "search_results.accounts": "Oameni",
- "search_results.hashtags": "Hashtaguri",
+ "search_results.accounts": "Persoane",
+ "search_results.hashtags": "Hashtag-uri",
"search_results.statuses": "Postări",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
- "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
- "status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
- "status.block": "Blochează @{name}",
- "status.cancel_reblog_private": "Nedistribuit",
- "status.cannot_reblog": "Această postare nu poate fi redistribuită",
- "status.copy": "Copy link to status",
+ "search_results.statuses_fts_disabled": "Căutarea de postări după conținutul lor nu este activată pe acest server.",
+ "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultate}}",
+ "status.admin_account": "Deschide interfața de moderare pentru @{name}",
+ "status.admin_status": "Deschide această stare în interfața de moderare",
+ "status.block": "Blochează pe @{name}",
+ "status.bookmark": "Marchează",
+ "status.cancel_reblog_private": "Repuls",
+ "status.cannot_reblog": "Această postare nu poate fi impulsionată",
+ "status.copy": "Copiează link-ul postării",
"status.delete": "Șterge",
- "status.detailed_status": "Conversația detailată",
- "status.direct": "Mesaj direct @{name}",
- "status.embed": "Încorporare",
+ "status.detailed_status": "Conversația detaliată",
+ "status.direct": "Mesaj direct către @{name}",
+ "status.embed": "Înglobează",
"status.favourite": "Favorite",
"status.filtered": "Sortate",
"status.load_more": "Încarcă mai multe",
"status.media_hidden": "Media ascunsă",
- "status.mention": "Mentionează @{name}",
+ "status.mention": "Menționează pe @{name}",
"status.more": "Mai mult",
- "status.mute": "Oprește @{name}",
- "status.mute_conversation": "Oprește conversația",
- "status.open": "Extinde acest status",
+ "status.mute": "Ignoră pe @{name}",
+ "status.mute_conversation": "Ignoră conversația",
+ "status.open": "Extinde această stare",
"status.pin": "Fixează pe profil",
"status.pinned": "Postare fixată",
"status.read_more": "Citește mai mult",
- "status.reblog": "Redistribuie",
- "status.reblog_private": "Redistribuie către audiența originală",
- "status.reblogged_by": "{name} a redistribuit",
- "status.reblogs.empty": "Nimeni nu a redistribuit această postare până acum. Când cineva o va face, va apărea aici.",
+ "status.reblog": "Impuls",
+ "status.reblog_private": "Impulsionează către audiența originală",
+ "status.reblogged_by": "{name} a impulsionat",
+ "status.reblogs.empty": "Nimeni nu a impulsionat această postare până acum. Când cineva o va face, va apărea aici.",
"status.redraft": "Șterge și adaugă la ciorne",
+ "status.remove_bookmark": "Îndepărtează marcajul",
"status.reply": "Răspunde",
- "status.replyAll": "Răspunde la topic",
- "status.report": "Raportează @{name}",
+ "status.replyAll": "Răspunde la discuție",
+ "status.report": "Raportează pe @{name}",
"status.sensitive_warning": "Conținut sensibil",
"status.share": "Distribuie",
"status.show_less": "Arată mai puțin",
"status.show_less_all": "Arată mai puțin pentru toți",
"status.show_more": "Arată mai mult",
"status.show_more_all": "Arată mai mult pentru toți",
- "status.show_thread": "Arată topicul",
- "status.uncached_media_warning": "Not available",
+ "status.show_thread": "Arată discuția",
+ "status.uncached_media_warning": "Indisponibil",
"status.unmute_conversation": "Repornește conversația",
"status.unpin": "Eliberează din profil",
"suggestions.dismiss": "Omite sugestia",
@@ -388,30 +415,37 @@
"tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notificări",
"tabs_bar.search": "Căutare",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} vorbesc",
- "trends.trending_now": "Trending now",
+ "time_remaining.days": "{number, plural, one {# zi} other {# zile}} rămase",
+ "time_remaining.hours": "{number, plural, one {# oră} other {# ore}} rămase",
+ "time_remaining.minutes": "{number, plural, one {# minut} other {# minute}} rămase",
+ "time_remaining.moments": "Momente rămase",
+ "time_remaining.seconds": "{number, plural, one {# secundă} other {# secunde}} rămase",
+ "timeline_hint.remote_resource_not_displayed": "{resource} de la alte servere nu sunt afișate.",
+ "timeline_hint.resources.followers": "Urmăritori",
+ "timeline_hint.resources.follows": "Urmăriri",
+ "timeline_hint.resources.statuses": "Postări mai vechi",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {persoană} other {persoane}} vorbește/ecs",
+ "trends.trending_now": "În tendință acum",
"ui.beforeunload": "Postarea se va pierde dacă părăsești pagina.",
"upload_area.title": "Trage și eliberează pentru a încărca",
"upload_button.label": "Adaugă media (JPEG, PNG, GIF, WebM, MP4, MOV)",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.limit": "Limita de încărcare a fișierului a fost depășită.",
+ "upload_error.poll": "Încărcarea fișierului nu este permisă cu sondaje.",
+ "upload_form.audio_description": "Descrie pentru persoanele cu deficiență a auzului",
"upload_form.description": "Adaugă o descriere pentru persoanele cu deficiențe de vedere",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "Editează",
"upload_form.undo": "Șterge",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
+ "upload_form.video_description": "Descrie pentru persoanele cu pierdere a auzului sau tulburări de vedere",
+ "upload_modal.analyzing_picture": "Se analizează imaginea…",
+ "upload_modal.apply": "Aplică",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_modal.detect_text": "Detectare text din imagine",
+ "upload_modal.edit_media": "Editați media",
+ "upload_modal.hint": "Faceţi clic sau trageţi cercul pe previzualizare pentru a alege punctul focal care va fi întotdeauna vizualizat pe toate miniaturile.",
+ "upload_modal.preview_label": "Previzualizare ({ratio})",
"upload_progress.label": "Se Încarcă...",
"video.close": "Închide video",
+ "video.download": "Descărcați fișierul",
"video.exit_fullscreen": "Închide",
"video.expand": "Extinde video",
"video.fullscreen": "Ecran întreg",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 4ace1649a..4ef68d955 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -1,9 +1,13 @@
{
- "account.add_or_remove_from_list": "Добавить или удалить из списков",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Управление списками",
"account.badges.bot": "Бот",
- "account.block": "Блокировать",
- "account.block_domain": "Блокировать все с {domain}",
+ "account.badges.group": "Группа",
+ "account.block": "Заблокировать @{name}",
+ "account.block_domain": "Заблокировать {domain}",
"account.blocked": "Заблокирован(а)",
+ "account.browse_more_on_origin_server": "Посмотреть их можно в оригинальном профиле",
"account.cancel_follow_request": "Отменить запрос",
"account.direct": "Написать @{name}",
"account.domain_blocked": "Домен скрыт",
@@ -11,55 +15,61 @@
"account.endorse": "Рекомендовать в профиле",
"account.follow": "Подписаться",
"account.followers": "Подписаны",
- "account.followers.empty": "Никто не подписан на этого пользователя.",
+ "account.followers.empty": "На этого пользователя пока никто не подписан.",
"account.follows": "Подписки",
- "account.follows.empty": "Этот пользователь ни на кого не подписан.",
+ "account.follows.empty": "Этот пользователь пока ни на кого не подписался.",
"account.follows_you": "Подписан(а) на вас",
- "account.hide_reblogs": "Скрыть реблоги от @{name}",
+ "account.hide_reblogs": "Скрыть продвижения от @{name}",
"account.last_status": "Последняя активность",
"account.link_verified_on": "Владение этой ссылкой было проверено {date}",
"account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.",
"account.media": "Медиа",
- "account.mention": "Упомянуть",
+ "account.mention": "Упомянуть @{name}",
"account.moved_to": "Ищите {name} здесь:",
- "account.mute": "Скрыть @{name}",
+ "account.mute": "Игнорировать @{name}",
"account.mute_notifications": "Скрыть уведомления от @{name}",
- "account.muted": "Скрыт",
+ "account.muted": "Игнорируется",
"account.never_active": "Никогда",
"account.posts": "Посты",
- "account.posts_with_replies": "Посты с ответами",
+ "account.posts_with_replies": "Посты и ответы",
"account.report": "Пожаловаться",
"account.requested": "Ожидает подтверждения. Нажмите для отмены",
"account.share": "Поделиться профилем @{name}",
"account.show_reblogs": "Показывать продвижения от @{name}",
- "account.unblock": "Разблокировать",
+ "account.unblock": "Разблокировать @{name}",
"account.unblock_domain": "Разблокировать {domain}",
"account.unendorse": "Не рекомендовать в профиле",
"account.unfollow": "Отписаться",
- "account.unmute": "Снять глушение",
+ "account.unmute": "Не игнорировать @{name}",
"account.unmute_notifications": "Показывать уведомления от @{name}",
- "alert.rate_limited.message": "Пожалуйста, повторите через {retry_time, time, medium}.",
- "alert.rate_limited.title": "Скорость ограничена",
- "alert.unexpected.message": "Что-то пошло не так.",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Пожалуйста, повторите после {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Вы выполняете действие слишком часто",
+ "alert.unexpected.message": "Произошла непредвиденная ошибка.",
"alert.unexpected.title": "Ой!",
+ "announcement.announcement": "Объявление",
"autosuggest_hashtag.per_week": "{count} / неделю",
- "boost_modal.combo": "Нажмите {combo}, чтобы пропустить это в следующий раз",
+ "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз",
"bundle_column_error.body": "Что-то пошло не так при загрузке этого компонента.",
"bundle_column_error.retry": "Попробовать снова",
"bundle_column_error.title": "Ошибка сети",
"bundle_modal_error.close": "Закрыть",
"bundle_modal_error.message": "Что-то пошло не так при загрузке этого компонента.",
"bundle_modal_error.retry": "Попробовать снова",
- "column.blocks": "Список блокировки",
+ "column.blocks": "Заблокированные пользователи",
+ "column.bookmarks": "Закладки",
"column.community": "Локальная лента",
"column.direct": "Личные сообщения",
"column.directory": "Просмотр профилей",
"column.domain_blocks": "Скрытые домены",
- "column.favourites": "Понравившееся",
+ "column.favourites": "Избранное",
"column.follow_requests": "Запросы на подписку",
"column.home": "Главная",
"column.lists": "Списки",
- "column.mutes": "Список скрытых пользователей",
+ "column.mutes": "Игнорируемые пользователи",
"column.notifications": "Уведомления",
"column.pins": "Закреплённый пост",
"column.public": "Глобальная лента",
@@ -71,22 +81,26 @@
"column_header.show_settings": "Показать настройки",
"column_header.unpin": "Открепить",
"column_subheading.settings": "Настройки",
- "community.column_settings.media_only": "Только с медиа",
- "compose_form.direct_message_warning": "Этот статус будет виден только упомянутым пользователям.",
- "compose_form.direct_message_warning_learn_more": "Узнать больше",
- "compose_form.hashtag_warning": "Этот пост не будет показывается в поиске по хэштегу, т.к. он непубличный. Только публичные посты можно найти в поиске по хэштегу.",
- "compose_form.lock_disclaimer": "Ваш аккаунт не {locked}. Любой человек может подписаться на Вас и просматривать посты для подписчиков.",
- "compose_form.lock_disclaimer.lock": "закрыт",
- "compose_form.placeholder": "О чем вы думаете?",
- "compose_form.poll.add_option": "Добавить",
- "compose_form.poll.duration": "Длительность опроса",
+ "community.column_settings.local_only": "Только локальные",
+ "community.column_settings.media_only": "Только с медиафайлами",
+ "community.column_settings.remote_only": "Только удалённые",
+ "compose_form.direct_message_warning": "Адресованные посты отправляются и видны только упомянутым в них пользователям.",
+ "compose_form.direct_message_warning_learn_more": "Узнать подробнее",
+ "compose_form.hashtag_warning": "Так как этот пост не публичный, он не отобразится в поиске по хэштегам.",
+ "compose_form.lock_disclaimer": "Ваша учётная запись {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.",
+ "compose_form.lock_disclaimer.lock": "не закрыта",
+ "compose_form.placeholder": "О чём думаете?",
+ "compose_form.poll.add_option": "Добавить вариант",
+ "compose_form.poll.duration": "Продолжительность опроса",
"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_single": "Переключить в режим выбора одного ответа",
"compose_form.publish": "Запостить",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Пометить медиафайл как чувствительный",
- "compose_form.sensitive.marked": "Медиафайлы не отмечены как чувствительные",
- "compose_form.sensitive.unmarked": "Медиафайлы не отмечены как чувствительные",
+ "compose_form.sensitive.hide": "Отметить медиафайл как деликатный",
+ "compose_form.sensitive.marked": "Медиафайл отмечен как деликатный",
+ "compose_form.sensitive.unmarked": "Медиафайл не отмечен как деликатный",
"compose_form.spoiler.marked": "Текст скрыт за предупреждением",
"compose_form.spoiler.unmarked": "Текст не скрыт",
"compose_form.spoiler_placeholder": "Текст предупреждения",
@@ -95,20 +109,20 @@
"confirmations.block.confirm": "Заблокировать",
"confirmations.block.message": "Вы уверены, что хотите заблокировать {name}?",
"confirmations.delete.confirm": "Удалить",
- "confirmations.delete.message": "Вы уверены, что хотите удалить этот статус?",
+ "confirmations.delete.message": "Вы уверены, что хотите удалить этот пост?",
"confirmations.delete_list.confirm": "Удалить",
"confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?",
- "confirmations.domain_block.confirm": "Блокировать весь домен",
- "confirmations.domain_block.message": "Вы на самом деле уверены, что хотите блокировать весь {domain}? В большинстве случаев нескольких отдельных блокировок или глушений достаточно.",
+ "confirmations.domain_block.confirm": "Да, заблокировать узел",
+ "confirmations.domain_block.message": "Вы точно уверены, что хотите скрыть все посты с узла {domain}? В большинстве случаев пары блокировок и скрытий вполне достаточно.\n\nПри блокировке узла, вы перестанете получать уведомления оттуда, все посты будут скрыты из публичных лент, а подписчики убраны.",
"confirmations.logout.confirm": "Выйти",
"confirmations.logout.message": "Вы уверены, что хотите выйти?",
- "confirmations.mute.confirm": "Заглушить",
- "confirmations.mute.explanation": "Будут скрыты их посты и те, где они упоминаются, но они при этом смогут видеть ваши посты и подписываться на вас.",
- "confirmations.mute.message": "Вы уверены, что хотите заглушить {name}?",
+ "confirmations.mute.confirm": "Игнорировать",
+ "confirmations.mute.explanation": "Это скроет посты этого пользователя и те, в которых он упоминается, но при этом он по-прежнему сможет подписаться на вас и смотреть ваши посты.",
+ "confirmations.mute.message": "Вы уверены, что хотите добавить {name} в список игнорируемых?",
"confirmations.redraft.confirm": "Удалить и исправить",
- "confirmations.redraft.message": "Вы уверены, что хотите удалить этот статус и превратить в черновик? Вы потеряете все ответы, продвижения и отметки 'нравится' к нему.",
+ "confirmations.redraft.message": "Вы уверены, что хотите переписать этот пост? Старый пост будет удалён, а вместе с ним пропадут отметки «избранного», продвижения и ответы.",
"confirmations.reply.confirm": "Ответить",
- "confirmations.reply.message": "При ответе текст набираемого сообщения будет перезаписан. Продолжить?",
+ "confirmations.reply.message": "При ответе, текст набираемого поста будет очищен. Продолжить?",
"confirmations.unfollow.confirm": "Отписаться",
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
"conversation.delete": "Удалить беседу",
@@ -116,13 +130,13 @@
"conversation.open": "Просмотр беседы",
"conversation.with": "С {names}",
"directory.federated": "Со всей федерации",
- "directory.local": "Только из {domain}",
+ "directory.local": "Только с {domain}",
"directory.new_arrivals": "Новички",
"directory.recently_active": "Недавно активные",
- "embed.instructions": "Встройте этот статус на Вашем сайте, скопировав код внизу.",
+ "embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:",
"embed.preview": "Так это будет выглядеть:",
"emoji_button.activity": "Занятия",
- "emoji_button.custom": "Собственные",
+ "emoji_button.custom": "С этого узла",
"emoji_button.flags": "Флаги",
"emoji_button.food": "Еда и напитки",
"emoji_button.label": "Вставить эмодзи",
@@ -134,30 +148,32 @@
"emoji_button.search": "Найти...",
"emoji_button.search_results": "Результаты поиска",
"emoji_button.symbols": "Символы",
- "emoji_button.travel": "Путешествия",
+ "emoji_button.travel": "Путешествия и места",
"empty_column.account_timeline": "Здесь нет постов!",
"empty_column.account_unavailable": "Профиль недоступен",
"empty_column.blocks": "Вы ещё никого не заблокировали.",
+ "empty_column.bookmarked_statuses": "У вас пока нет постов в закладках. Как добавите один, он отобразится здесь.",
"empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!",
"empty_column.direct": "У вас пока нет личных сообщений. Как только вы отправите или получите одно, оно появится здесь.",
"empty_column.domain_blocks": "Скрытых доменов пока нет.",
"empty_column.favourited_statuses": "Вы не добавили ни один пост в «Избранное». Как только вы это сделаете, он появится здесь.",
"empty_column.favourites": "Никто ещё не добавил этот пост в «Избранное». Как только кто-то это сделает, это отобразится здесь.",
"empty_column.follow_requests": "Вам ещё не приходили запросы на подписку. Все новые запросы будут показаны здесь.",
- "empty_column.hashtag": "Статусов с таким хэштегом еще не существует.",
+ "empty_column.hashtag": "С этим хэштегом пока ещё ничего не постили.",
"empty_column.home": "Пока вы ни на кого не подписаны. Полистайте {public} или используйте поиск, чтобы освоиться и завести новые знакомства.",
"empty_column.home.public_timeline": "публичные ленты",
"empty_column.list": "В этом списке пока ничего нет.",
"empty_column.lists": "У вас ещё нет списков. Созданные вами списки будут показаны здесь.",
- "empty_column.mutes": "Вы ещё никого не скрывали.",
+ "empty_column.mutes": "Вы ещё никого не добавляли в список игнорируемых.",
"empty_column.notifications": "У вас пока нет уведомлений. Взаимодействуйте с другими, чтобы завести разговор.",
- "empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других узлов, чтобы заполнить ленту.",
+ "empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других узлов, чтобы заполнить ленту",
"error.unexpected_crash.explanation": "Из-за несовместимого браузера или ошибки в нашем коде, эта страница не может быть корректно отображена.",
"error.unexpected_crash.next_steps": "Попробуйте обновить страницу. Если проблема не исчезает, используйте Mastodon из-под другого браузера или приложения.",
- "errors.unexpected_crash.copy_stacktrace": "Копировать стектрейс в буфер обмена",
+ "errors.unexpected_crash.copy_stacktrace": "Скопировать диагностическую информацию",
"errors.unexpected_crash.report_issue": "Сообщить о проблеме",
"follow_request.authorize": "Авторизовать",
"follow_request.reject": "Отказать",
+ "follow_requests.unlocked_explanation": "Этот запрос отправлен с учётной записи, для которой администрация {domain} включила ручную проверку подписок.",
"getting_started.developers": "Разработчикам",
"getting_started.directory": "Каталог профилей",
"getting_started.documentation": "Документация",
@@ -174,30 +190,32 @@
"hashtag.column_settings.tag_mode.all": "Все из списка",
"hashtag.column_settings.tag_mode.any": "Любой из списка",
"hashtag.column_settings.tag_mode.none": "Ни один из списка",
- "hashtag.column_settings.tag_toggle": "Включая дополнительные хэштеге из этой колонки",
+ "hashtag.column_settings.tag_toggle": "Включить дополнительные теги для этой колонки",
"home.column_settings.basic": "Основные",
"home.column_settings.show_reblogs": "Показывать продвижения",
"home.column_settings.show_replies": "Показывать ответы",
+ "home.hide_announcements": "Скрыть объявления",
+ "home.show_announcements": "Показать объявления",
"intervals.full.days": "{number, plural, one {# день} few {# дня} other {# дней}}",
"intervals.full.hours": "{number, plural, one {# час} few {# часа} other {# часов}}",
"intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} other {# минут}}",
"introduction.federation.action": "Далее",
"introduction.federation.federated.headline": "Глобальная лента",
- "introduction.federation.federated.text": "Публичные статусы с других серверов федеративной сети расположатся в глобальной ленте.",
+ "introduction.federation.federated.text": "Публичные посты с других серверов федеративной сети расположатся в глобальной ленте.",
"introduction.federation.home.headline": "Домашняя лента",
- "introduction.federation.home.text": "Статусы от тех, на кого вы подписаны, появятся в вашей домашней ленте. Вы можете подписаться на кого угодно с любого сервера!",
+ "introduction.federation.home.text": "Посты людей, на которых вы подписаны, будут отображаться в домашней ленте. Подписываться можно на кого угодно, независимо от узла.",
"introduction.federation.local.headline": "Локальная лента",
- "introduction.federation.local.text": "Публичные статусы от людей с того же сервера, что и вы, будут отображены в локальной ленте.",
+ "introduction.federation.local.text": "Публичные посты от людей с того же сервера, что и вы, будут отображены в локальной ленте.",
"introduction.interactions.action": "Завершить обучение",
- "introduction.interactions.favourite.headline": "Отметки «нравится»",
- "introduction.interactions.favourite.text": "Вы можете отметить статус, чтобы вернуться к нему позже и дать знать автору, что запись вам понравилась, поставив отметку \"нравится\".",
- "introduction.interactions.reblog.headline": "Продвижения",
- "introduction.interactions.reblog.text": "Вы можете делиться статусами других людей, продвигая их в своём аккаунте.",
- "introduction.interactions.reply.headline": "Ответы",
- "introduction.interactions.reply.text": "Вы можете отвечать свои и чужие посты, образуя цепочки сообщений (обсуждения).",
+ "introduction.interactions.favourite.headline": "Помечайте избранное",
+ "introduction.interactions.favourite.text": "Дайте автору знать, что пост вам понравился и вернитесь к нему позже, добавив его в избранное.",
+ "introduction.interactions.reblog.headline": "Продвигайте",
+ "introduction.interactions.reblog.text": "Делитесь постами других людей со своими подписчиками, продвигая их в своём профиле.",
+ "introduction.interactions.reply.headline": "Отвечайте",
+ "introduction.interactions.reply.text": "Отвечайте на свои или чужие посты, образуя цепочки сообщений — обсуждения.",
"introduction.welcome.action": "Поехали!",
"introduction.welcome.headline": "Первые шаги",
- "introduction.welcome.text": "Добро пожаловать в федеративную сеть! Уже через мгновение вы сможете отправлять сообщения и общаться со своими друзьями на любом сервере. Но этот сервер — {domain} — особенный: на нём располагается ваш профиль. Запомните его название.",
+ "introduction.welcome.text": "Добро пожаловать в Федиверс! Уже через мгновение вы сможете отправлять сообщения и общаться со своими друзьями с любых узлов. Но этот узел — {domain} — особенный: на нём располагается ваш профиль, так что не забудьте его название.",
"keyboard_shortcuts.back": "перейти назад",
"keyboard_shortcuts.blocked": "чтобы открыть список заблокированных",
"keyboard_shortcuts.boost": "продвинуть пост",
@@ -206,9 +224,9 @@
"keyboard_shortcuts.description": "Описание",
"keyboard_shortcuts.direct": "чтобы показать колонку личных сообщений",
"keyboard_shortcuts.down": "вниз по списку",
- "keyboard_shortcuts.enter": "развернуть пост",
+ "keyboard_shortcuts.enter": "открыть пост",
"keyboard_shortcuts.favourite": "в избранное",
- "keyboard_shortcuts.favourites": "открыть 'Избранное'",
+ "keyboard_shortcuts.favourites": "открыть «Избранное»",
"keyboard_shortcuts.federated": "перейти к глобальной ленте",
"keyboard_shortcuts.heading": "Сочетания клавиш",
"keyboard_shortcuts.home": "перейти к домашней ленте",
@@ -216,14 +234,16 @@
"keyboard_shortcuts.legend": "показать это окно",
"keyboard_shortcuts.local": "перейти к локальной ленте",
"keyboard_shortcuts.mention": "упомянуть автора поста",
- "keyboard_shortcuts.muted": "открыть список заглушённых",
+ "keyboard_shortcuts.muted": "открыть список игнорируемых",
"keyboard_shortcuts.my_profile": "перейти к своему профилю",
"keyboard_shortcuts.notifications": "перейти к уведомлениям",
- "keyboard_shortcuts.pinned": "перейти к закреплённым статусам",
+ "keyboard_shortcuts.open_media": "открыть вложение",
+ "keyboard_shortcuts.pinned": "перейти к закреплённым постам",
"keyboard_shortcuts.profile": "перейти к профилю автора",
"keyboard_shortcuts.reply": "ответить",
"keyboard_shortcuts.requests": "перейти к запросам на подписку",
"keyboard_shortcuts.search": "перейти к поиску",
+ "keyboard_shortcuts.spoilers": "показать/скрыть поле предупреждения о содержании",
"keyboard_shortcuts.start": "перейти к разделу \"добро пожаловать\"",
"keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением",
"keyboard_shortcuts.toggle_sensitivity": "показать/скрыть медиафайлы",
@@ -239,26 +259,27 @@
"lists.delete": "Удалить список",
"lists.edit": "Изменить список",
"lists.edit.submit": "Изменить название",
- "lists.new.create": "Новый список",
- "lists.new.title_placeholder": "Заголовок списка",
- "lists.search": "Искать из ваших подписок",
+ "lists.new.create": "Создать список",
+ "lists.new.title_placeholder": "Название для нового списка",
+ "lists.search": "Искать среди подписок",
"lists.subheading": "Ваши списки",
"load_pending": "{count, plural, one {# новый элемент} few {# новых элемента} other {# новых элементов}}",
"loading_indicator.label": "Загрузка...",
"media_gallery.toggle_visible": "Показать/скрыть",
"missing_indicator.label": "Не найдено",
"missing_indicator.sublabel": "Запрашиваемый ресурс не найден",
- "mute_modal.hide_notifications": "Убрать уведомления от этого пользователя?",
+ "mute_modal.hide_notifications": "Скрыть уведомления от этого пользователя?",
"navigation_bar.apps": "Мобильные приложения",
"navigation_bar.blocks": "Список блокировки",
+ "navigation_bar.bookmarks": "Закладки",
"navigation_bar.community_timeline": "Локальная лента",
- "navigation_bar.compose": "Создать новый статус",
+ "navigation_bar.compose": "Создать новый пост",
"navigation_bar.direct": "Личные сообщения",
"navigation_bar.discover": "Изучайте",
"navigation_bar.domain_blocks": "Скрытые домены",
"navigation_bar.edit_profile": "Изменить профиль",
- "navigation_bar.favourites": "Понравившееся",
- "navigation_bar.filters": "Заглушенные слова",
+ "navigation_bar.favourites": "Избранное",
+ "navigation_bar.filters": "Игнорируемые слова",
"navigation_bar.follow_requests": "Запросы на подписку",
"navigation_bar.follows_and_followers": "Подписки и подписчики",
"navigation_bar.info": "Об узле",
@@ -271,29 +292,32 @@
"navigation_bar.preferences": "Настройки",
"navigation_bar.public_timeline": "Глобальная лента",
"navigation_bar.security": "Безопасность",
- "notification.favourite": "{name} понравился Ваш статус",
+ "notification.favourite": "{name} добавил(а) ваш пост в избранное",
"notification.follow": "{name} подписался (-лась) на вас",
+ "notification.follow_request": "{name} отправил запрос на подписку",
"notification.mention": "{name} упомянул(а) вас",
+ "notification.own_poll": "Ваш опрос закончился",
"notification.poll": "Опрос, в котором вы приняли участие, завершился",
- "notification.reblog": "{name} продвинул(а) Ваш статус",
+ "notification.reblog": "{name} продвинул(а) ваш пост",
"notifications.clear": "Очистить уведомления",
"notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?",
- "notifications.column_settings.alert": "Десктопные уведомления",
- "notifications.column_settings.favourite": "Нравится:",
+ "notifications.column_settings.alert": "Уведомления в фоне",
+ "notifications.column_settings.favourite": "Ваш пост добавили в «избранное»:",
"notifications.column_settings.filter_bar.advanced": "Отображать все категории",
- "notifications.column_settings.filter_bar.category": "Фильтры по категориям",
- "notifications.column_settings.filter_bar.show": "Показывать",
- "notifications.column_settings.follow": "Новые подписчики:",
- "notifications.column_settings.mention": "Упоминания:",
- "notifications.column_settings.poll": "Результаты опроса:",
- "notifications.column_settings.push": "Push-уведомления",
- "notifications.column_settings.reblog": "Продвижения:",
- "notifications.column_settings.show": "Показывать в колонке",
+ "notifications.column_settings.filter_bar.category": "Панель сортировки",
+ "notifications.column_settings.filter_bar.show": "Отображать панель сортировки",
+ "notifications.column_settings.follow": "У вас новый подписчик:",
+ "notifications.column_settings.follow_request": "Новые запросы на подписку:",
+ "notifications.column_settings.mention": "Вас упомянули в посте:",
+ "notifications.column_settings.poll": "Опрос, в котором вы приняли участие, завершился:",
+ "notifications.column_settings.push": "Пуш-уведомления",
+ "notifications.column_settings.reblog": "Ваш пост продвинули:",
+ "notifications.column_settings.show": "Отображать в списке",
"notifications.column_settings.sound": "Проигрывать звук",
"notifications.filter.all": "Все",
"notifications.filter.boosts": "Продвижения",
- "notifications.filter.favourites": "Отметки \"нравится\"",
- "notifications.filter.follows": "Новые подписчики",
+ "notifications.filter.favourites": "Отметки «избранного»",
+ "notifications.filter.follows": "Подписки",
"notifications.filter.mentions": "Упоминания",
"notifications.filter.polls": "Результаты опросов",
"notifications.group": "{count} уведомл.",
@@ -305,81 +329,84 @@
"poll.voted": "Вы проголосовали за этот вариант",
"poll_button.add_poll": "Добавить опрос",
"poll_button.remove_poll": "Удалить опрос",
- "privacy.change": "Изменить видимость статуса",
+ "privacy.change": "Изменить видимость поста",
"privacy.direct.long": "Показать только упомянутым",
- "privacy.direct.short": "Направленный",
+ "privacy.direct.short": "Адресованный",
"privacy.private.long": "Показать только подписчикам",
"privacy.private.short": "Приватный",
"privacy.public.long": "Показать в публичных лентах",
"privacy.public.short": "Публичный",
- "privacy.unlisted.long": "Не показывать в лентах",
+ "privacy.unlisted.long": "Не показывать в публичных лентах",
"privacy.unlisted.short": "Скрытый",
"refresh": "Обновить",
"regeneration_indicator.label": "Загрузка…",
- "regeneration_indicator.sublabel": "Ваша домашняя лента готовится!",
- "relative_time.days": "{number}д",
- "relative_time.hours": "{number}ч",
+ "regeneration_indicator.sublabel": "Один момент, мы подготавливаем вашу ленту!",
+ "relative_time.days": "{number} д",
+ "relative_time.hours": "{number} ч",
"relative_time.just_now": "только что",
- "relative_time.minutes": "{number}м",
- "relative_time.seconds": "{number}с",
+ "relative_time.minutes": "{number} мин",
+ "relative_time.seconds": "{number} с",
+ "relative_time.today": "сегодня",
"reply_indicator.cancel": "Отмена",
"report.forward": "Переслать в {target}",
- "report.forward_hint": "Этот аккаунт расположен на другом сервере. Отправить туда анонимную копию Вашей жалобы?",
- "report.hint": "Жалоба будет отправлена модераторам Вашего сервера. Вы также можете указать подробную причину жалобы ниже:",
+ "report.forward_hint": "Эта учётная запись расположена на другом узле. Отправить туда анонимную копию вашей жалобы?",
+ "report.hint": "Жалоба будет отправлена модераторам вашего узла. Вы также можете указать подробную причину жалобы ниже:",
"report.placeholder": "Комментарий",
"report.submit": "Отправить",
"report.target": "Жалоба на {target}",
"search.placeholder": "Поиск",
"search_popout.search_format": "Продвинутый формат поиска",
- "search_popout.tips.full_text": "Возвращает посты, которые Вы написали, отметили как 'избранное', продвинули или в которых были упомянуты, а также содержащие юзернейм, имя и хэштеги.",
+ "search_popout.tips.full_text": "Поиск по простому тексту отобразит посты, которые вы написали, добавили в избранное, продвинули или в которых были упомянуты, а также подходящие имена пользователей и хэштеги.",
"search_popout.tips.hashtag": "хэштег",
- "search_popout.tips.status": "статус",
+ "search_popout.tips.status": "пост",
"search_popout.tips.text": "Простой ввод текста покажет совпадающие имена пользователей, отображаемые имена и хэштеги",
"search_popout.tips.user": "пользователь",
"search_results.accounts": "Люди",
"search_results.hashtags": "Хэштеги",
"search_results.statuses": "Посты",
- "search_results.statuses_fts_disabled": "Поиск постов по их контенту не поддерживается на этом сервере Mastodon.",
+ "search_results.statuses_fts_disabled": "Поиск постов по их содержанию не поддерживается данным узлом Mastodon.",
"search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}",
"status.admin_account": "Открыть интерфейс модератора для @{name}",
- "status.admin_status": "Открыть этот статус в интерфейсе модератора",
+ "status.admin_status": "Открыть этот пост в интерфейсе модератора",
"status.block": "Заблокировать @{name}",
+ "status.bookmark": "Добавить в закладки",
"status.cancel_reblog_private": "Не продвигать",
- "status.cannot_reblog": "Этот статус не может быть продвинут",
- "status.copy": "Копировать ссылку на запись",
+ "status.cannot_reblog": "Этот пост не может быть продвинут",
+ "status.copy": "Скопировать ссылку на пост",
"status.delete": "Удалить",
"status.detailed_status": "Подробный просмотр обсуждения",
"status.direct": "Написать @{name}",
- "status.embed": "Встроить",
- "status.favourite": "Нравится",
+ "status.embed": "Встроить на свой сайт",
+ "status.favourite": "В избранное",
"status.filtered": "Отфильтровано",
- "status.load_more": "Показать еще",
- "status.media_hidden": "Медиа скрыто",
+ "status.load_more": "Загрузить остальное",
+ "status.media_hidden": "Файл скрыт",
"status.mention": "Упомянуть @{name}",
- "status.more": "Больше",
- "status.mute": "Заглушить @{name}",
- "status.mute_conversation": "Заглушить всё обсуждение",
- "status.open": "Развернуть статус",
+ "status.more": "Ещё",
+ "status.mute": "Игнорировать @{name}",
+ "status.mute_conversation": "Игнорировать обсуждение",
+ "status.open": "Открыть пост",
"status.pin": "Закрепить в профиле",
- "status.pinned": "Закреплённый статус",
+ "status.pinned": "Закреплённый пост",
"status.read_more": "Ещё",
"status.reblog": "Продвинуть",
"status.reblog_private": "Продвинуть для своей аудитории",
"status.reblogged_by": "{name} продвинул(а)",
- "status.reblogs.empty": "Никто ещё не продвинул этот статус. Как только кто-то это сделает, они появятся здесь.",
+ "status.reblogs.empty": "Никто ещё не продвинул этот пост. Как только кто-то это сделает, они появятся здесь.",
"status.redraft": "Удалить и исправить",
+ "status.remove_bookmark": "Убрать из закладок",
"status.reply": "Ответить",
"status.replyAll": "Ответить всем",
"status.report": "Пожаловаться",
- "status.sensitive_warning": "Чувствительный контент",
+ "status.sensitive_warning": "Деликатное содержимое",
"status.share": "Поделиться",
"status.show_less": "Свернуть",
- "status.show_less_all": "Свернуть для всех",
+ "status.show_less_all": "Свернуть все спойлеры в ветке",
"status.show_more": "Развернуть",
- "status.show_more_all": "Развернуть для всех",
+ "status.show_more_all": "Развернуть все спойлеры в ветке",
"status.show_thread": "Показать обсуждение",
- "status.uncached_media_warning": "Недоступно",
- "status.unmute_conversation": "Снять глушение с обсуждения",
+ "status.uncached_media_warning": "Файл недоступен",
+ "status.unmute_conversation": "Не игнорировать обсуждение",
"status.unpin": "Открепить от профиля",
"suggestions.dismiss": "Удалить предложение",
"suggestions.header": "Вам может быть интересно…",
@@ -392,31 +419,38 @@
"time_remaining.hours": "{number, plural, one {остался # час} few {осталось # часа} many {осталось # часов} other {осталось # часов}}",
"time_remaining.minutes": "{number, plural, one {осталась # минута} few {осталось # минуты} many {осталось # минут} other {осталось # минут}}",
"time_remaining.moments": "остались считанные мгновения",
- "time_remaining.seconds": "{number, plural, one {осталась # секунду} few {осталось # секунды} many {осталось # секунд} other {осталось # секунд}}",
+ "time_remaining.seconds": "{number, plural, one {# секунда} many {# секунд} other {# секунды}}",
+ "timeline_hint.remote_resource_not_displayed": "Мы не отображаем {resource} с других серверов.",
+ "timeline_hint.resources.followers": "подписчиков",
+ "timeline_hint.resources.follows": "подписки",
+ "timeline_hint.resources.statuses": "Прошлые посты",
"trends.count_by_accounts": "{count} {rawCount, plural, one {человек говорит} few {человека говорят} other {человек говорят}} про это",
"trends.trending_now": "Самое актуальное",
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
"upload_area.title": "Перетащите сюда, чтобы загрузить",
- "upload_button.label": "Добавить медиаконтент",
+ "upload_button.label": "Прикрепить фото, видео или аудио",
"upload_error.limit": "Достигнут лимит загруженных файлов.",
"upload_error.poll": "К опросам нельзя прикреплять файлы.",
+ "upload_form.audio_description": "Опишите аудиофайл для людей с нарушением слуха",
"upload_form.description": "Добавьте описание для людей с нарушениями зрения:",
"upload_form.edit": "Изменить",
"upload_form.undo": "Отменить",
+ "upload_form.video_description": "Опишите видео для людей с нарушением слуха или зрения",
"upload_modal.analyzing_picture": "Обработка изображения…",
"upload_modal.apply": "Применить",
"upload_modal.description_placeholder": "На дворе трава, на траве дрова",
"upload_modal.detect_text": "Найти текст на картинке",
- "upload_modal.edit_media": "Изменение медиа",
+ "upload_modal.edit_media": "Изменить файл",
"upload_modal.hint": "Нажмите и перетащите круг в предпросмотре в точку фокуса, которая всегда будет видна на эскизах.",
"upload_modal.preview_label": "Предпросмотр ({ratio})",
"upload_progress.label": "Загрузка...",
"video.close": "Закрыть видео",
+ "video.download": "Загрузить файл",
"video.exit_fullscreen": "Покинуть полноэкранный режим",
"video.expand": "Развернуть видео",
"video.fullscreen": "Полноэкранный режим",
"video.hide": "Скрыть видео",
- "video.mute": "Заглушить звук",
+ "video.mute": "Выключить звук",
"video.pause": "Пауза",
"video.play": "Пуск",
"video.unmute": "Включить звук"
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
new file mode 100644
index 000000000..79f593417
--- /dev/null
+++ b/app/javascript/mastodon/locales/sc.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Agiunghe o boga dae is listas",
+ "account.badges.bot": "Bot",
+ "account.badges.group": "Grupu",
+ "account.block": "Bloca @{name}",
+ "account.block_domain": "Bloca domìniu{domain}",
+ "account.blocked": "Blocadu",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Annulla rechesta de sighidura",
+ "account.direct": "Messàgiu deretu a @{name}",
+ "account.domain_blocked": "Domìniu blocadu",
+ "account.edit_profile": "Modìfica profilu",
+ "account.endorse": "Cussìgia in su profilu tuo",
+ "account.follow": "Sighi",
+ "account.followers": "Sighiduras",
+ "account.followers.empty": "Nemos sighit ancora custa persone.",
+ "account.follows": "Sighende",
+ "account.follows.empty": "Custa persone non sighit ancora a nemos.",
+ "account.follows_you": "Ti sighit",
+ "account.hide_reblogs": "Cua is cumpartziduras de @{name}",
+ "account.last_status": "Ùrtima atividade",
+ "account.link_verified_on": "Sa propiedade de custu ligàmene est istada controllada su {date}",
+ "account.locked_info": "Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.",
+ "account.media": "Cuntenutu multimediale",
+ "account.mention": "Mentova @{name}",
+ "account.moved_to": "{name} est istadu trasferidu a:",
+ "account.mute": "Pone @name a sa muda",
+ "account.mute_notifications": "Notìficas disativadas dae @{name}",
+ "account.muted": "A sa muda",
+ "account.never_active": "Mai",
+ "account.posts": "Tuts",
+ "account.posts_with_replies": "Tuts e rispostas",
+ "account.report": "Signala @{name}",
+ "account.requested": "Incarca pro annullare sa rechesta de sighidura",
+ "account.share": "Cumpartzi su profilu de @{name}",
+ "account.show_reblogs": "Ammustra is cumpartziduras de @{name}",
+ "account.unblock": "Isbloca @{name}",
+ "account.unblock_domain": "Isbloca su domìniu {domain}",
+ "account.unendorse": "Non cussiges in su profilu",
+ "account.unfollow": "Non sigas prus",
+ "account.unmute": "Torra a ativare @{name}",
+ "account.unmute_notifications": "Ativa notìficas pro @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Torra·bi a proare a pustis de {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Màssimu de rechestas barigadu",
+ "alert.unexpected.message": "B'at àpidu una faddina.",
+ "alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Annùntziu",
+ "autosuggest_hashtag.per_week": "{count} a sa chida",
+ "boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit",
+ "bundle_column_error.body": "Faddina in su carrigamentu de custu cumponente.",
+ "bundle_column_error.retry": "Torra·bi a proare",
+ "bundle_column_error.title": "Faddina de connessione",
+ "bundle_modal_error.close": "Serra",
+ "bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.",
+ "bundle_modal_error.retry": "Torra·bi a proare",
+ "column.blocks": "Persones blocadas",
+ "column.bookmarks": "Marcadores",
+ "column.community": "Lìnia de tempus locale",
+ "column.direct": "Messàgios diretos",
+ "column.directory": "Nàviga in is profilos",
+ "column.domain_blocks": "Domìnios blocados",
+ "column.favourites": "Preferidos",
+ "column.follow_requests": "Rechestas de sighidura",
+ "column.home": "Printzipale",
+ "column.lists": "Listas",
+ "column.mutes": "Persones a sa muda",
+ "column.notifications": "Notìficas",
+ "column.pins": "Tuts apicados",
+ "column.public": "Lìnia de tempus federada",
+ "column_back_button.label": "In segus",
+ "column_header.hide_settings": "Cua is cunfiguratziones",
+ "column_header.moveLeft_settings": "Moe sa colunna a manca",
+ "column_header.moveRight_settings": "Moe sa colunna a dereta",
+ "column_header.pin": "Apica",
+ "column_header.show_settings": "Ammustra is cunfiguratziones",
+ "column_header.unpin": "Boga dae pitzu",
+ "column_subheading.settings": "Cunfiguratziones",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "Multimediale isceti",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "Custu tut at a èssere imbiadu isceti a is persones mentovadas.",
+ "compose_form.direct_message_warning_learn_more": "Àteras informatziones",
+ "compose_form.hashtag_warning": "Custu tut no at a èssere ammustradu in peruna eticheta, dae chi no est listadu.",
+ "compose_form.lock_disclaimer": "Cale si siat persone ti podet sighire pro bìdere is messàgios tuos chi imbies a is chi ti sighint.",
+ "compose_form.lock_disclaimer.lock": "blocadu",
+ "compose_form.placeholder": "A ite ses pensende?",
+ "compose_form.poll.add_option": "Agiunghe unu sèberu",
+ "compose_form.poll.duration": "Longària de su sondàgiu",
+ "compose_form.poll.option_placeholder": "Optzione {number}",
+ "compose_form.poll.remove_option": "Boga custa optzione",
+ "compose_form.poll.switch_to_multiple": "Muda su sondàgiu pro permìtere multi-optziones",
+ "compose_form.poll.switch_to_single": "Muda su sondàgiu pro permìtere un'optzione isceti",
+ "compose_form.publish": "Tut",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Marca mèdia comente a sensìbile",
+ "compose_form.sensitive.marked": "Mèdia marcadu comente a sensìbile",
+ "compose_form.sensitive.unmarked": "Mèdia non marcadu comente a sensìbile",
+ "compose_form.spoiler.marked": "Su testu est cuadu dae s'avisu",
+ "compose_form.spoiler.unmarked": "Su testu no est cuadu",
+ "compose_form.spoiler_placeholder": "Iscrie s'avisu tuo inoghe",
+ "confirmation_modal.cancel": "Annulla",
+ "confirmations.block.block_and_report": "Bloca e signala",
+ "confirmations.block.confirm": "Bloca",
+ "confirmations.block.message": "Seguru chi boles blocare {name}?",
+ "confirmations.delete.confirm": "Cantzella",
+ "confirmations.delete.message": "Seguru chi boles cantzellare custu tut?",
+ "confirmations.delete_list.confirm": "Cantzella",
+ "confirmations.delete_list.message": "Seguru chi boles cantzellare custa lista in manera permanente?",
+ "confirmations.domain_block.confirm": "Cua totu su domìniu",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.logout.confirm": "Essi·nche",
+ "confirmations.logout.message": "Seguru chi boles essire?",
+ "confirmations.mute.confirm": "A sa muda",
+ "confirmations.mute.explanation": "Custu at a cuare is publicatziones issoro e is messàgios chi ddos mentovant, ma ant a pòdere bìdere is messàgios tuos e t'ant a pòdere sighire.",
+ "confirmations.mute.message": "Seguru chi boles pònnere {name} a sa muda?",
+ "confirmations.redraft.confirm": "Cantzella e torra a fàghere",
+ "confirmations.redraft.message": "As a pèrdere is preferidos e is cumpartziduras, e is rispostas a su messàgiu originale ant a abarrare òrfanas.",
+ "confirmations.reply.confirm": "Risponde",
+ "confirmations.reply.message": "Rispondende immoe as a subraiscrìere su messàgiu chi ses iscriende. Seguru chi boles sighire?",
+ "confirmations.unfollow.confirm": "Non sigas prus",
+ "confirmations.unfollow.message": "Seguru chi non boles sighire prus {name}?",
+ "conversation.delete": "Cantzella arresonada",
+ "conversation.mark_as_read": "Signala comente lèghidu",
+ "conversation.open": "Bide arresonada",
+ "conversation.with": "Cun {names}",
+ "directory.federated": "Dae unu fediversu connòschidu",
+ "directory.local": "Isceti dae {domain}",
+ "directory.new_arrivals": "Arribos noos",
+ "directory.recently_active": "Ativos dae pagu",
+ "embed.instructions": "Inserta custu tut in su situ web tuo copiende su còdighe de suta.",
+ "embed.preview": "At a aparèssere aici:",
+ "emoji_button.activity": "Atividade",
+ "emoji_button.custom": "Personalizadu",
+ "emoji_button.flags": "Banderas",
+ "emoji_button.food": "Mandigòngiu e bufòngiu",
+ "emoji_button.label": "Inserta un'emoji",
+ "emoji_button.nature": "Natura",
+ "emoji_button.not_found": "Emojis no!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Ogetos",
+ "emoji_button.people": "Gente",
+ "emoji_button.recent": "Impreadu a fitianu",
+ "emoji_button.search": "Chirca...",
+ "emoji_button.search_results": "Resurtados de sa chirca",
+ "emoji_button.symbols": "Sìmbulos",
+ "emoji_button.travel": "Biàgios e logos",
+ "empty_column.account_timeline": "Perunu tut inoghe!",
+ "empty_column.account_unavailable": "Su profilu no est a disponimentu",
+ "empty_column.blocks": "No as isblocadu ancora nemos.",
+ "empty_column.bookmarked_statuses": "Non tenes ancora perunu tut in is marcadores. Cando nd'as a agiùnghere unu, at a èssere ammustradu inoghe.",
+ "empty_column.community": "Sa lìnia de tempus locale est bòida. Iscrie inoghe pro cumintzare sa festa!",
+ "empty_column.direct": "Non tenes ancora perunu messàgiu deretu. Cando nd'as a imbiare o nd'as a retzire unu, at a èssere ammustradu inoghe.",
+ "empty_column.domain_blocks": "Non tenes ancora perunu domìniu blocadu.",
+ "empty_column.favourited_statuses": "Non tenes ancora perunu tut in is marcadores. Cando nd'as a agiùnghere unu, at a èssere ammustradu inoghe.",
+ "empty_column.favourites": "Nemos at marcadu ancora custu tut comente preferidu. Cando calicunu dd'at a fàghere, at a èssere ammustradu inoghe.",
+ "empty_column.follow_requests": "Non tenes ancora peruna rechesta de sighidura. Cando nd'as a retzire una, at a èssere ammustrada inoghe.",
+ "empty_column.hashtag": "Ancora nudda in custa eticheta.",
+ "empty_column.home": "Sa lìnia de tempus printzipale tua est bòida. Visita {public} o imprea sa chirca pro cumintzare e agatare àteras persones.",
+ "empty_column.home.public_timeline": "sa lìnia de tempus pùblica",
+ "empty_column.list": "Nudda ancora in custa lista. Cando is persones de custa lista ant a publicare àteros istados, ant a aparèssere inoghe.",
+ "empty_column.lists": "Non tenes ancora peruna lista. Cando nd'as a creare una, at a èssere ammustrada inoghe.",
+ "empty_column.mutes": "No as postu ancora nemos a sa muda.",
+ "empty_column.notifications": "Non tenes ancora peruna notìfica. Chistiona cun una persone pro cumintzare un'arresonada.",
+ "empty_column.public": "Nudda inoghe. Iscrie calicuna cosa pùblica, o sighi àteras persones de àteros serbidores pro prenare custu ispàtziu",
+ "error.unexpected_crash.explanation": "A càusa de una faddina in su còdighe nostru o unu problema de cumpatibilidade de su navigadore, custa pàgina diat pòdere no èssere ammustrada in manera curreta.",
+ "error.unexpected_crash.next_steps": "Proa de atualizare sa pàgina. Si custu non acontza su problema, podes chircare de impreare Mastodon in unu navigadore diferente o in un'aplicatzione nativa.",
+ "errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace in punta de billete",
+ "errors.unexpected_crash.report_issue": "Signala unu problema",
+ "follow_request.authorize": "Autoriza",
+ "follow_request.reject": "Refuda",
+ "follow_requests.unlocked_explanation": "Fintzas si su contu tuo no est blocadu, su personale de {domain} at pensadu chi forsis bolias revisionare a manu is rechestas de custos contos.",
+ "getting_started.developers": "Iscuadra de isvilupu",
+ "getting_started.directory": "Diretòriu de profilos",
+ "getting_started.documentation": "Documentatzione",
+ "getting_started.heading": "Comente cumintzare",
+ "getting_started.invite": "Invita gente",
+ "getting_started.open_source_notice": "Mastodon est de còdighe abertu. Bi podes contribuire o signalare faddinas in {github}.",
+ "getting_started.security": "Cunfiguratziones de su contu",
+ "getting_started.terms": "Cunditziones de su servìtziu",
+ "hashtag.column_header.tag_mode.all": "e {additional}",
+ "hashtag.column_header.tag_mode.any": "o {additional}",
+ "hashtag.column_header.tag_mode.none": "sena {additional}",
+ "hashtag.column_settings.select.no_options_message": "Perunu cussìgiu agatadu",
+ "hashtag.column_settings.select.placeholder": "Introdue etichetas…",
+ "hashtag.column_settings.tag_mode.all": "Totu custos",
+ "hashtag.column_settings.tag_mode.any": "Cale si siat de custos",
+ "hashtag.column_settings.tag_mode.none": "Perunu de custos",
+ "hashtag.column_settings.tag_toggle": "Include etichetas additzionales pro custa colunna",
+ "home.column_settings.basic": "Bàsicu",
+ "home.column_settings.show_reblogs": "Ammustra is cumpartziduras",
+ "home.column_settings.show_replies": "Ammustra rispostas",
+ "home.hide_announcements": "Cua annùntzios",
+ "home.show_announcements": "Ammustra annùntzios",
+ "intervals.full.days": "{number, plural, one {# die} other {# die}}",
+ "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}",
+ "intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}",
+ "introduction.federation.action": "Sighi",
+ "introduction.federation.federated.headline": "Federada",
+ "introduction.federation.federated.text": "Is publicatziones pùblicas de àteros serbidores de su fediversu ant a aparèssere in sa lìnia de tempus federada.",
+ "introduction.federation.home.headline": "Printzipale",
+ "introduction.federation.home.text": "Is messàgios de gente chi sighis ant a aparèssere in lìnia de tempus printzipale tua. Podes sighire gente de cale si siat serbidore.",
+ "introduction.federation.local.headline": "Locale",
+ "introduction.federation.local.text": "Is publicatziones pùblicas de sa gente de su pròpiu serbidore tuo ant a aparèssere in sa lìnia de tempus locale.",
+ "introduction.interactions.action": "Acabba su tutoriale!",
+ "introduction.interactions.favourite.headline": "Preferidos",
+ "introduction.interactions.favourite.text": "Podes sarvare unu tut pro ddu lèghere prus tardu, e fàghere ischire a chie dd'apat iscritu chi t'est pràghidu marchende·ddu comente a preferidu.",
+ "introduction.interactions.reblog.headline": "Cumpartzi",
+ "introduction.interactions.reblog.text": "Cun is cumpartziduras podes fàghere connòschere tuts de àtera gente a chie ti sighit.",
+ "introduction.interactions.reply.headline": "Risponde",
+ "introduction.interactions.reply.text": "Podes rispòndere a is tuts de àtera gente e a is tuos pròpios, e ant a èssere unidos in un'arresonada.",
+ "introduction.welcome.action": "Ajò, andamus!",
+ "introduction.welcome.headline": "Primos passos",
+ "introduction.welcome.text": "Ti donamus sa benebènnida a su fediversu. Dae immoe a pagu, as a pòdere publicare messàgios e chistionare cun is amistades tuas in meda serbidores. Però custu serbidore, {domain}, est ispetziale: allògiat su profilu tuo, duncas regorda·nde si nòmine.",
+ "keyboard_shortcuts.back": "pro navigare in segus",
+ "keyboard_shortcuts.blocked": "pro abèrrere sa lista de persones blocadas",
+ "keyboard_shortcuts.boost": "pro cumpartzire",
+ "keyboard_shortcuts.column": "pro atzentrare un'istadu in una de is colunnas",
+ "keyboard_shortcuts.compose": "pro atzentrare in s'àrea de cumpositzione de testu",
+ "keyboard_shortcuts.description": "Descritzione",
+ "keyboard_shortcuts.direct": "pro abèrrere sa colunna de messàgios diretos",
+ "keyboard_shortcuts.down": "pro mòere in bàsciu in sa lista",
+ "keyboard_shortcuts.enter": "pro abèrrere s'istadu",
+ "keyboard_shortcuts.favourite": "pro marcare comente a preferidu",
+ "keyboard_shortcuts.favourites": "pro abèrrere sa lista de preferidos",
+ "keyboard_shortcuts.federated": "pro abèrrere sa lìnia de tempus federada",
+ "keyboard_shortcuts.heading": "Incurtzaduras de tecladu",
+ "keyboard_shortcuts.home": "pro abèrrere sa lìnia de tempus printzipale",
+ "keyboard_shortcuts.hotkey": "Tecla de atzessu diretu",
+ "keyboard_shortcuts.legend": "pro ammustrare custa didascalia",
+ "keyboard_shortcuts.local": "pro abèrrere sa lìnia de tempus locale",
+ "keyboard_shortcuts.mention": "pro mentovare s'atributzione",
+ "keyboard_shortcuts.muted": "pro abèrrere sa lista de persones a sa muda",
+ "keyboard_shortcuts.my_profile": "pro abèrrere su profilu tuo",
+ "keyboard_shortcuts.notifications": "pro abèrrere sa colunna de notificatziones",
+ "keyboard_shortcuts.open_media": "pro abèrrere mèdia",
+ "keyboard_shortcuts.pinned": "pro abèrrere lista de tuts apicados",
+ "keyboard_shortcuts.profile": "pro abèrrere su profilu de s'autore",
+ "keyboard_shortcuts.reply": "pro rispòndere",
+ "keyboard_shortcuts.requests": "pro abèrrere sa lista de rechestas de sighidura",
+ "keyboard_shortcuts.search": "pro atzentrare sa chirca",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "pro abèrrere sa colunna \"Cumintza\"",
+ "keyboard_shortcuts.toggle_hidden": "pro ammustrare o cuare testu de is CW",
+ "keyboard_shortcuts.toggle_sensitivity": "pro ammustrare o cuare mèdias",
+ "keyboard_shortcuts.toot": "pro cumintzare a iscrìere unu tut nou",
+ "keyboard_shortcuts.unfocus": "pro essire de s'àrea de cumpositzione de testu o de chirca",
+ "keyboard_shortcuts.up": "pro mòere in susu in sa lista",
+ "lightbox.close": "Serra",
+ "lightbox.next": "Sighi",
+ "lightbox.previous": "Pretzedente",
+ "lightbox.view_context": "Bide su cuntestu",
+ "lists.account.add": "Agiùnghe a sa lista",
+ "lists.account.remove": "Boga dae sa lista",
+ "lists.delete": "Cantzella sa lista",
+ "lists.edit": "Modìfica sa lista",
+ "lists.edit.submit": "Muda su tìtulu",
+ "lists.new.create": "Agiunghe lista",
+ "lists.new.title_placeholder": "Lista noa",
+ "lists.search": "Chircare intre sa gente chi ses sighende",
+ "lists.subheading": "Is listas tuas",
+ "load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}",
+ "loading_indicator.label": "Carrighende...",
+ "media_gallery.toggle_visible": "Cua mèdia",
+ "missing_indicator.label": "Perunu resurtadu",
+ "missing_indicator.sublabel": "Resursa no agatada",
+ "mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?",
+ "navigation_bar.apps": "Aplicatziones mòbiles",
+ "navigation_bar.blocks": "Persones blocadas",
+ "navigation_bar.bookmarks": "Marcadores",
+ "navigation_bar.community_timeline": "Lìnia de tempus locale",
+ "navigation_bar.compose": "Cumpone unu tut nou",
+ "navigation_bar.direct": "Messàgios diretos",
+ "navigation_bar.discover": "Iscoberi",
+ "navigation_bar.domain_blocks": "Domìnios blocados",
+ "navigation_bar.edit_profile": "Modìfica profilu",
+ "navigation_bar.favourites": "Preferidos",
+ "navigation_bar.filters": "Paràulas a sa muda",
+ "navigation_bar.follow_requests": "Rechestas de sighidura",
+ "navigation_bar.follows_and_followers": "Persones chi sighis e chi ti sighint",
+ "navigation_bar.info": "Informatziones de su serbidore",
+ "navigation_bar.keyboard_shortcuts": "Teclas de atzessu diretu",
+ "navigation_bar.lists": "Listas",
+ "navigation_bar.logout": "Essi",
+ "navigation_bar.mutes": "Persones a sa muda",
+ "navigation_bar.personal": "Informatziones personales",
+ "navigation_bar.pins": "Tuts apicados",
+ "navigation_bar.preferences": "Preferèntzias",
+ "navigation_bar.public_timeline": "Lìnia de tempus federada",
+ "navigation_bar.security": "Seguresa",
+ "notification.favourite": "{name} at marcadu s'istadu tuo comente a preferidu",
+ "notification.follow": "{name} ti sighit",
+ "notification.follow_request": "{name} at dimandadu de ti sighire",
+ "notification.mention": "{name} t'at mentovadu",
+ "notification.own_poll": "Sondàgiu acabbadu",
+ "notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu",
+ "notification.reblog": "{name} at cumpartzidu s'istadu tuo",
+ "notifications.clear": "Lìmpia notìficas",
+ "notifications.clear_confirmation": "Seguru chi boles isboidare in manera permanente totu is notìficas tuas?",
+ "notifications.column_settings.alert": "Notìficas de iscrivania",
+ "notifications.column_settings.favourite": "Preferidos:",
+ "notifications.column_settings.filter_bar.advanced": "Ammustra totu is categorias",
+ "notifications.column_settings.filter_bar.category": "Barra lestra de filtros",
+ "notifications.column_settings.filter_bar.show": "Ammustra",
+ "notifications.column_settings.follow": "Gente noa chi ti sighit:",
+ "notifications.column_settings.follow_request": "Rechesta de sighidura noa:",
+ "notifications.column_settings.mention": "Mentovos:",
+ "notifications.column_settings.poll": "Resurtados de su sondàgiu:",
+ "notifications.column_settings.push": "Notìficas push",
+ "notifications.column_settings.reblog": "Cumpartziduras:",
+ "notifications.column_settings.show": "Ammustra in sa colunna",
+ "notifications.column_settings.sound": "Reprodue unu sonu",
+ "notifications.filter.all": "Totus",
+ "notifications.filter.boosts": "Cumpartziduras",
+ "notifications.filter.favourites": "Preferidos",
+ "notifications.filter.follows": "Sighende",
+ "notifications.filter.mentions": "Mentovos",
+ "notifications.filter.polls": "Resurtados dae su sondàgiu",
+ "notifications.group": "{count} notìficas",
+ "poll.closed": "Serradu",
+ "poll.refresh": "Atualiza",
+ "poll.total_people": "{count, plurale, one {# persone} other {# persones}}",
+ "poll.total_votes": "{count, plurale, one {# votu} other {# votos}}",
+ "poll.vote": "Vota",
+ "poll.voted": "As votadu custa risposta",
+ "poll_button.add_poll": "Agiunghe unu sondàgiu",
+ "poll_button.remove_poll": "Cantzella su sondàgiu",
+ "privacy.change": "Acontza s'istadu de riservadesa",
+ "privacy.direct.long": "Visìbile isceti pro is persones mentovadas",
+ "privacy.direct.short": "Deretu",
+ "privacy.private.long": "Visìbile isceti pro chie ti sighit",
+ "privacy.private.short": "Isceti pro chie ti sighit",
+ "privacy.public.long": "Visìbile pro chie si siat, ammustra in lìnias de tempus pùblicas",
+ "privacy.public.short": "Pùblicu",
+ "privacy.unlisted.long": "Visìbile pro chie si siat, però no ammustres in lìnias de tempus pùblicas",
+ "privacy.unlisted.short": "Esclùidu de sa lista",
+ "refresh": "Atualiza",
+ "regeneration_indicator.label": "Carrighende…",
+ "regeneration_indicator.sublabel": "Preparende sa lìnia de tempus printzipale tua.",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "immoe",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "relative_time.today": "oe",
+ "reply_indicator.cancel": "Annulla",
+ "report.forward": "Torra a imbiare a {target}",
+ "report.forward_hint": "Custu contu est de un'àteru serbidore. Bi boles imbiare puru una còpia anònima de custu informe?",
+ "report.hint": "S'informe at a èssere imbiadu a sa moderatzione de su serbidore. Podes frunire un'ispiegatzione de sa signalatzione tua de custu contu:",
+ "report.placeholder": "Cummentos additzionales",
+ "report.submit": "Imbia",
+ "report.target": "Informende de {target}",
+ "search.placeholder": "Chirca",
+ "search_popout.search_format": "Formadu de chirca avantzada",
+ "search_popout.tips.full_text": "Testu sèmplitze pro agatare istados chi as iscritu, marcadu comente a preferidos, cumpartzidu o chi t'ant mentovadu, e fintzas nòmines de utente, nòmines visualizados e etichetas chi ddu includent.",
+ "search_popout.tips.hashtag": "eticheta",
+ "search_popout.tips.status": "istadu",
+ "search_popout.tips.text": "Testu sèmplitze pro agatare nòmines visualizados, nòmines de utente e etichetas",
+ "search_popout.tips.user": "utente",
+ "search_results.accounts": "Gente",
+ "search_results.hashtags": "Etichetas",
+ "search_results.statuses": "Tuts",
+ "search_results.statuses_fts_disabled": "Sa chirca de tuts pro su cuntenutu issoro no est abilitada in custu serbidore de Mastodon.",
+ "search_results.total": "{count, number} {count, plurale, one {resurtadu} other {resurtados}}",
+ "status.admin_account": "Aberi s'interfache de moderatzione pro @{name}",
+ "status.admin_status": "Aberi custu istadu in s'interfache de moderatzione",
+ "status.block": "Bloca @{name}",
+ "status.bookmark": "Marcadore",
+ "status.cancel_reblog_private": "Iscontza sa cumpartzidura",
+ "status.cannot_reblog": "Custa publicatzione non podet èssere cumpartzida",
+ "status.copy": "Còpia su ligàmene a s'istadu tuo",
+ "status.delete": "Cantzella",
+ "status.detailed_status": "Visualizatzione de detàlliu de arresonada",
+ "status.direct": "Messàgiu deretu a @{name}",
+ "status.embed": "Afissa",
+ "status.favourite": "Preferidos",
+ "status.filtered": "Filtradu",
+ "status.load_more": "Càrriga·nde àteros",
+ "status.media_hidden": "Mèdias cuados",
+ "status.mention": "Mentova @{name}",
+ "status.more": "Àteru",
+ "status.mute": "Pone @name a sa muda",
+ "status.mute_conversation": "Pone s'arresonada a sa muda",
+ "status.open": "Ismànnia custu istadu",
+ "status.pin": "Apica in su profilu",
+ "status.pinned": "Tut apicadu",
+ "status.read_more": "Lèghe·nde àteru",
+ "status.reblog": "Cumpartzi",
+ "status.reblog_private": "Cumpartzi cun is utentes originales",
+ "status.reblogged_by": "{name} at cumpartzidu",
+ "status.reblogs.empty": "No one has boosted this toot yet. Cando calicunu dd'at a fàghere, at a èssere ammustradu inoghe.",
+ "status.redraft": "Cantzella e torra a iscrìere",
+ "status.remove_bookmark": "Boga su marcadore",
+ "status.reply": "Risponde",
+ "status.replyAll": "Risponde a su tema",
+ "status.report": "Signala @{name}",
+ "status.sensitive_warning": "Cuntenutu sensìbile",
+ "status.share": "Cumpartzi",
+ "status.show_less": "Ammustra·nde prus pagu",
+ "status.show_less_all": "Ammustra·nde prus pagu pro totus",
+ "status.show_more": "Ammustra·nde prus",
+ "status.show_more_all": "Ammustra·nde prus pro totus",
+ "status.show_thread": "Ammustra su tema",
+ "status.uncached_media_warning": "No est a disponimentu",
+ "status.unmute_conversation": "Torra a ativare s'arresonada",
+ "status.unpin": "Isbloca dae pitzu de su profilu",
+ "suggestions.dismiss": "Iscarta cussìgiu",
+ "suggestions.header": "Est possìbile chi tèngias interessu in…",
+ "tabs_bar.federated_timeline": "Federada",
+ "tabs_bar.home": "Printzipale",
+ "tabs_bar.local_timeline": "Locale",
+ "tabs_bar.notifications": "Notìficas",
+ "tabs_bar.search": "Chirca",
+ "time_remaining.days": "{number, plural, one {abarrat # die} other {abarrant # dies}}",
+ "time_remaining.hours": "{number, plural, one {abarrat # ora} other {abarrant # oras}}",
+ "time_remaining.minutes": "{number, plural, one {abarrat # minutu} other {abarrant # minutos}}",
+ "time_remaining.moments": "Abarrant pagu momentos",
+ "time_remaining.seconds": "{number, plural, one {abarrat # segundu} other {abarrant # segundos}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {persone} other {persones}} nde sunt chistionende",
+ "trends.trending_now": "Est tendèntzia immoe",
+ "ui.beforeunload": "S'abbotzu tuo at a èssere pèrdidu si essis dae Mastodon.",
+ "upload_area.title": "Traga pro carrigare",
+ "upload_button.label": "Agiunghe mèdias ({formats})",
+ "upload_error.limit": "Lìmite de càrriga de archìvios barigadu.",
+ "upload_error.poll": "Non si permitit s'imbiu de archìvios in is sondàgios.",
+ "upload_form.audio_description": "Descritzione pro persones cun pèrdida auditiva",
+ "upload_form.description": "Descritzione pro persones cun problemas visuales",
+ "upload_form.edit": "Modìfica",
+ "upload_form.undo": "Cantzella",
+ "upload_form.video_description": "Descritzione pro persones cun pèrdida auditiva o problemas visuales",
+ "upload_modal.analyzing_picture": "Analizende immàgine…",
+ "upload_modal.apply": "Àplica",
+ "upload_modal.description_placeholder": "Su margiane castàngiu brincat lestru a subra de su cane mandrone",
+ "upload_modal.detect_text": "Rileva testu de s'immàgine",
+ "upload_modal.edit_media": "Modìfica su mèdia",
+ "upload_modal.hint": "Incarca o traga su tzìrculu in sa previsualizatzione pro seberare su puntu focale chi at a èssere semper visìbile in totu is miniaturas.",
+ "upload_modal.preview_label": "Previsualiza ({ratio})",
+ "upload_progress.label": "Carrighende...",
+ "video.close": "Serra su vìdeu",
+ "video.download": "Iscàrriga archìviu",
+ "video.exit_fullscreen": "Essi de ischermu in mannària prena",
+ "video.expand": "Ismànnia su vìdeu",
+ "video.fullscreen": "Ischermu in mannària prena",
+ "video.hide": "Cua vìdeu",
+ "video.mute": "A sa muda",
+ "video.pause": "Pàusa",
+ "video.play": "Reprodue",
+ "video.unmute": "Ativa sonu"
+}
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 5d2726309..2b5060efe 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -1,20 +1,24 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Pridaj do, alebo odober zo zoznamov",
"account.badges.bot": "Bot",
+ "account.badges.group": "Skupina",
"account.block": "Blokuj @{name}",
"account.block_domain": "Ukry všetko z {domain}",
"account.blocked": "Blokovaný/á",
- "account.cancel_follow_request": "Zruš požiadanie o sledovanie",
- "account.direct": "Súkromná správa pre @{name}",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Zruš žiadosť o sledovanie",
+ "account.direct": "Priama správa pre @{name}",
"account.domain_blocked": "Doména ukrytá",
"account.edit_profile": "Uprav profil",
"account.endorse": "Zobrazuj na profile",
- "account.follow": "Následuj",
+ "account.follow": "Nasleduj",
"account.followers": "Sledujúci",
- "account.followers.empty": "Tohto užívateľa ešte nikto nenásleduje.",
- "account.follows": "Následuje",
- "account.follows.empty": "Tento užívateľ ešte nikoho nenásleduje.",
- "account.follows_you": "Následuje ťa",
+ "account.followers.empty": "Tohto používateľa ešte nikto nenásleduje.",
+ "account.follows": "Nasleduje",
+ "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.",
+ "account.follows_you": "Nasleduje ťa",
"account.hide_reblogs": "Skry vyzdvihnutia od @{name}",
"account.last_status": "Naposledy aktívny",
"account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}",
@@ -27,7 +31,7 @@
"account.muted": "Utíšený/á",
"account.never_active": "Nikdy",
"account.posts": "Príspevkov",
- "account.posts_with_replies": "Príspevky aj s odpoveďami",
+ "account.posts_with_replies": "Príspevky, aj s odpoveďami",
"account.report": "Nahlás @{name}",
"account.requested": "Čaká na schválenie. Klikni pre zrušenie žiadosti",
"account.share": "Zdieľaj @{name} profil",
@@ -38,10 +42,15 @@
"account.unfollow": "Prestaň následovať",
"account.unmute": "Prestaň ignorovať @{name}",
"account.unmute_notifications": "Zruš stĺmenie oboznámení od @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Prosím, skús to znova za {retry_time, time, medium}.",
"alert.rate_limited.title": "Tempo obmedzené",
"alert.unexpected.message": "Vyskytla sa nečakaná chyba.",
"alert.unexpected.title": "Ups!",
+ "announcement.announcement": "Oboznámenie",
"autosuggest_hashtag.per_week": "{count} týždenne",
"boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie",
"bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.",
@@ -51,8 +60,9 @@
"bundle_modal_error.message": "Nastala chyba pri načítaní tohto komponentu.",
"bundle_modal_error.retry": "Skúsiť znova",
"column.blocks": "Blokovaní užívatelia",
+ "column.bookmarks": "Záložky",
"column.community": "Miestna časová os",
- "column.direct": "Súkromné správy",
+ "column.direct": "Priame správy",
"column.directory": "Prehľadávaj profily",
"column.domain_blocks": "Skryté domény",
"column.favourites": "Obľúbené",
@@ -69,11 +79,13 @@
"column_header.moveRight_settings": "Presuň stĺpec doprava",
"column_header.pin": "Pripni",
"column_header.show_settings": "Ukáž nastavenia",
- "column_header.unpin": "Odopnúť",
+ "column_header.unpin": "Odopni",
"column_subheading.settings": "Nastavenia",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Iba médiá",
- "compose_form.direct_message_warning": "Tento príspevok bude videný výhradne iba spomenutými užívateľmi. Ber ale na vedomie že správci tvojej a všetkých iných zahrnutých instancií majú možnosť skontrolovať túto správu.",
- "compose_form.direct_message_warning_learn_more": "Zistiť viac",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "Tento príspevok bude boslaný iba spomenutým užívateľom.",
+ "compose_form.direct_message_warning_learn_more": "Zisti viac",
"compose_form.hashtag_warning": "Tento toot nebude zobrazený pod žiadným haštagom lebo nieje listovaný. Iba verejné tooty môžu byť nájdené podľa haštagu.",
"compose_form.lock_disclaimer": "Tvoj účet nie je {locked}. Ktokoľvek ťa môže nasledovať a vidieť tvoje správy pre sledujúcich.",
"compose_form.lock_disclaimer.lock": "zamknutý",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Trvanie ankety",
"compose_form.poll.option_placeholder": "Voľba {number}",
"compose_form.poll.remove_option": "Odstráň túto voľbu",
+ "compose_form.poll.switch_to_multiple": "Zmeň anketu pre povolenie viacerých možností",
+ "compose_form.poll.switch_to_single": "Zmeň anketu na takú s jedinou voľbou",
"compose_form.publish": "Pošli",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Označ médiá ako chúlostivé",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "Odhlás sa",
"confirmations.logout.message": "Si si istý/á, že sa chceš odhlásiť?",
"confirmations.mute.confirm": "Ignoruj",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Toto nastavenie pred tebou skryje ich príspevky, alebo príspevky od iných v ktorých sú spomenutí, ale umožní im vidieť tvoje príspevky, aj ťa následovať.",
"confirmations.mute.message": "Naozaj chceš ignorovať {name}?",
"confirmations.redraft.confirm": "Vyčisti a prepíš",
"confirmations.redraft.message": "Si si istý/á, že chceš premazať a prepísať tento príspevok? Jeho nadobudnuté vyzdvihnutia a obľúbenia, ale i odpovede na pôvodný príspevok budú odlúčené.",
@@ -138,8 +152,9 @@
"empty_column.account_timeline": "Niesú tu žiadne príspevky!",
"empty_column.account_unavailable": "Profil nedostupný",
"empty_column.blocks": "Ešte si nikoho nezablokoval/a.",
+ "empty_column.bookmarked_statuses": "Ešte nemáš žiadné záložky. Keď si pridáš príspevok k záložkám, zobrazí sa tu.",
"empty_column.community": "Lokálna časová os je prázdna. Napíšte niečo, aby sa to tu začalo hýbať!",
- "empty_column.direct": "Ešte nemáš žiadne súkromné správy. Keď nejakú pošleš, alebo dostaneš, ukáže sa tu.",
+ "empty_column.direct": "Ešte nemáš žiadne priame správy. Keď nejakú pošleš, alebo dostaneš, ukáže sa tu.",
"empty_column.domain_blocks": "Žiadne domény ešte niesú skryté.",
"empty_column.favourited_statuses": "Nemáš obľúbené ešte žiadne príspevky. Keď si nejaký obľúbiš, bude zobrazený práve tu.",
"empty_column.favourites": "Tento toot si ešte nikto neobľúbil. Ten kto si ho obľúbi, bude zobrazený tu.",
@@ -152,12 +167,13 @@
"empty_column.mutes": "Ešte si nestĺmil žiadných užívateľov.",
"empty_column.notifications": "Ešte nemáš žiadne oznámenia. Začni komunikovať s ostatnými, aby diskusia mohla začať.",
"empty_column.public": "Ešte tu nič nie je. Napíš niečo verejne, alebo začni sledovať užívateľov z iných serverov, aby tu niečo pribudlo",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "error.unexpected_crash.explanation": "Kvôli chybe v našom kóde, alebo problému s kompatibilitou prehliadača, túto stránku nebolo možné zobraziť správne.",
+ "error.unexpected_crash.next_steps": "Skús obnoviť stránku. Ak to nepomôže, pravdepodobne budeš stále môcť používať Mastodon cez iný prehliadač, alebo natívnu aplikáciu.",
"errors.unexpected_crash.copy_stacktrace": "Skopíruj stacktrace do schránky",
"errors.unexpected_crash.report_issue": "Nahlás problém",
"follow_request.authorize": "Povoľ prístup",
"follow_request.reject": "Odmietni",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Vývojári",
"getting_started.directory": "Zoznam profilov",
"getting_started.documentation": "Dokumentácia",
@@ -176,8 +192,10 @@
"hashtag.column_settings.tag_mode.none": "Žiaden z týchto",
"hashtag.column_settings.tag_toggle": "Vlož dodatočné haštagy pre tento stĺpec",
"home.column_settings.basic": "Základné",
- "home.column_settings.show_reblogs": "Zobraziť povýšené",
- "home.column_settings.show_replies": "Ukázať odpovede",
+ "home.column_settings.show_reblogs": "Ukáž vyzdvihnuté",
+ "home.column_settings.show_replies": "Ukáž odpovede",
+ "home.hide_announcements": "Skry oboznámenia",
+ "home.show_announcements": "Ukáž oboznámenia",
"intervals.full.days": "{number, plural, one {# deň} few {# dní} many {# dní} other {# dní}}",
"intervals.full.hours": "{number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodín}}",
"intervals.full.minutes": "{number, plural, one {# minúta} few {# minút} many {# minút} other {# minút}}",
@@ -185,14 +203,14 @@
"introduction.federation.federated.headline": "Federovaná",
"introduction.federation.federated.text": "Verejné príspevky z ostatných serverov vo fediverse budú zobrazené vo federovanej časovej osi.",
"introduction.federation.home.headline": "Domovská",
- "introduction.federation.home.text": "Príspevky od ľudí ktorých následuješ sa zobrazia na tvojej domovskej nástenke. Môžeš následovať hocikoho na ktoromkoľvek serveri!",
+ "introduction.federation.home.text": "Príspevky od ľudí ktorých nasleduješ sa zobrazia na tvojej domovskej nástenke. Môžeš nasledovať hocikoho na ktoromkoľvek serveri!",
"introduction.federation.local.headline": "Miestna",
"introduction.federation.local.text": "Verejné príspevky od ľudí v rámci toho istého serveru na akom si aj ty, budú zobrazované na miestnej časovej osi.",
"introduction.interactions.action": "Ukonči návod!",
"introduction.interactions.favourite.headline": "Obľúbené",
"introduction.interactions.favourite.text": "Obľúbením si môžeš príspevok uložiť na neskôr, a zároveň dať jeho autorovi vedieť, že sa ti páčil.",
"introduction.interactions.reblog.headline": "Vyzdvihni",
- "introduction.interactions.reblog.text": "Môžeš zdieľať príspevky iných ľudí s vašimi následovateľmi tým, že ich povýšiš.",
+ "introduction.interactions.reblog.text": "Môžeš zdieľať príspevky iných ľudí s tvojími následovateľmi tak, že ich vyzdvihneš.",
"introduction.interactions.reply.headline": "Odpovedz",
"introduction.interactions.reply.text": "Odpovedať môžeš na príspevky iných ľudí, aj na svoje vlastné, čím sa spolu prepoja do konverzácie.",
"introduction.welcome.action": "Poďme do toho!",
@@ -204,7 +222,7 @@
"keyboard_shortcuts.column": "zameraj sa na príspevok v jednom zo stĺpcov",
"keyboard_shortcuts.compose": "zameraj sa na písaciu plochu",
"keyboard_shortcuts.description": "Popis",
- "keyboard_shortcuts.direct": "otvor panel súkromných správ",
+ "keyboard_shortcuts.direct": "pre otvorenie panelu priamých správ",
"keyboard_shortcuts.down": "posunúť sa dole v zozname",
"keyboard_shortcuts.enter": "otvoriť správu",
"keyboard_shortcuts.favourite": "pridaj do obľúbených",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "otvor zoznam stíšených užívateľov",
"keyboard_shortcuts.my_profile": "otvor svoj profil",
"keyboard_shortcuts.notifications": "otvor panel oboznámení",
+ "keyboard_shortcuts.open_media": "na otvorenie médií",
"keyboard_shortcuts.pinned": "otvor zoznam pripnutých príspevkov",
"keyboard_shortcuts.profile": "otvor autorov profil",
"keyboard_shortcuts.reply": "odpovedať",
"keyboard_shortcuts.requests": "otvor zoznam žiadostí o sledovanie",
"keyboard_shortcuts.search": "zameraj sa na vyhľadávanie",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "otvor panel ''začíname''",
"keyboard_shortcuts.toggle_hidden": "ukáž/skry text za CW",
"keyboard_shortcuts.toggle_sensitivity": "pre zobrazenie/skrytie médií",
@@ -251,16 +271,17 @@
"mute_modal.hide_notifications": "Skry oznámenia od tohto používateľa?",
"navigation_bar.apps": "Aplikácie",
"navigation_bar.blocks": "Blokovaní užívatelia",
+ "navigation_bar.bookmarks": "Záložky",
"navigation_bar.community_timeline": "Miestna časová os",
"navigation_bar.compose": "Napíš nový príspevok",
- "navigation_bar.direct": "Súkromné správy",
+ "navigation_bar.direct": "Priame správy",
"navigation_bar.discover": "Objavuj",
"navigation_bar.domain_blocks": "Skryté domény",
"navigation_bar.edit_profile": "Uprav profil",
"navigation_bar.favourites": "Obľúbené",
"navigation_bar.filters": "Filtrované slová",
"navigation_bar.follow_requests": "Žiadosti o sledovanie",
- "navigation_bar.follows_and_followers": "Následovaní a sledovatelia",
+ "navigation_bar.follows_and_followers": "Sledovania a následovatelia",
"navigation_bar.info": "O tomto serveri",
"navigation_bar.keyboard_shortcuts": "Klávesové skratky",
"navigation_bar.lists": "Zoznamy",
@@ -268,12 +289,14 @@
"navigation_bar.mutes": "Ignorovaní užívatelia",
"navigation_bar.personal": "Osobné",
"navigation_bar.pins": "Pripnuté príspevky",
- "navigation_bar.preferences": "Voľby",
+ "navigation_bar.preferences": "Nastavenia",
"navigation_bar.public_timeline": "Federovaná časová os",
"navigation_bar.security": "Zabezbečenie",
"notification.favourite": "{name} si obľúbil/a tvoj príspevok",
"notification.follow": "{name} ťa začal/a následovať",
+ "notification.follow_request": "{name} žiada ťa následovať",
"notification.mention": "{name} ťa spomenul/a",
+ "notification.own_poll": "Tvoja anketa sa skončila",
"notification.poll": "Anketa v ktorej si hlasoval/a sa skončila",
"notification.reblog": "{name} zdieľal/a tvoj príspevok",
"notifications.clear": "Vyčisti oboznámenia",
@@ -284,11 +307,12 @@
"notifications.column_settings.filter_bar.category": "Rýchle triedenie",
"notifications.column_settings.filter_bar.show": "Ukáž",
"notifications.column_settings.follow": "Noví sledujúci:",
+ "notifications.column_settings.follow_request": "Nové žiadosti o následovanie:",
"notifications.column_settings.mention": "Zmienenia:",
"notifications.column_settings.poll": "Výsledky ankiet:",
"notifications.column_settings.push": "Push notifikácie",
"notifications.column_settings.reblog": "Vyzdvihnutia:",
- "notifications.column_settings.show": "Zobraz v stĺpci",
+ "notifications.column_settings.show": "Ukáž v stĺpci",
"notifications.column_settings.sound": "Prehraj zvuk",
"notifications.filter.all": "Všetky",
"notifications.filter.boosts": "Vyzdvihnutia",
@@ -322,6 +346,7 @@
"relative_time.just_now": "teraz",
"relative_time.minutes": "{number}min",
"relative_time.seconds": "{number}sek",
+ "relative_time.today": "dnes",
"reply_indicator.cancel": "Zrušiť",
"report.forward": "Posuň ku {target}",
"report.forward_hint": "Tento účet je z iného serveru. Chceš poslať anonymnú kópiu hlásenia aj tam?",
@@ -344,12 +369,13 @@
"status.admin_account": "Otvor moderovacie rozhranie užívateľa @{name}",
"status.admin_status": "Otvor tento príspevok v moderovacom rozhraní",
"status.block": "Blokuj @{name}",
+ "status.bookmark": "Záložka",
"status.cancel_reblog_private": "Nezdieľaj",
"status.cannot_reblog": "Tento príspevok nemôže byť zdieľaný",
"status.copy": "Skopíruj odkaz na príspevok",
"status.delete": "Zmazať",
"status.detailed_status": "Podrobný náhľad celej konverzácie",
- "status.direct": "Súkromná správa @{name}",
+ "status.direct": "Priama správa pre @{name}",
"status.embed": "Vložiť",
"status.favourite": "Páči sa mi",
"status.filtered": "Filtrované",
@@ -365,9 +391,10 @@
"status.read_more": "Čítaj ďalej",
"status.reblog": "Vyzdvihni",
"status.reblog_private": "Vyzdvihni k pôvodnému publiku",
- "status.reblogged_by": "{name} povýšil/a",
+ "status.reblogged_by": "{name} vyzdvihli",
"status.reblogs.empty": "Nikto ešte nevyzdvihol tento príspevok. Keď tak niekto urobí, bude to zobrazené práve tu.",
"status.redraft": "Vymaž a prepíš",
+ "status.remove_bookmark": "Odstráň záložku",
"status.reply": "Odpovedať",
"status.replyAll": "Odpovedz na diskusiu",
"status.report": "Nahlás @{name}",
@@ -393,25 +420,32 @@
"time_remaining.minutes": "Ostáva {number, plural, one {# minúta} few {# minút} many {# minút} other {# minúty}}",
"time_remaining.moments": "Ostáva už iba chviľka",
"time_remaining.seconds": "Ostáva {number, plural, one {# sekunda} few {# sekúnd} many {# sekúnd} other {# sekúnd}}",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {človek vraví} other {ľudia vravia}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {človek spomína} other {ľudí spomína}}",
"trends.trending_now": "Teraz populárne",
"ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Mastodon.",
"upload_area.title": "Pretiahni a pusť pre nahratie",
"upload_button.label": "Pridaj médiálny súbor (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Limit pre nahrávanie súborov bol prekročený.",
"upload_error.poll": "Nahrávanie súborov pri anketách nieje možné.",
+ "upload_form.audio_description": "Popíš, pre ľudí so stratou sluchu",
"upload_form.description": "Opis pre slabo vidiacich",
"upload_form.edit": "Uprav",
"upload_form.undo": "Vymaž",
+ "upload_form.video_description": "Popíš, pre ľudí so stratou sluchu, alebo očným znevýhodnením",
"upload_modal.analyzing_picture": "Analyzujem obrázok…",
"upload_modal.apply": "Použi",
"upload_modal.description_placeholder": "Rýchla hnedá líška skáče ponad lenivého psa",
"upload_modal.detect_text": "Rozpoznaj text z obrázka",
"upload_modal.edit_media": "Uprav médiá",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.hint": "Klikni, alebo potiahni okruh ukážky pre zvolenie z ktorého východzieho bodu bude vždy v dohľadne na všetkých náhľadoch.",
"upload_modal.preview_label": "Náhľad ({ratio})",
"upload_progress.label": "Nahráva sa...",
"video.close": "Zavri video",
+ "video.download": "Stiahni súbor",
"video.exit_fullscreen": "Vypni zobrazenie na celú obrazovku",
"video.expand": "Zväčši video",
"video.fullscreen": "Zobraz na celú obrazovku",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 65e275102..3f334892b 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Dodaj ali odstrani iz seznama",
"account.badges.bot": "Robot",
+ "account.badges.group": "Group",
"account.block": "Blokiraj @{name}",
"account.block_domain": "Skrij vse iz {domain}",
"account.blocked": "Blokirano",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Neposredno sporočilo @{name}",
"account.domain_blocked": "Skrita domena",
@@ -16,7 +20,7 @@
"account.follows.empty": "Ta uporabnik še ne sledi nikomur.",
"account.follows_you": "Sledi tebi",
"account.hide_reblogs": "Skrij spodbude od @{name}",
- "account.last_status": "Last active",
+ "account.last_status": "Zadnja dejavnost",
"account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}",
"account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.",
"account.media": "Mediji",
@@ -25,7 +29,7 @@
"account.mute": "Utišaj @{name}",
"account.mute_notifications": "Utišaj obvestila od @{name}",
"account.muted": "Utišan",
- "account.never_active": "Never",
+ "account.never_active": "Nikoli",
"account.posts": "Tuti",
"account.posts_with_replies": "Tuti in odgovori",
"account.report": "Prijavi @{name}",
@@ -38,10 +42,15 @@
"account.unfollow": "Prenehaj slediti",
"account.unmute": "Odtišaj @{name}",
"account.unmute_notifications": "Vklopi obvestila od @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "Zgodila se je nepričakovana napaka.",
"alert.unexpected.title": "Uups!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}",
"bundle_column_error.body": "Med nalaganjem te komponente je prišlo do napake.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.",
"bundle_modal_error.retry": "Poskusi ponovno",
"column.blocks": "Blokirani uporabniki",
+ "column.bookmarks": "Bookmarks",
"column.community": "Lokalna časovnica",
"column.direct": "Neposredna sporočila",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Prikaži nastavitve",
"column_header.unpin": "Odpni",
"column_subheading.settings": "Nastavitve",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Samo mediji",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "Ta tut bo viden le vsem omenjenim uporabnikom.",
"compose_form.direct_message_warning_learn_more": "Nauči se več",
"compose_form.hashtag_warning": "Ta tut ne bo naveden pod nobenim ključnikom, ker ni javen. Samo javne tute lahko iščete s ključniki.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Trajanje ankete",
"compose_form.poll.option_placeholder": "Izbira {number}",
"compose_form.poll.remove_option": "Odstrani to izbiro",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Tutni",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Označi medij kot občutljiv",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Tukaj ni tutov!",
"empty_column.account_unavailable": "Profil ni na voljo",
"empty_column.blocks": "Niste še blokirali nobenega uporabnika.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!",
"empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga boste poslali ali prejeli, se bo prikazal tukaj.",
"empty_column.domain_blocks": "Še vedno ni skritih domen.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Overi",
"follow_request.reject": "Zavrni",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Razvijalci",
"getting_started.directory": "Imenik profilov",
"getting_started.documentation": "Dokumentacija",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Osnovno",
"home.column_settings.show_reblogs": "Pokaži spodbude",
"home.column_settings.show_replies": "Pokaži odgovore",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# dan} two {# dni} few {# dni} other {# dni}}",
"intervals.full.hours": "{number, plural, one {# ura} two {# uri} few {# ure} other {# ur}}",
"intervals.full.minutes": "{number, plural, one {# minuta} two {# minuti} few {# minute} other {# minut}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "odpri seznam utišanih uporabnikov",
"keyboard_shortcuts.my_profile": "odpri svoj profil",
"keyboard_shortcuts.notifications": "odpri stolpec z obvestili",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "odpri seznam pripetih tutov",
"keyboard_shortcuts.profile": "odpri avtorjev profil",
"keyboard_shortcuts.reply": "odgovori",
"keyboard_shortcuts.requests": "odpri seznam s prošnjami za sledenje",
"keyboard_shortcuts.search": "fokusiraj na iskanje",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "odpri stolpec \"začni\"",
"keyboard_shortcuts.toggle_hidden": "prikaži/skrij besedilo za CW",
"keyboard_shortcuts.toggle_sensitivity": "prikaži/skrij medije",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Skrij obvestila tega uporabnika?",
"navigation_bar.apps": "Mobilne aplikacije",
"navigation_bar.blocks": "Blokirani uporabniki",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Lokalna časovnica",
"navigation_bar.compose": "Sestavi nov tut",
"navigation_bar.direct": "Neposredna sporočila",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Varnost",
"notification.favourite": "{name} je vzljubil/a vaš status",
"notification.follow": "{name} vam sledi",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} vas je omenil/a",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "Glasovanje, v katerem ste sodelovali, se je končalo",
"notification.reblog": "{name} je spodbudil/a vaš status",
"notifications.clear": "Počisti obvestila",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Vrstica za hitro filtriranje",
"notifications.column_settings.filter_bar.show": "Pokaži",
"notifications.column_settings.follow": "Novi sledilci:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Omembe:",
"notifications.column_settings.poll": "Rezultati glasovanja:",
"notifications.column_settings.push": "Potisna obvestila",
@@ -322,6 +346,7 @@
"relative_time.just_now": "zdaj",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "danes",
"reply_indicator.cancel": "Prekliči",
"report.forward": "Posreduj do {target}",
"report.forward_hint": "Račun je iz drugega strežnika. Pošljem anonimno kopijo poročila tudi na drugi strežnik?",
@@ -344,6 +369,7 @@
"status.admin_account": "Odpri vmesnik za moderiranje za @{name}",
"status.admin_status": "Odpri status v vmesniku za moderiranje",
"status.block": "Blokiraj @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Prekini spodbudo",
"status.cannot_reblog": "Te objave ni mogoče spodbuditi",
"status.copy": "Kopiraj povezavo do statusa",
@@ -365,9 +391,10 @@
"status.read_more": "Preberi več",
"status.reblog": "Spodbudi",
"status.reblog_private": "Spodbudi izvirnemu občinstvu",
- "status.reblogged_by": "{name} spodbujen",
+ "status.reblogged_by": "{name} spodbuja",
"status.reblogs.empty": "Nihče še ni spodbudil tega tuta. Ko se bo to zgodilo, se bodo pojavili tukaj.",
"status.redraft": "Izbriši in preoblikuj",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Odgovori",
"status.replyAll": "Odgovori na objavo",
"status.report": "Prijavi @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minuta} other {# minut}} je ostalo",
"time_remaining.moments": "Preostali trenutki",
"time_remaining.seconds": "{number, plural, one {# sekunda} other {# sekund}} je ostalo",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {oseba} other {ljudi}} govori",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Mastodona.",
@@ -400,18 +431,21 @@
"upload_button.label": "Dodaj medije ({formats})",
"upload_error.limit": "Omejitev prenosa datoteke je presežena.",
"upload_error.poll": "Prenos datoteke z anketami ni dovoljen.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Opišite za slabovidne",
"upload_form.edit": "Edit",
"upload_form.undo": "Izbriši",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+ "upload_modal.description_placeholder": "Pri Jakcu bom vzel šest čudežnih fig",
"upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Pošiljanje...",
"video.close": "Zapri video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Izhod iz celozaslonskega načina",
"video.expand": "Razširi video",
"video.fullscreen": "Celozaslonski način",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index f58466d87..5c8181ce1 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -1,12 +1,16 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Shtoni ose Hiqni prej listash",
"account.badges.bot": "Robot",
+ "account.badges.group": "Grup",
"account.block": "Blloko @{name}",
- "account.block_domain": "Fshih gjithçka prej {domain}",
+ "account.block_domain": "Blloko përkatësinë {domain}",
"account.blocked": "E bllokuar",
- "account.cancel_follow_request": "Cancel follow request",
- "account.direct": "Mesazh i drejtpërdrejt për @{name}",
- "account.domain_blocked": "Përkatësi e fshehur",
+ "account.browse_more_on_origin_server": "Shfletoni më tepër rreth profilit origjinal",
+ "account.cancel_follow_request": "Anulo kërkesën e ndjekjes",
+ "account.direct": "Mesazh i drejtpërdrejtë për @{name}",
+ "account.domain_blocked": "Përkatësia u bllokua",
"account.edit_profile": "Përpunoni profilin",
"account.endorse": "Pasqyrojeni në profil",
"account.follow": "Ndiqeni",
@@ -16,7 +20,7 @@
"account.follows.empty": "Ky përdorues ende s’ndjek njeri.",
"account.follows_you": "Ju ndjek",
"account.hide_reblogs": "Fshih përforcime nga @{name}",
- "account.last_status": "Last active",
+ "account.last_status": "Aktiv së fundi më",
"account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}",
"account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.",
"account.media": "Media",
@@ -25,25 +29,30 @@
"account.mute": "Heshtoni @{name}",
"account.mute_notifications": "Heshtoji njoftimet prej @{name}",
"account.muted": "Heshtuar",
- "account.never_active": "Never",
+ "account.never_active": "Kurrë",
"account.posts": "Mesazhe",
"account.posts_with_replies": "Mesazhe dhe përgjigje",
"account.report": "Raportojeni @{name}",
- "account.requested": "Në pritje të miratimit. Klikoni që të anulohet kërkesa për ndjekje",
+ "account.requested": "Në pritje të miratimit. Që të anuloni kërkesën për ndjekje, klikojeni",
"account.share": "Ndajeni profilin e @{name} me të tjerët",
"account.show_reblogs": "Shfaq përforcime nga @{name}",
"account.unblock": "Zhbllokoje @{name}",
- "account.unblock_domain": "Shfshihe {domain}",
+ "account.unblock_domain": "Zhblloko përkatësinë {domain}",
"account.unendorse": "Mos e përfshi në profil",
"account.unfollow": "Resht së ndjekuri",
"account.unmute": "Ktheji zërin @{name}",
"account.unmute_notifications": "Hiqua ndalimin e shfaqjes njoftimeve nga @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Ju lutemi, riprovoni pas {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Shpejtësi e kufizuar",
"alert.unexpected.message": "Ndodhi një gabim të papritur.",
"alert.unexpected.title": "Hëm!",
- "autosuggest_hashtag.per_week": "{count} per week",
- "boost_modal.combo": "Mund të shtypni {combo}, që të anashkalohet kjo herës tjetër",
+ "announcement.announcement": "Njoftime",
+ "autosuggest_hashtag.per_week": "{count} për javë",
+ "boost_modal.combo": "Mund të shtypni {combo}, që kjo të anashkalohet herës tjetër",
"bundle_column_error.body": "Diç shkoi ters teksa ngarkohej ky përbërës.",
"bundle_column_error.retry": "Riprovoni",
"bundle_column_error.title": "Gabim rrjeti",
@@ -51,10 +60,11 @@
"bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.",
"bundle_modal_error.retry": "Riprovoni",
"column.blocks": "Përdorues të bllokuar",
+ "column.bookmarks": "Faqerojtës",
"column.community": "Rrjedhë kohore vendore",
- "column.direct": "Mesazhe të drejtpërdrejta",
- "column.directory": "Browse profiles",
- "column.domain_blocks": "Përkatësi të fshehura",
+ "column.direct": "Mesazhe të drejtpërdrejtë",
+ "column.directory": "Shfletoni profile",
+ "column.domain_blocks": "Përkatësi të bllokuara",
"column.favourites": "Të parapëlqyer",
"column.follow_requests": "Kërkesa për ndjekje",
"column.home": "Kreu",
@@ -71,61 +81,65 @@
"column_header.show_settings": "Shfaq rregullime",
"column_header.unpin": "Shfiksoje",
"column_subheading.settings": "Rregullime",
+ "community.column_settings.local_only": "Vetëm vendore",
"community.column_settings.media_only": "Vetëm Media",
+ "community.column_settings.remote_only": "Vetëm të largëta",
"compose_form.direct_message_warning": "Ky mesazh do t’u dërgohet përdoruesve të përmendur.",
"compose_form.direct_message_warning_learn_more": "Mësoni më tepër",
"compose_form.hashtag_warning": "Ky mesazh s’do të paraqitet nën ndonjë hashtag, ngaqë s’i është caktuar ndonjë. Vetëm mesazhet publike mund të kërkohen sipas hashtagësh.",
"compose_form.lock_disclaimer": "Llogaria juaj s’është {locked}. Mund ta ndjekë cilido, për të parë postimet tuaja vetëm për ndjekësit.",
- "compose_form.lock_disclaimer.lock": "e bllokuar",
+ "compose_form.lock_disclaimer.lock": "e kyçur",
"compose_form.placeholder": "Ç’bluani në mendje?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Shto zgjedhje",
+ "compose_form.poll.duration": "Kohëzgjatje pyetësori",
+ "compose_form.poll.option_placeholder": "Zgjedhja {number}",
+ "compose_form.poll.remove_option": "Hiqe këtë zgjedhje",
+ "compose_form.poll.switch_to_multiple": "Ndrysho votimin për të lejuar shumë zgjedhje",
+ "compose_form.poll.switch_to_single": "Ndrysho votimin për të lejuar vetëm një zgjedhje",
"compose_form.publish": "Mesazh",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.hide": "Vëri shenjë medias si rezervat",
"compose_form.sensitive.marked": "Media është shënuar si rezervat",
"compose_form.sensitive.unmarked": "Media s’është shënuar si rezervat",
"compose_form.spoiler.marked": "Teksti është fshehur pas sinjalizimit",
"compose_form.spoiler.unmarked": "Teksti s’është i fshehur",
"compose_form.spoiler_placeholder": "Shkruani këtu sinjalizimin tuaj",
"confirmation_modal.cancel": "Anuloje",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Bllokoje & Raportojeni",
"confirmations.block.confirm": "Bllokoje",
"confirmations.block.message": "Jeni i sigurt se doni të bllokohet {name}?",
"confirmations.delete.confirm": "Fshije",
"confirmations.delete.message": "Jeni i sigurt se doni të fshihet kjo gjendje?",
"confirmations.delete_list.confirm": "Fshije",
- "confirmations.delete_list.message": "Jeni i sigurt që doni të fshihet përgjithmonë kjo listë?",
- "confirmations.domain_block.confirm": "Fshih krejt përkatësinë",
+ "confirmations.delete_list.message": "Jeni i sigurt se doni të fshihet përgjithmonë kjo listë?",
+ "confirmations.domain_block.confirm": "Bllokoje krejt përkatësinë",
"confirmations.domain_block.message": "Jeni i sigurt, shumë i sigurt se doni të bllokohet krejt {domain}? Në shumicën e rasteve, ndoca bllokime ose heshtime me synim të caktuar janë të mjaftueshme dhe të parapëlqyera. S’keni për të parë lëndë nga kjo përkatësi në ndonjë rrjedhë kohore publike, apo te njoftimet tuaja. Ndjekësit tuaj prej asaj përkatësie do të hiqen.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.logout.confirm": "Dilni",
+ "confirmations.logout.message": "Jeni i sigurt se doni të dilet?",
"confirmations.mute.confirm": "Heshtoje",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Kjo do t’u fshehë postimet dhe përmendje postimesh, por ende do t’u lejojë të shohin postimet tuaja dhe t’ju ndjekin.",
"confirmations.mute.message": "Jeni i sigurt se doni të heshtohet {name}?",
"confirmations.redraft.confirm": "Fshijeni & rihartojeni",
- "confirmations.redraft.message": "Jeni i sigurt se doni të fshihet kjo gjendje dhe të rihartohet? Parapëlqimet dhe boosts do të humbin, ndërsa përgjigjet te postimi origjinal do të bëhen jetime.",
+ "confirmations.redraft.message": "Jeni i sigurt se doni të fshihet kjo gjendje dhe të rihartohet? Parapëlqimet dhe përforcimet do të humbin, ndërsa përgjigjet te postimi origjinal do të bëhen jetime.",
"confirmations.reply.confirm": "Përgjigjuni",
- "confirmations.reply.message": "Përgjigja tani do të shkaktojë mbishkrimin e mesazhit që po hartoni. Jeni i sigurt se doni të vazhdohet më tej?",
+ "confirmations.reply.message": "Po të përgjigjeni tani, mesazhi që po hartoni, do të mbishkruhet. Jeni i sigurt se doni të vazhdohet më tej?",
"confirmations.unfollow.confirm": "Resht së ndjekuri",
"confirmations.unfollow.message": "Jeni i sigurt se doni të mos ndiqet më {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
+ "conversation.delete": "Fshije bisedën",
+ "conversation.mark_as_read": "Vëri shenjë si të lexuar",
+ "conversation.open": "Shfaq bisedën",
+ "conversation.with": "Me {names}",
+ "directory.federated": "Nga fedivers i njohur",
+ "directory.local": "Vetëm nga {domain}",
+ "directory.new_arrivals": "Të ardhur rishtas",
+ "directory.recently_active": "Aktivë së fundi",
"embed.instructions": "Trupëzojeni këtë gjendje në sajtin tuaj duke kopjuar kodin më poshtë.",
"embed.preview": "Ja si do të duket:",
"emoji_button.activity": "Veprimtari",
"emoji_button.custom": "Vetjak",
"emoji_button.flags": "Flamuj",
"emoji_button.food": "Ushqim & Pije",
- "emoji_button.label": "Futni emoji",
+ "emoji_button.label": "Futni emotikonë",
"emoji_button.nature": "Natyrë",
"emoji_button.not_found": "No emojos!!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objekte",
@@ -136,8 +150,9 @@
"emoji_button.symbols": "Simbole",
"emoji_button.travel": "Udhëtime & Vende",
"empty_column.account_timeline": "S’ka mesazhe këtu!",
- "empty_column.account_unavailable": "Profile unavailable",
+ "empty_column.account_unavailable": "Profil jashtë funksionimi",
"empty_column.blocks": "S’keni bllokuar ende ndonjë përdorues.",
+ "empty_column.bookmarked_statuses": "S’keni faqeruajtur ende ndonjë mesazh. Kur faqeruani një të tillë, ai do të shfaqet këtu.",
"empty_column.community": "Rrjedha kohore vendore është e zbrazët. Shkruani diçka publikisht që t’i hyhet valles!",
"empty_column.direct": "S’keni ende ndonjë mesazh të drejtpërdrejt. Kur dërgoni ose merrni një të tillë, ai do të shfaqet këtu.",
"empty_column.domain_blocks": "Ende s’ka përkatësi të fshehura.",
@@ -152,35 +167,38 @@
"empty_column.mutes": "S’keni heshtuar ende ndonjë përdorues.",
"empty_column.notifications": "Ende s’keni ndonjë njoftim. Ndërveproni me të tjerët që të nisë biseda.",
"empty_column.public": "S’ka gjë këtu! Shkruani diçka publikisht, ose ndiqni dorazi përdorues prej instancash të tjera, që ta mbushni këtë zonë",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "Për shkak të një të mete në kodin tonë ose të një problemi përputhshmërie të shfletuesit, kjo faqe s’mund të shfaqet saktë.",
+ "error.unexpected_crash.next_steps": "Provoni të freskoni faqen. Nëse kjo s’bën punë, mundeni ende të jeni në gjendje të përdorni Mastodon-in që nga një shfletues tjetër ose nga ndonjë aplikacion origjinal prej projektit.",
+ "errors.unexpected_crash.copy_stacktrace": "Kopjo stacktrace-in në të papastër",
+ "errors.unexpected_crash.report_issue": "Raportoni problemin",
"follow_request.authorize": "Autorizoje",
"follow_request.reject": "Hidhe tej",
+ "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.",
"getting_started.developers": "Zhvillues",
"getting_started.directory": "Drejtori profilesh",
"getting_started.documentation": "Dokumentim",
"getting_started.heading": "Si t’ia fillohet",
"getting_started.invite": "Ftoni njerëz",
"getting_started.open_source_notice": "Mastodon-i është software me burim të hapur. Mund të jepni ndihmesë ose të njoftoni probleme në GitHub, te {github}.",
- "getting_started.security": "Siguri",
+ "getting_started.security": "Rregullime llogarie",
"getting_started.terms": "Kushte shërbimi",
"hashtag.column_header.tag_mode.all": "dhe {additional}",
"hashtag.column_header.tag_mode.any": "ose {additional}",
"hashtag.column_header.tag_mode.none": "pa {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "Krejt këto",
- "hashtag.column_settings.tag_mode.any": "Cilëndo prej këtyre",
+ "hashtag.column_settings.select.no_options_message": "S’u gjetën sugjerime",
+ "hashtag.column_settings.select.placeholder": "Jepni hashtag-ë…",
+ "hashtag.column_settings.tag_mode.all": "Krejt këta",
+ "hashtag.column_settings.tag_mode.any": "Cilindo prej këtyre",
"hashtag.column_settings.tag_mode.none": "Asnjë prej këtyre",
"hashtag.column_settings.tag_toggle": "Përfshi etiketa shtesë për këtë shtyllë",
"home.column_settings.basic": "Bazë",
"home.column_settings.show_reblogs": "Shfaq përforcime",
"home.column_settings.show_replies": "Shfaq përgjigje",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "home.hide_announcements": "Fshihi lajmërimet",
+ "home.show_announcements": "Shfaqi lajmërimet",
+ "intervals.full.days": "{number, plural, one {# ditë} other {# ditë}}",
+ "intervals.full.hours": "{number, plural, one {# orë} other {# orë}}",
+ "intervals.full.minutes": "{number, plural, one {# minutë} other {# minuta}}",
"introduction.federation.action": "Pasuesi",
"introduction.federation.federated.headline": "Të federuara",
"introduction.federation.federated.text": "Postimet publike nga shërbyes të tjerë të fediversit do të shfaqen te rrjedha kohore e të federuarve.",
@@ -191,16 +209,16 @@
"introduction.interactions.action": "Përfundojeni përkujdesoren!",
"introduction.interactions.favourite.headline": "Parapëlqejeni",
"introduction.interactions.favourite.text": "Duke e parapëlqyer, një mesazh mund ta ruani për më vonë dhe t’i bëni të ditur autorit se e pëlqyet.",
- "introduction.interactions.reblog.headline": "Përforcime",
+ "introduction.interactions.reblog.headline": "Përforcim",
"introduction.interactions.reblog.text": "Mesazhet e të tjerëve mund t’i ndani me ndjekësit tuaj duke i përforcuar.",
"introduction.interactions.reply.headline": "Përgjigjuni",
"introduction.interactions.reply.text": "Mund t'u përgjigjeni mesazheve tuaja dhe atyre të personave të tjerë, çka do t’i lidhë ato tok në një bisedë.",
"introduction.welcome.action": "Shkojmë!",
"introduction.welcome.headline": "Hapat e parë",
- "introduction.welcome.text": "Mirë se vini në fedivers! Brenda pak çastesh do të jeni në gjendje të transmetoni mesazhe dhe të bisedoni me miqtë tuaj nëpër një larmi të madhe shërbyesish. Po ky shërbyes, {domain}, është i veçantë—strehon profilin tuaj, ndaj mbajeni mend emrin e tij.",
+ "introduction.welcome.text": "Mirë se vini në fedivers! Brenda pak çastesh do të jeni në gjendje të transmetoni mesazhe dhe të bisedoni me miqtë tuaj nëpër një larmi të madhe shërbyesish. Por ky shërbyes, {domain}, është i veçantë—strehon profilin tuaj, ndaj mbajeni mend emrin e tij.",
"keyboard_shortcuts.back": "për shkuarje mbrapsht",
"keyboard_shortcuts.blocked": "për hapje liste përdoruesish të bllokuar",
- "keyboard_shortcuts.boost": "për përfocim",
+ "keyboard_shortcuts.boost": "për përforcim",
"keyboard_shortcuts.column": "për kalim fokusi mbi një gjendje te një nga shtyllat",
"keyboard_shortcuts.compose": "për kalim fokusi te fusha e hartimit të mesazheve",
"keyboard_shortcuts.description": "Përshkrim",
@@ -219,48 +237,51 @@
"keyboard_shortcuts.muted": "për hapje liste përdoruesish të heshtuar",
"keyboard_shortcuts.my_profile": "për hapjen e profilit tuaj",
"keyboard_shortcuts.notifications": "për hapje shtylle njoftimesh",
+ "keyboard_shortcuts.open_media": "për hapje mediash",
"keyboard_shortcuts.pinned": "për hapje liste mesazhesh të fiksuar",
"keyboard_shortcuts.profile": "për hapje të profilit të autorit",
"keyboard_shortcuts.reply": "për t’u përgjigjur",
"keyboard_shortcuts.requests": "për hapje liste kërkesash për ndjekje",
"keyboard_shortcuts.search": "për kalim fokusi te kërkimi",
- "keyboard_shortcuts.start": "për hapjen e shtyllës \"fillojani\"",
+ "keyboard_shortcuts.spoilers": "për shfaqje/fshehje fushe CW",
+ "keyboard_shortcuts.start": "për hapjen e shtyllës “fillojani”",
"keyboard_shortcuts.toggle_hidden": "për shfaqje/fshehje teksti pas CW",
- "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toggle_sensitivity": "për shfaqje/fshehje mediash",
"keyboard_shortcuts.toot": "për të filluar një mesazh fringo të ri",
"keyboard_shortcuts.unfocus": "për heqjen e fokusit nga fusha e hartimit të mesazheve apo kërkimeve",
"keyboard_shortcuts.up": "për ngjitje sipër nëpër listë",
"lightbox.close": "Mbylle",
"lightbox.next": "Pasuesja",
"lightbox.previous": "E mëparshmja",
- "lightbox.view_context": "View context",
+ "lightbox.view_context": "Shihni kontekstin",
"lists.account.add": "Shto në listë",
"lists.account.remove": "Hiqe nga lista",
"lists.delete": "Fshije listën",
"lists.edit": "Përpunoni listën",
- "lists.edit.submit": "Change title",
+ "lists.edit.submit": "Ndryshoni titullin",
"lists.new.create": "Shtoni listë",
"lists.new.title_placeholder": "Titull liste të re",
"lists.search": "Kërkoni mes personash që ndiqni",
"lists.subheading": "Listat tuaja",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "load_pending": "{count, plural,one {# objekt i ri }other {# objekte të rinj }}",
"loading_indicator.label": "Po ngarkohet…",
- "media_gallery.toggle_visible": "Ndërroni dukshmërinë",
+ "media_gallery.toggle_visible": "Fshihni {number, plural, one {figurë} other {figura}}",
"missing_indicator.label": "S’u gjet",
"missing_indicator.sublabel": "Ky burim s’u gjet dot",
- "mute_modal.hide_notifications": "Të fshihen njoftimet prej këtij përdoruesi?",
+ "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?",
"navigation_bar.apps": "Aplikacione për celular",
"navigation_bar.blocks": "Përdorues të bllokuar",
+ "navigation_bar.bookmarks": "Faqerojtës",
"navigation_bar.community_timeline": "Rrjedhë kohore vendore",
"navigation_bar.compose": "Hartoni mesazh të ri",
- "navigation_bar.direct": "Mesazhe të drejtpërdrejta",
+ "navigation_bar.direct": "Mesazhe të drejtpërdrejtë",
"navigation_bar.discover": "Zbuloni",
- "navigation_bar.domain_blocks": "Përkatësi të fshehura",
+ "navigation_bar.domain_blocks": "Përkatësi të bllokuara",
"navigation_bar.edit_profile": "Përpunoni profilin",
"navigation_bar.favourites": "Të parapëlqyer",
"navigation_bar.filters": "Fjalë të heshtuara",
"navigation_bar.follow_requests": "Kërkesa për ndjekje",
- "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.follows_and_followers": "Ndjekje dhe ndjekës",
"navigation_bar.info": "Mbi këtë shërbyes",
"navigation_bar.keyboard_shortcuts": "Taste përkatës",
"navigation_bar.lists": "Lista",
@@ -271,21 +292,24 @@
"navigation_bar.preferences": "Parapëlqime",
"navigation_bar.public_timeline": "Rrjedhë kohore të federuarish",
"navigation_bar.security": "Siguri",
- "notification.favourite": "{name} parapëlqeu gjendjen tuaj",
+ "notification.favourite": "{name} pëlqeu mesazhin tuaj",
"notification.follow": "{name} zuri t’ju ndjekë",
+ "notification.follow_request": "{name} ka kërkuar t’ju ndjekë",
"notification.mention": "{name} ju ka përmendur",
- "notification.poll": "A poll you have voted in has ended",
- "notification.reblog": "{name} përforcoi gjendjen tuaj",
- "notifications.clear": "Pastroji njoftimet",
- "notifications.clear_confirmation": "Jeni i sigurt se doni të pastrohen përgjithmonë krejt njoftimet tuaja?",
+ "notification.own_poll": "Pyetësori juaj ka përfunduar",
+ "notification.poll": "Ka përfunduar një pyetësor ku keni votuar",
+ "notification.reblog": "{name} përforcoi mesazhin tuaj",
+ "notifications.clear": "Spastroji njoftimet",
+ "notifications.clear_confirmation": "Jeni i sigurt se doni të spastrohen përgjithmonë krejt njoftimet tuaja?",
"notifications.column_settings.alert": "Njoftime desktopi",
"notifications.column_settings.favourite": "Të parapëlqyer:",
"notifications.column_settings.filter_bar.advanced": "Shfaq krejt kategoritë",
"notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta",
"notifications.column_settings.filter_bar.show": "Shfaq",
"notifications.column_settings.follow": "Ndjekës të rinj:",
+ "notifications.column_settings.follow_request": "Kërkesa të reja për ndjekje:",
"notifications.column_settings.mention": "Përmendje:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Përfundime pyetësori:",
"notifications.column_settings.push": "Njoftime Push",
"notifications.column_settings.reblog": "Përforcime:",
"notifications.column_settings.show": "Shfaq në shtylla",
@@ -295,33 +319,34 @@
"notifications.filter.favourites": "Të parapëlqyer",
"notifications.filter.follows": "Ndjekje",
"notifications.filter.mentions": "Përmendje",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.polls": "Përfundime pyetësori",
"notifications.group": "{count}s njoftime",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
- "privacy.change": "Rregulloni privatësi gjendje",
- "privacy.direct.long": "Postoja vetëm përdoruesve të përmendur",
+ "poll.closed": "I mbyllur",
+ "poll.refresh": "Rifreskoje",
+ "poll.total_people": "{count, plural,one {# person }other {# vetë }}",
+ "poll.total_votes": "{count, plural,one {# votë }other {# vota }}",
+ "poll.vote": "Votoni",
+ "poll.voted": "Votuat për këtë përgjigje",
+ "poll_button.add_poll": "Shtoni një pyetësor",
+ "poll_button.remove_poll": "Hiqe pyetësorin",
+ "privacy.change": "Rregulloni privatësi mesazhesh",
+ "privacy.direct.long": "I dukshëm vetëm për përdorues të përmendur",
"privacy.direct.short": "I drejtpërdrejtë",
- "privacy.private.long": "Postojuani vetëm ndjekësve",
+ "privacy.private.long": "I dukshëm vetëm për ndjekës",
"privacy.private.short": "Vetëm ndjekësve",
- "privacy.public.long": "Postojeni në rrjedha publike kohore",
- "privacy.public.short": "Publike",
- "privacy.unlisted.long": "Mos e postoni në rrjedha publike kohore",
+ "privacy.public.long": "I dukshëm për të tërë, shfaqur në rrjedha kohore publike",
+ "privacy.public.short": "Publik",
+ "privacy.unlisted.long": "I dukshëm për të tërë, por jo në rrjedha kohore publike",
"privacy.unlisted.short": "Jo në lista",
- "refresh": "Refresh",
+ "refresh": "Rifreskoje",
"regeneration_indicator.label": "Po ngarkohet…",
- "regeneration_indicator.sublabel": "Prurja juaj vetjake po përgatiteet!",
+ "regeneration_indicator.sublabel": "Prurja juaj vetjake po përgatitet!",
"relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
+ "relative_time.hours": "{number}o",
"relative_time.just_now": "tani",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "sot",
"reply_indicator.cancel": "Anuloje",
"report.forward": "Përcillja {target}",
"report.forward_hint": "Llogaria është nga një shërbyes tjetër. Të dërgohet edhe një kopje e anonimizuar e raportimit?",
@@ -330,26 +355,27 @@
"report.submit": "Parashtroje",
"report.target": "Raportim i {target}",
"search.placeholder": "Kërkoni",
- "search_popout.search_format": "Format kërkimi të përparuar",
- "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me gjendje që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtagë që kanë përputhje me termin e kërkimit.",
+ "search_popout.search_format": "Format kërkimi të mëtejshëm",
+ "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me mesazhe që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtag-ë që kanë përputhje me termin e kërkimit.",
"search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "gjendje",
- "search_popout.tips.text": "Kërkim për tekst të thjeshtë përgjigjet me emra, emra përdoruesish dhe hashtagë që kanë përputhje me termin e kërkimit",
+ "search_popout.tips.status": "mesazh",
+ "search_popout.tips.text": "Kërkim për tekst të thjeshtë përgjigjet me emra, emra përdoruesish dhe hashtag-ë që kanë përputhje me termin e kërkimit",
"search_popout.tips.user": "përdorues",
"search_results.accounts": "Persona",
- "search_results.hashtags": "Hashtagë",
+ "search_results.hashtags": "Hashtag-ë",
"search_results.statuses": "Mesazhe",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
- "search_results.total": "{count, number} {count, plural, një {result} {results} të tjera}",
+ "search_results.statuses_fts_disabled": "Kërkimi i mesazheve sipas lëndës së tyre s’është i aktivizuar në këtë shërbyes Mastodon.",
+ "search_results.total": "{count, number} {count, plural, one {përfundim} other {përfundime}}",
"status.admin_account": "Hap ndërfaqe moderimi për @{name}",
- "status.admin_status": "Hape këtë gjendje te ndërfaqja e moderimit",
+ "status.admin_status": "Hape këtë mesazh te ndërfaqja e moderimit",
"status.block": "Blloko @{name}",
+ "status.bookmark": "Faqeruaje",
"status.cancel_reblog_private": "Shpërforcojeni",
"status.cannot_reblog": "Ky postim s’mund të përforcohet",
- "status.copy": "Kopjoje lidhjen te gjendje",
+ "status.copy": "Kopjoje lidhjen për te mesazhi",
"status.delete": "Fshije",
"status.detailed_status": "Pamje e hollësishme bisede",
- "status.direct": "Mesazh i drejtpërdrejt për @{name}",
+ "status.direct": "Mesazh i drejtpërdrejtë për @{name}",
"status.embed": "Trupëzim",
"status.favourite": "I parapëlqyer",
"status.filtered": "I filtruar",
@@ -358,8 +384,8 @@
"status.mention": "Përmendni @{name}",
"status.more": "Më tepër",
"status.mute": "Heshtoni @{name}",
- "status.mute_conversation": "Heshtojeni bisedën",
- "status.open": "Zgjeroje këtë gjendje",
+ "status.mute_conversation": "Heshtoje bisedën",
+ "status.open": "Zgjeroje këtë mesazh",
"status.pin": "Fiksoje në profil",
"status.pinned": "Mesazh i fiksuar",
"status.read_more": "Lexoni më tepër",
@@ -368,17 +394,18 @@
"status.reblogged_by": "{name} përforcoi",
"status.reblogs.empty": "Këtë mesazh s’e ka përforcuar njeri deri tani. Kur ta bëjë dikush, kjo do të duket këtu.",
"status.redraft": "Fshijeni & rihartojeni",
+ "status.remove_bookmark": "Hiqe faqerojtësin",
"status.reply": "Përgjigjuni",
"status.replyAll": "Përgjigjuni rrjedhës",
"status.report": "Raportojeni @{name}",
- "status.sensitive_warning": "Lëndë me spec",
- "status.share": "Ndajeni me të tjerët",
+ "status.sensitive_warning": "Lëndë rezervat",
+ "status.share": "Ndajeni me të tjerë",
"status.show_less": "Shfaq më pak",
"status.show_less_all": "Shfaq më pak për të tërë",
"status.show_more": "Shfaq më tepër",
"status.show_more_all": "Shfaq më tepër për të tërë",
"status.show_thread": "Shfaq rrjedhën",
- "status.uncached_media_warning": "Not available",
+ "status.uncached_media_warning": "Jo e passhme",
"status.unmute_conversation": "Ktheji zërin bisedës",
"status.unpin": "Shfiksoje nga profili",
"suggestions.dismiss": "Mos e merr parasysh sugjerimin",
@@ -388,30 +415,37 @@
"tabs_bar.local_timeline": "Vendore",
"tabs_bar.notifications": "Njoftime",
"tabs_bar.search": "Kërkim",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, një {person} {people} të tjerë} po flasin",
- "trends.trending_now": "Trending now",
- "ui.beforeunload": "Skica juaj do të humbë nëse dilni nga Mastodon-i.",
- "upload_area.title": "Merreni & vëreni që të ngarkohet",
- "upload_button.label": "Shtoni media (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "time_remaining.days": "Edhe {number, plural, one {# ditë} other {# ditë}}",
+ "time_remaining.hours": "Edhe {number, plural, one {# orë} other {# orë}}",
+ "time_remaining.minutes": "Edhe {number, plural, one {# minutë} other {# minuta}}",
+ "time_remaining.moments": "Çaste të mbetur",
+ "time_remaining.seconds": "Edhe {number, plural, one {# sekondë} other {# sekonda}}",
+ "timeline_hint.remote_resource_not_displayed": "S’janë shfaqur {resource} nga shërbyes të tjerë.",
+ "timeline_hint.resources.followers": "Ndjekës",
+ "timeline_hint.resources.follows": "Ndjekje",
+ "timeline_hint.resources.statuses": "Mesazhe të vjetër",
+ "trends.count_by_accounts": "E biseduar nga {count} {rawCount, plural, one {person} other {vetë}}",
+ "trends.trending_now": "Prirjet e tashme",
+ "ui.beforeunload": "Skica juaj do të humbë, nëse dilni nga Mastodon-i.",
+ "upload_area.title": "Që të ngarkohet, merreni & vëreni",
+ "upload_button.label": "Shtoni figura, një video ose një kartelë audio",
"upload_error.limit": "U tejkalua kufi ngarkimi kartelash.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "Me pyetësorët s’lejohet ngarkim kartelash.",
+ "upload_form.audio_description": "Përshkruajeni për persona me dëgjim të kufizuar",
"upload_form.description": "Përshkruajeni për persona me probleme shikimi",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "Përpunoni",
"upload_form.undo": "Fshije",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_form.video_description": "Përshkruajeni për persona me dëgjim të kufizuar ose probleme shikimi",
+ "upload_modal.analyzing_picture": "Po analizohet fotoja…",
+ "upload_modal.apply": "Aplikoje",
+ "upload_modal.description_placeholder": "Deshe Korçën, Korçën të dhamë",
+ "upload_modal.detect_text": "Pikase tekstin prej fotoje",
+ "upload_modal.edit_media": "Përpunoni media",
+ "upload_modal.hint": "Që të zgjidhni pikën vatrore e cila do të jetë përherë e dukshme në krejt miniaturat, klikojeni ose tërhiqeni rrethin te paraparja.",
+ "upload_modal.preview_label": "Paraparje ({ratio})",
"upload_progress.label": "Po ngarkohet…",
"video.close": "Mbylle videon",
+ "video.download": "Shkarkoje kartelën",
"video.exit_fullscreen": "Dil nga mënyra Sa Krejt Ekrani",
"video.expand": "Zgjeroje videon",
"video.fullscreen": "Sa krejt ekrani",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 59b8459ae..cb49a1cb9 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
+ "account.badges.group": "Group",
"account.block": "Blokiraj korisnika @{name}",
"account.block_domain": "Sakrij sve sa domena {domain}",
"account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain hidden",
@@ -38,10 +42,15 @@
"account.unfollow": "Otprati",
"account.unmute": "Ukloni ućutkavanje korisniku @{name}",
"account.unmute_notifications": "Uključi nazad obaveštenja od korisnika @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "Možete pritisnuti {combo} da preskočite ovo sledeći put",
"bundle_column_error.body": "Nešto je pošlo po zlu prilikom učitavanja ove komponente.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Nešto nije bilo u redu pri učitavanju ove komponente.",
"bundle_modal_error.retry": "Pokušajte ponovo",
"column.blocks": "Blokirani korisnici",
+ "column.bookmarks": "Bookmarks",
"column.community": "Lokalna lajna",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "Prikaži postavke",
"column_header.unpin": "Otkači",
"column_subheading.settings": "Postavke",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Tutni",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "Lokalna lajna je prazna. Napišite nešto javno da lajna produva!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "Odobri",
"follow_request.reject": "Odbij",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Developers",
"getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentation",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Osnovno",
"home.column_settings.show_reblogs": "Prikaži i podržavanja",
"home.column_settings.show_replies": "Prikaži odgovore",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "da odgovorite",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "da se prebacite na pretragu",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Sakrij obaveštenja od ovog korisnika?",
"navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blokirani korisnici",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Lokalna lajna",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Security",
"notification.favourite": "{name} je stavio Vaš status kao omiljeni",
"notification.follow": "{name} Vas je zapratio",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} Vas je pomenuo",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} je podržao(la) Vaš status",
"notifications.clear": "Očisti obaveštenja",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "Novi pratioci:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Pominjanja:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Guraj obaveštenja",
@@ -322,6 +346,7 @@
"relative_time.just_now": "sada",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Poništi",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -344,6 +369,7 @@
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "Ovaj status ne može da se podrži",
"status.copy": "Copy link to status",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} podržao(la)",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "Odgovori",
"status.replyAll": "Odgovori na diskusiju",
"status.report": "Prijavi korisnika @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Ako napustite Mastodont, izgubićete napisani nacrt.",
@@ -400,9 +431,11 @@
"upload_button.label": "Dodaj multimediju",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Opiši za slabovide osobe",
"upload_form.edit": "Edit",
"upload_form.undo": "Opozovi",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Otpremam...",
"video.close": "Zatvori video",
+ "video.download": "Download file",
"video.exit_fullscreen": "Napusti ceo ekran",
"video.expand": "Proširi video",
"video.fullscreen": "Ceo ekran",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index d222e774d..b1104f653 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -1,10 +1,14 @@
{
- "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Додај или Одстрани са листа",
"account.badges.bot": "Бот",
+ "account.badges.group": "Група",
"account.block": "Блокирај @{name}",
"account.block_domain": "Сакриј све са домена {domain}",
"account.blocked": "Блокиран",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Поништи захтеве за праћење",
"account.direct": "Директна порука @{name}",
"account.domain_blocked": "Домен сакривен",
"account.edit_profile": "Измени профил",
@@ -16,16 +20,16 @@
"account.follows.empty": "Корисник тренутно не прати никога.",
"account.follows_you": "Прати Вас",
"account.hide_reblogs": "Сакриј подршке које даје корисника @{name}",
- "account.last_status": "Last active",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
- "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.last_status": "Последњи пут активан/на",
+ "account.link_verified_on": "Власништво над овом везом је проверено {date}",
+ "account.locked_info": "Статус приватности овог налога је подешен на закључано. Власник ручно прегледа ко га може пратити.",
"account.media": "Медији",
"account.mention": "Помени корисника @{name}",
"account.moved_to": "{name} се померио на:",
"account.mute": "Ућуткај корисника @{name}",
"account.mute_notifications": "Искључи обавештења од корисника @{name}",
"account.muted": "Ућуткан",
- "account.never_active": "Never",
+ "account.never_active": "Никада",
"account.posts": "Трубе",
"account.posts_with_replies": "Трубе и одговори",
"account.report": "Пријави @{name}",
@@ -38,11 +42,16 @@
"account.unfollow": "Отпрати",
"account.unmute": "Уклони ућуткавање кориснику @{name}",
"account.unmute_notifications": "Укључи назад обавештења од корисника @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Молимо покушајте поново после {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Ограничена брзина",
"alert.unexpected.message": "Појавила се неочекивана грешка.",
"alert.unexpected.title": "Упс!",
- "autosuggest_hashtag.per_week": "{count} per week",
+ "announcement.announcement": "Најава",
+ "autosuggest_hashtag.per_week": "{count} недељно",
"boost_modal.combo": "Можете притиснути {combo} да прескочите ово следећи пут",
"bundle_column_error.body": "Нешто је пошло по злу приликом учитавања ове компоненте.",
"bundle_column_error.retry": "Покушајте поново",
@@ -51,9 +60,10 @@
"bundle_modal_error.message": "Нешто није било у реду при учитавању ове компоненте.",
"bundle_modal_error.retry": "Покушајте поново",
"column.blocks": "Блокирани корисници",
+ "column.bookmarks": "Обележивачи",
"column.community": "Локална временска линија",
"column.direct": "Директне поруке",
- "column.directory": "Browse profiles",
+ "column.directory": "Претражиј профиле",
"column.domain_blocks": "Скривени домени",
"column.favourites": "Омиљене",
"column.follow_requests": "Захтеви за праћење",
@@ -71,27 +81,31 @@
"column_header.show_settings": "Прикажи поставке",
"column_header.unpin": "Откачи",
"column_subheading.settings": "Поставке",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Само Медији",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "Ова труба ће бити послата споменутим корисницима.",
"compose_form.direct_message_warning_learn_more": "Сазнајте више",
"compose_form.hashtag_warning": "Ова труба неће бити излистана под било којом тарабом јер је сакривена. Само јавне трубе могу бити претражене тарабом.",
"compose_form.lock_disclaimer": "Ваш налог није {locked}. Свако може да Вас запрати и да види објаве намењене само Вашим пратиоцима.",
"compose_form.lock_disclaimer.lock": "закључан",
"compose_form.placeholder": "Шта Вам је на уму?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Додајте избор",
+ "compose_form.poll.duration": "Трајање анкете",
+ "compose_form.poll.option_placeholder": "Избор {number}",
+ "compose_form.poll.remove_option": "Одстрани овај избор",
+ "compose_form.poll.switch_to_multiple": "Промените анкету да бисте омогућили више избора",
+ "compose_form.poll.switch_to_single": "Промените анкету да бисте омогућили један избор",
"compose_form.publish": "Труби",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.hide": "Означи мултимедију као осетљиву",
"compose_form.sensitive.marked": "Медији су означени као осетљиви",
"compose_form.sensitive.unmarked": "Медији су означени као не-осетљиви",
"compose_form.spoiler.marked": "Текст је сакривен иза упозорења",
"compose_form.spoiler.unmarked": "Текст није сакривен",
"compose_form.spoiler_placeholder": "Овде упишите упозорење",
"confirmation_modal.cancel": "Поништи",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Блокирај и Пријави",
"confirmations.block.confirm": "Блокирај",
"confirmations.block.message": "Да ли сте сигурни да желите да блокирате корисника {name}?",
"confirmations.delete.confirm": "Обриши",
@@ -100,25 +114,25 @@
"confirmations.delete_list.message": "Да ли сте сигурни да желите да бесповратно обришете ову листу?",
"confirmations.domain_block.confirm": "Сакриј цео домен",
"confirmations.domain_block.message": "Да ли сте заиста сигурни да желите да блокирате цео домен {domain}? У већини случајева, неколико добро промишљених блокирања или ућуткавања су довољна и препоручљива.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.logout.confirm": "Одјави се",
+ "confirmations.logout.message": "Да ли се сигурни да желите да се одјавите?",
"confirmations.mute.confirm": "Ућуткај",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Ово ће сакрити објаве од њих и објаве које их помињу, али ће им и даље дозволити да виде ваше постове и да вас запрате.",
"confirmations.mute.message": "Да ли стварно желите да ућуткате корисника {name}?",
"confirmations.redraft.confirm": "Избриши и преправи",
"confirmations.redraft.message": "Да ли сте сигурни да желите да избришете овај статус и да га преправите? Сва стављања у омиљене трубе, као и подршке ће бити изгубљене, а одговори на оригинални пост ће бити поништени.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "Одговори",
+ "confirmations.reply.message": "Одговарањем ћете обрисати поруку коју састављате. Јесте ли сигурни да желите да наставите?",
"confirmations.unfollow.confirm": "Отпрати",
"confirmations.unfollow.message": "Да ли сте сигурни да желите да отпратите корисника {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
+ "conversation.delete": "Обриши преписку",
+ "conversation.mark_as_read": "Означи као прочитано",
+ "conversation.open": "Прикажи преписку",
+ "conversation.with": "Са {names}",
+ "directory.federated": "Са знаних здружених инстанци",
+ "directory.local": "Само са {domain}",
+ "directory.new_arrivals": "Новопридошли",
+ "directory.recently_active": "Недавно активни",
"embed.instructions": "Угради овај статус на Ваш веб сајт копирањем кода испод.",
"embed.preview": "Овако ће да изгледа:",
"emoji_button.activity": "Активност",
@@ -135,9 +149,10 @@
"emoji_button.search_results": "Резултати претраге",
"emoji_button.symbols": "Симболи",
"emoji_button.travel": "Путовања и места",
- "empty_column.account_timeline": "No toots here!",
- "empty_column.account_unavailable": "Profile unavailable",
+ "empty_column.account_timeline": "Овде нема труба!",
+ "empty_column.account_unavailable": "Профил недоступан",
"empty_column.blocks": "Још увек немате блокираних корисника.",
+ "empty_column.bookmarked_statuses": "Још увек немате обележене трубе. Када их обележите, појавиће се овде.",
"empty_column.community": "Локална временска линија је празна. Напишите нешто јавно да започнете!",
"empty_column.direct": "Још увек немате директних порука. Када пошаљете или примите једну, појавиће се овде.",
"empty_column.domain_blocks": "Још увек нема сакривених домена.",
@@ -152,39 +167,42 @@
"empty_column.mutes": "Још увек немате ућутканих корисника.",
"empty_column.notifications": "Тренутно немате обавештења. Дружите се мало да започнете разговор.",
"empty_column.public": "Овде нема ничега! Напишите нешто јавно, или нађите кориснике са других инстанци које ћете запратити да попуните ову празнину",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "Због грешке у нашем коду или проблема са компатибилношћу прегледача, ова страница се није могла правилно приказати.",
+ "error.unexpected_crash.next_steps": "Покушајте да освежите страницу. Ако то не помогне, можда ћете и даље моћи да користите Мастодон путем другог прегледача или матичне апликације.",
+ "errors.unexpected_crash.copy_stacktrace": "Копирај \"stacktrace\" у клипборд",
+ "errors.unexpected_crash.report_issue": "Пријави проблем",
"follow_request.authorize": "Одобри",
"follow_request.reject": "Одбиј",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Програмери",
- "getting_started.directory": "Profile directory",
+ "getting_started.directory": "Профил фасцикле",
"getting_started.documentation": "Документација",
"getting_started.heading": "Да почнете",
"getting_started.invite": "Позовите људе",
"getting_started.open_source_notice": "Мастoдон је софтвер отвореног кода. Можете му допринети или пријавити проблеме преко ГитХаба на {github}.",
"getting_started.security": "Безбедност",
"getting_started.terms": "Услови коришћења",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_header.tag_mode.all": "и {additional}",
+ "hashtag.column_header.tag_mode.any": "или {additional}",
+ "hashtag.column_header.tag_mode.none": "без {additional}",
+ "hashtag.column_settings.select.no_options_message": "Нису пронађени предлози",
+ "hashtag.column_settings.select.placeholder": "Унеси хештег…",
+ "hashtag.column_settings.tag_mode.all": "Све оve",
+ "hashtag.column_settings.tag_mode.any": "Било које од ових",
+ "hashtag.column_settings.tag_mode.none": "Ништа од ових",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Основно",
"home.column_settings.show_reblogs": "Прикажи и подржавања",
"home.column_settings.show_replies": "Прикажи одговоре",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
- "introduction.federation.federated.headline": "Federated",
- "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
- "introduction.federation.home.headline": "Home",
+ "home.hide_announcements": "Сакриј најаве",
+ "home.show_announcements": "Пријажи најаве",
+ "intervals.full.days": "{number, plural, one {# дан} other {# дана}}",
+ "intervals.full.hours": "{number, plural, one {# сат} other {# сати}}",
+ "intervals.full.minutes": "{number, plural, one {# минут} other {# минута}}",
+ "introduction.federation.action": "Даље",
+ "introduction.federation.federated.headline": "Федерисано",
+ "introduction.federation.federated.text": "Јавне објаве са осталих сервера из здружених инстанци ће се појавити у федерисаној временској линији.",
+ "introduction.federation.home.headline": "Почетна",
"introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
"introduction.federation.local.headline": "Local",
"introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "да отворите листу ућутканих корисника",
"keyboard_shortcuts.my_profile": "да отворите ваш профил",
"keyboard_shortcuts.notifications": "да отворите колону обавештења",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "да отворите листу закачених труба",
"keyboard_shortcuts.profile": "да отворите профил аутора",
"keyboard_shortcuts.reply": "да одговорите",
"keyboard_shortcuts.requests": "да отворите листу примљених захтева за праћење",
"keyboard_shortcuts.search": "да се пребаците на претрагу",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "да отворите колону \"почнимо\"",
"keyboard_shortcuts.toggle_hidden": "да прикажете/сакријте текст иза CW-а",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Сакриј обавештења од овог корисника?",
"navigation_bar.apps": "Мобилне апликације",
"navigation_bar.blocks": "Блокирани корисници",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Локална временска линија",
"navigation_bar.compose": "Саставите нову трубу",
"navigation_bar.direct": "Директне поруке",
@@ -273,7 +294,9 @@
"navigation_bar.security": "Безбедност",
"notification.favourite": "{name} је ставио/ла Ваш статус као омиљени",
"notification.follow": "{name} Вас је запратио/ла",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} Вас је поменуо/ла",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} је подржао/ла Ваш статус",
"notifications.clear": "Очисти обавештења",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "Нови пратиоци:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Помињања:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Гурај обавештења",
@@ -322,6 +346,7 @@
"relative_time.just_now": "сада",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "Поништи",
"report.forward": "Проследити {target}",
"report.forward_hint": "Налог је са другог сервера. Послати анонимну копију пријаве и тамо?",
@@ -341,12 +366,13 @@
"search_results.statuses": "Трубе",
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
"search_results.total": "{count, number} {count, plural, one {резултат} few {резултата} other {резултата}}",
- "status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
+ "status.admin_account": "Отвори модераторски интерфејс за @{name}",
+ "status.admin_status": "Отвори овај статус у модераторском интерфејсу",
"status.block": "Блокирај @{name}",
+ "status.bookmark": "Обележи",
"status.cancel_reblog_private": "Уклони подршку",
"status.cannot_reblog": "Овај статус не може да се подржи",
- "status.copy": "Copy link to status",
+ "status.copy": "Копирај везу на статус",
"status.delete": "Обриши",
"status.detailed_status": "Детаљни преглед разговора",
"status.direct": "Директна порука @{name}",
@@ -362,12 +388,13 @@
"status.open": "Прошири овај статус",
"status.pin": "Закачи на профил",
"status.pinned": "Закачена труба",
- "status.read_more": "Read more",
+ "status.read_more": "Прочитајте више",
"status.reblog": "Подржи",
"status.reblog_private": "Подржи да види првобитна публика",
"status.reblogged_by": "{name} подржао/ла",
"status.reblogs.empty": "Још увек нико није подржао ову трубу. Када буде подржана, појавиће се овде.",
"status.redraft": "Избриши и преправи",
+ "status.remove_bookmark": "Уклони обележивач",
"status.reply": "Одговори",
"status.replyAll": "Одговори на дискусију",
"status.report": "Пријави корисника @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {човек} other {људи}} прича",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Ако напустите Мастодонт, изгубићете написани нацрт.",
@@ -400,9 +431,11 @@
"upload_button.label": "Додај мултимедију (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Опишите за особе са оштећеним видом",
"upload_form.edit": "Edit",
"upload_form.undo": "Обриши",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Отпремам...",
"video.close": "Затвори видео",
+ "video.download": "Download file",
"video.exit_fullscreen": "Напусти цео екран",
"video.expand": "Прошири видео",
"video.fullscreen": "Цео екран",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index e8c1c40c2..3a221b641 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -1,24 +1,28 @@
{
- "account.add_or_remove_from_list": "Lägg till eller ta bort från listor",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor",
"account.badges.bot": "Robot",
+ "account.badges.group": "Grupp",
"account.block": "Blockera @{name}",
"account.block_domain": "Dölj allt från {domain}",
"account.blocked": "Blockerad",
- "account.cancel_follow_request": "Avbryt förfrågan att följa",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Avbryt följarförfrågan",
"account.direct": "Skicka ett direktmeddelande till @{name}",
"account.domain_blocked": "Domän dold",
"account.edit_profile": "Redigera profil",
- "account.endorse": "Visa upp på profil",
+ "account.endorse": "Visa på profil",
"account.follow": "Följ",
"account.followers": "Följare",
- "account.followers.empty": "Ingen följer denna användaren än.",
+ "account.followers.empty": "Ingen följer denna användare än.",
"account.follows": "Följer",
- "account.follows.empty": "Den här användaren följer inte någon ännu.",
+ "account.follows.empty": "Denna användare följer inte någon än.",
"account.follows_you": "Följer dig",
"account.hide_reblogs": "Dölj knuffar från @{name}",
"account.last_status": "Senast aktiv",
- "account.link_verified_on": "Ägarskapet för det här kontot kontrollerades den {date}",
- "account.locked_info": "Detta konto har en låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.",
+ "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}",
+ "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.",
"account.media": "Media",
"account.mention": "Nämna @{name}",
"account.moved_to": "{name} har flyttat till:",
@@ -26,100 +30,110 @@
"account.mute_notifications": "Stäng av notifieringar från @{name}",
"account.muted": "Tystad",
"account.never_active": "Aldrig",
- "account.posts": "Inlägg",
- "account.posts_with_replies": "Toots och svar",
+ "account.posts": "Tutningar",
+ "account.posts_with_replies": "Tutningar och svar",
"account.report": "Rapportera @{name}",
- "account.requested": "Inväntar godkännande. Klicka för att avbryta följförfrågan",
+ "account.requested": "Inväntar godkännande. Klicka för att avbryta följarförfrågan",
"account.share": "Dela @{name}s profil",
"account.show_reblogs": "Visa knuffar från @{name}",
"account.unblock": "Avblockera @{name}",
"account.unblock_domain": "Sluta dölja {domain}",
- "account.unendorse": "Visa inte upp på profil",
- "account.unfollow": "Sluta följa",
+ "account.unendorse": "Visa inte på profil",
+ "account.unfollow": "Sluta följ",
"account.unmute": "Sluta tysta @{name}",
- "account.unmute_notifications": "Återaktivera notifikationer från @{name}",
+ "account.unmute_notifications": "Återaktivera aviseringar från @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Vänligen försök igen efter {retry_time, time, medium}.",
- "alert.rate_limited.title": "Begränsad mängd",
+ "alert.rate_limited.title": "Mängd begränsad",
"alert.unexpected.message": "Ett oväntat fel uppstod.",
"alert.unexpected.title": "Hoppsan!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per vecka",
- "boost_modal.combo": "Du kan trycka {combo} för att slippa denna nästa gång",
- "bundle_column_error.body": "Något gick fel när du laddade denna komponent.",
+ "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång",
+ "bundle_column_error.body": "Något gick fel medan denna komponent laddades.",
"bundle_column_error.retry": "Försök igen",
"bundle_column_error.title": "Nätverksfel",
"bundle_modal_error.close": "Stäng",
"bundle_modal_error.message": "Något gick fel när denna komponent laddades.",
"bundle_modal_error.retry": "Försök igen",
"column.blocks": "Blockerade användare",
+ "column.bookmarks": "Bokmärken",
"column.community": "Lokal tidslinje",
"column.direct": "Direktmeddelanden",
"column.directory": "Bläddra bland profiler",
"column.domain_blocks": "Dolda domäner",
"column.favourites": "Favoriter",
- "column.follow_requests": "Följförfrågningar",
+ "column.follow_requests": "Följarförfrågningar",
"column.home": "Hem",
"column.lists": "Listor",
"column.mutes": "Tystade användare",
- "column.notifications": "Meddelanden",
+ "column.notifications": "Aviseringar",
"column.pins": "Nålade toots",
"column.public": "Förenad tidslinje",
"column_back_button.label": "Tillbaka",
"column_header.hide_settings": "Dölj inställningar",
- "column_header.moveLeft_settings": "Flytta kolumnen till vänster",
- "column_header.moveRight_settings": "Flytta kolumnen till höger",
+ "column_header.moveLeft_settings": "Flytta kolumnen åt vänster",
+ "column_header.moveRight_settings": "Flytta kolumnen åt höger",
"column_header.pin": "Fäst",
"column_header.show_settings": "Visa inställningar",
"column_header.unpin": "Ångra fäst",
"column_subheading.settings": "Inställningar",
- "community.column_settings.media_only": "Enbart media",
- "compose_form.direct_message_warning": "Denna toot kommer endast att skickas till nämnda användare.",
- "compose_form.direct_message_warning_learn_more": "Visa mer",
- "compose_form.hashtag_warning": "Denna toot kommer inte att listas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.",
- "compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vem som helst kan följa dig och även se dina inlägg som bara är för följare.",
+ "community.column_settings.local_only": "Endast lokalt",
+ "community.column_settings.media_only": "Endast media",
+ "community.column_settings.remote_only": "Endast fjärr",
+ "compose_form.direct_message_warning": "Denna tutning kommer endast skickas till de nämnda användarna.",
+ "compose_form.direct_message_warning_learn_more": "Lär dig mer",
+ "compose_form.hashtag_warning": "Denna toot kommer inte att visas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.",
+ "compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vem som helst kan följa dig för att se dina inlägg som endast är för följare.",
"compose_form.lock_disclaimer.lock": "låst",
"compose_form.placeholder": "Vad funderar du på?",
- "compose_form.poll.add_option": "Nytt alternativ",
+ "compose_form.poll.add_option": "Lägg till ett val",
"compose_form.poll.duration": "Varaktighet för omröstning",
- "compose_form.poll.option_placeholder": "Alternativ {number}",
- "compose_form.poll.remove_option": "Ta bort alternativ",
+ "compose_form.poll.option_placeholder": "Val {number}",
+ "compose_form.poll.remove_option": "Ta bort detta val",
+ "compose_form.poll.switch_to_multiple": "Ändra enkät för att tillåta flera val",
+ "compose_form.poll.switch_to_single": "Ändra enkät för att tillåta ett enda val",
"compose_form.publish": "Tut",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Markera media som känsligt",
"compose_form.sensitive.marked": "Media har markerats som känsligt",
- "compose_form.sensitive.unmarked": "Media har inte markerats som känsligt",
- "compose_form.spoiler.marked": "Texten har dolts bakom en varning",
+ "compose_form.sensitive.unmarked": "Media är inte markerat som känsligt",
+ "compose_form.spoiler.marked": "Texten är dold bakom en varning",
"compose_form.spoiler.unmarked": "Texten är inte dold",
"compose_form.spoiler_placeholder": "Skriv din varning här",
"confirmation_modal.cancel": "Ångra",
"confirmations.block.block_and_report": "Blockera & rapportera",
"confirmations.block.confirm": "Blockera",
- "confirmations.block.message": "Är du säker att du vill blockera {name}?",
+ "confirmations.block.message": "Är du säker på att du vill blockera {name}?",
"confirmations.delete.confirm": "Ta bort",
- "confirmations.delete.message": "Är du säker att du vill ta bort denna status?",
+ "confirmations.delete.message": "Är du säker på att du vill ta bort denna status?",
"confirmations.delete_list.confirm": "Ta bort",
"confirmations.delete_list.message": "Är du säker på att du vill radera denna lista permanent?",
"confirmations.domain_block.confirm": "Dölj hela domänen",
- "confirmations.domain_block.message": "Är du verkligen säker på att du vill blockera hela {domain}? I de flesta fall är några riktade blockeringar eller nedtystade konton tillräckligt och att föredra. Du kommer sluta se innehåll från {domain}-domänen i den allmänna tidslinjen och i dina egna notifieringar. Du kommer även sluta följa alla eventuella följare du har från {domain}.",
+ "confirmations.domain_block.message": "Är du verkligen, verkligen säker på att du vill blockera hela {domain}? I de flesta fall är några riktade blockeringar eller nedtystade konton tillräckligt och att föredra. Du kommer inte se innehåll från den domänen i den allmänna tidslinjen eller i dina aviseringar. Dina följare från den domänen komer att tas bort.",
"confirmations.logout.confirm": "Logga ut",
"confirmations.logout.message": "Är du säker på att du vill logga ut?",
"confirmations.mute.confirm": "Tysta",
- "confirmations.mute.explanation": "Detta kommer dölja postningar från dem och postningar som nämner dem, men fortfarande tillåta dem att se dina postningar och följa dig.",
- "confirmations.mute.message": "Är du säker du vill tysta ner {name}?",
- "confirmations.redraft.confirm": "Radera och gör om",
- "confirmations.redraft.message": "Är du säker på att du vill radera meddelandet och göra om det? Du kommer förlora alla svar, knuffar och favoriter som hänvisar till meddelandet.",
+ "confirmations.mute.explanation": "Detta kommer att dölja poster från dem och poster som nämner dem, men fortfarande tillåta dem att se dina poster och följa dig.",
+ "confirmations.mute.message": "Är du säker på att du vill tysta {name}?",
+ "confirmations.redraft.confirm": "Radera & gör om",
+ "confirmations.redraft.message": "Är du säker på att du vill radera detta meddelande och göra om det? Du kommer förlora alla favoriter, knuffar och svar till det ursprungliga meddelandet.",
"confirmations.reply.confirm": "Svara",
- "confirmations.reply.message": "Om du svarar nu kommer det att ersätta meddelandet du håller på att skriva. Är du säker på att du vill fortsätta?",
- "confirmations.unfollow.confirm": "Sluta följa",
- "confirmations.unfollow.message": "Är du säker på att du vill sluta följa {name}?",
+ "confirmations.reply.message": "Om du svarar nu kommer det att ersätta meddelandet du håller på att skapa. Är du säker på att du vill fortsätta?",
+ "confirmations.unfollow.confirm": "Avfölj",
+ "confirmations.unfollow.message": "Är du säker på att du vill avfölja {name}?",
"conversation.delete": "Radera konversation",
"conversation.mark_as_read": "Markera som läst",
"conversation.open": "Se konversation",
"conversation.with": "Med {names}",
- "directory.federated": "Från känt fediverse",
+ "directory.federated": "Från känt servernätverk",
"directory.local": "Endast från {domain}",
"directory.new_arrivals": "Nyanlända",
"directory.recently_active": "Nyligen aktiva",
- "embed.instructions": "Bädda in den här statusen på din webbplats genom att kopiera koden nedan.",
+ "embed.instructions": "Lägg in denna status på din webbplats genom att kopiera koden nedan.",
"embed.preview": "Så här kommer det att se ut:",
"emoji_button.activity": "Aktivitet",
"emoji_button.custom": "Anpassad",
@@ -136,14 +150,15 @@
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Resor & platser",
"empty_column.account_timeline": "Inga inlägg här!",
- "empty_column.account_unavailable": "Profilen är inte tillgänglig",
- "empty_column.blocks": "Du har ännu inte blockerat några användare.",
+ "empty_column.account_unavailable": "Profilen ej tillgänglig",
+ "empty_column.blocks": "Du har ännu ej blockerat några användare.",
+ "empty_column.bookmarked_statuses": "Du har inte bokmärkt några tutar än. När du gör ett bokmärke kommer det synas här.",
"empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att sätta bollen i rullning!",
- "empty_column.direct": "Du har inga direktmeddelanden än. När du skickar eller tar emot ett kommer det att dyka upp här.",
+ "empty_column.direct": "Du har inga direktmeddelanden än. När du skickar eller tar emot ett kommer det att visas här.",
"empty_column.domain_blocks": "Det finns ännu inga dolda domäner.",
- "empty_column.favourited_statuses": "Du har inga favoritmarkerade toots än. När du favoritmarkerar en kommer den synas här.",
- "empty_column.favourites": "Ingen har favoritmarkerat den här tooten än. När någon gör det kommer de synas här.",
- "empty_column.follow_requests": "Du har inga följförfrågningar än. När du får en kommer den synas här.",
+ "empty_column.favourited_statuses": "Du har inga favoritmarkerade toots än. När du favoritmarkerar en kommer den visas här.",
+ "empty_column.favourites": "Ingen har favoritmarkerat den här tooten än. När någon gör det kommer den visas här.",
+ "empty_column.follow_requests": "Du har inga följarförfrågningar än. När du får en kommer den visas här.",
"empty_column.hashtag": "Det finns inget i denna hashtag ännu.",
"empty_column.home": "Din hemma-tidslinje är tom! Besök {public} eller använd sökning för att komma igång och träffa andra användare.",
"empty_column.home.public_timeline": "den publika tidslinjen",
@@ -158,13 +173,14 @@
"errors.unexpected_crash.report_issue": "Rapportera problem",
"follow_request.authorize": "Godkänn",
"follow_request.reject": "Avvisa",
+ "follow_requests.unlocked_explanation": "Även om ditt konto inte är låst tror {domain} personalen att du kanske vill granska dessa följares förfrågningar manuellt.",
"getting_started.developers": "Utvecklare",
"getting_started.directory": "Profilkatalog",
"getting_started.documentation": "Dokumentation",
"getting_started.heading": "Kom igång",
"getting_started.invite": "Skicka inbjudningar",
"getting_started.open_source_notice": "Mastodon är programvara med öppen källkod. Du kan bidra eller rapportera problem via GitHub på {github}.",
- "getting_started.security": "Säkerhet",
+ "getting_started.security": "Kontoinställningar",
"getting_started.terms": "Användarvillkor",
"hashtag.column_header.tag_mode.all": "och {additional}",
"hashtag.column_header.tag_mode.any": "eller {additional}",
@@ -178,9 +194,11 @@
"home.column_settings.basic": "Grundläggande",
"home.column_settings.show_reblogs": "Visa knuffar",
"home.column_settings.show_replies": "Visa svar",
+ "home.hide_announcements": "Dölj notiser",
+ "home.show_announcements": "Visa notiser",
"intervals.full.days": "{number, plural, one {# dag} other {# dagar}}",
- "intervals.full.hours": "{hours, plural, one {# timme} other {# timmar}}",
- "intervals.full.minutes": "{minutes, plural, one {1 minut} other {# minuter}}",
+ "intervals.full.hours": "{number, plural, one {# timme} other {# timmar}}",
+ "intervals.full.minutes": "{number, plural, one {# minut} other {# minuter}}",
"introduction.federation.action": "Nästa",
"introduction.federation.federated.headline": "Federerad",
"introduction.federation.federated.text": "Publika inlägg från andra servrar i servernätverket visas i den förenade tidslinjen.",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "för att öppna listan över tystade användare",
"keyboard_shortcuts.my_profile": "för att öppna din profil",
"keyboard_shortcuts.notifications": "för att öppna Meddelanden",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "för att öppna Nålade toots",
"keyboard_shortcuts.profile": "för att öppna skaparens profil",
"keyboard_shortcuts.reply": "för att svara",
"keyboard_shortcuts.requests": "för att öppna Följförfrågningar",
"keyboard_shortcuts.search": "för att fokusera sökfältet",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "för att öppna \"Kom igång\"-kolumnen",
"keyboard_shortcuts.toggle_hidden": "för att visa/gömma text bakom CW",
"keyboard_shortcuts.toggle_sensitivity": "för att visa/gömma media",
@@ -248,9 +268,10 @@
"media_gallery.toggle_visible": "Växla synlighet",
"missing_indicator.label": "Hittades inte",
"missing_indicator.sublabel": "Den här resursen kunde inte hittas",
- "mute_modal.hide_notifications": "Dölj notifikationer från denna användare?",
+ "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?",
"navigation_bar.apps": "Mobilappar",
"navigation_bar.blocks": "Blockerade användare",
+ "navigation_bar.bookmarks": "Bokmärken",
"navigation_bar.community_timeline": "Lokal tidslinje",
"navigation_bar.compose": "Författa ny toot",
"navigation_bar.direct": "Direktmeddelanden",
@@ -273,20 +294,23 @@
"navigation_bar.security": "Säkerhet",
"notification.favourite": "{name} favoriserade din status",
"notification.follow": "{name} följer dig",
+ "notification.follow_request": "{name} har begärt att följa dig",
"notification.mention": "{name} nämnde dig",
+ "notification.own_poll": "Din röstning har avslutats",
"notification.poll": "En omröstning du röstat i har avslutats",
"notification.reblog": "{name} knuffade din status",
- "notifications.clear": "Rensa meddelanden",
- "notifications.clear_confirmation": "Är du säker på att du vill radera alla dina meddelanden permanent?",
- "notifications.column_settings.alert": "Skrivbordsmeddelanden",
+ "notifications.clear": "Rensa aviseringar",
+ "notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?",
+ "notifications.column_settings.alert": "Skrivbordsaviseringar",
"notifications.column_settings.favourite": "Favoriter:",
"notifications.column_settings.filter_bar.advanced": "Visa alla kategorier",
"notifications.column_settings.filter_bar.category": "Snabbfilter",
"notifications.column_settings.filter_bar.show": "Visa",
"notifications.column_settings.follow": "Nya följare:",
+ "notifications.column_settings.follow_request": "Ny följ-förfrågan:",
"notifications.column_settings.mention": "Omnämningar:",
"notifications.column_settings.poll": "Omröstningsresultat:",
- "notifications.column_settings.push": "Push meddelanden",
+ "notifications.column_settings.push": "Push-aviseringar",
"notifications.column_settings.reblog": "Knuffar:",
"notifications.column_settings.show": "Visa i kolumnen",
"notifications.column_settings.sound": "Spela upp ljud",
@@ -322,6 +346,7 @@
"relative_time.just_now": "nu",
"relative_time.minutes": "{number}min",
"relative_time.seconds": "{number}sek",
+ "relative_time.today": "idag",
"reply_indicator.cancel": "Ångra",
"report.forward": "Vidarebefordra till {target}",
"report.forward_hint": "Kontot är från en annan server. Skicka även en anonymiserad kopia av anmälan dit?",
@@ -344,6 +369,7 @@
"status.admin_account": "Öppet modereringsgränssnitt för @{name}",
"status.admin_status": "Öppna denna status i modereringsgränssnittet",
"status.block": "Blockera @{name}",
+ "status.bookmark": "Bokmärk",
"status.cancel_reblog_private": "Ta bort knuff",
"status.cannot_reblog": "Detta inlägg kan inte knuffas",
"status.copy": "Kopiera länk till status",
@@ -366,8 +392,9 @@
"status.reblog": "Knuffa",
"status.reblog_private": "Knuffa till de ursprungliga åhörarna",
"status.reblogged_by": "{name} knuffade",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.reblogs.empty": "Ingen har favoriserat den här tutningen än. När någon gör det kommer den att synas här.",
"status.redraft": "Radera & gör om",
+ "status.remove_bookmark": "Ta bort bokmärke",
"status.reply": "Svara",
"status.replyAll": "Svara på tråden",
"status.report": "Rapportera @{name}",
@@ -381,43 +408,50 @@
"status.uncached_media_warning": "Ej tillgängligt",
"status.unmute_conversation": "Öppna konversation",
"status.unpin": "Ångra fäst i profil",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Avfärda förslag",
+ "suggestions.header": "Du kanske är intresserad av…",
"tabs_bar.federated_timeline": "Förenad",
"tabs_bar.home": "Hem",
"tabs_bar.local_timeline": "Lokal",
- "tabs_bar.notifications": "Meddelanden",
+ "tabs_bar.notifications": "Aviseringar",
"tabs_bar.search": "Sök",
"time_remaining.days": "{number, plural, one {# dag} other {# dagar}} kvar",
"time_remaining.hours": "{hours, plural, one {# timme} other {# timmar}} kvar",
"time_remaining.minutes": "{minutes, plural, one {1 minut} other {# minuter}} kvar",
- "time_remaining.moments": "Moments remaining",
+ "time_remaining.moments": "Återstående tillfällen",
"time_remaining.seconds": "{hours, plural, one {# sekund} other {# sekunder}} kvar",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, en {person} andra {people}} pratar",
- "trends.trending_now": "Trending now",
+ "trends.trending_now": "Trendar nu",
"ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Mastodon.",
"upload_area.title": "Dra & släpp för att ladda upp",
"upload_button.label": "Lägg till media",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.limit": "Filöverföringsgränsen överskriden.",
+ "upload_error.poll": "Filuppladdning tillåts inte med omröstningar.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Beskriv för synskadade",
"upload_form.edit": "Redigera",
"upload_form.undo": "Ta bort",
- "upload_modal.analyzing_picture": "Analyzing picture…",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+ "upload_modal.analyzing_picture": "Analyserar bild…",
"upload_modal.apply": "Verkställ",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_modal.description_placeholder": "En snabb brun räv hoppar över den lata hunden",
+ "upload_modal.detect_text": "Upptäck bildens text",
+ "upload_modal.edit_media": "Redigera meida",
+ "upload_modal.hint": "Klicka eller dra cirkeln på förhandstitten för att välja den fokusering som alltid kommer synas på alla miniatyrer.",
+ "upload_modal.preview_label": "Förhandstitt ({ratio})",
"upload_progress.label": "Laddar upp...",
"video.close": "Stäng video",
+ "video.download": "Ladda ner fil",
"video.exit_fullscreen": "Stäng helskärm",
"video.expand": "Expandera video",
"video.fullscreen": "Helskärm",
"video.hide": "Dölj video",
"video.mute": "Stäng av ljud",
- "video.pause": "Pause",
+ "video.pause": "Pausa",
"video.play": "Spela upp",
"video.unmute": "Spela upp ljud"
}
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
new file mode 100644
index 000000000..1476d0a54
--- /dev/null
+++ b/app/javascript/mastodon/locales/szl.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.badges.bot": "Bot",
+ "account.badges.group": "Group",
+ "account.block": "Block @{name}",
+ "account.block_domain": "Block domain {domain}",
+ "account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Cancel follow request",
+ "account.direct": "Direct message @{name}",
+ "account.domain_blocked": "Domain blocked",
+ "account.edit_profile": "Edit profile",
+ "account.endorse": "Feature on profile",
+ "account.follow": "Follow",
+ "account.followers": "Followers",
+ "account.followers.empty": "No one follows this user yet.",
+ "account.follows": "Follows",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows_you": "Follows you",
+ "account.hide_reblogs": "Hide boosts from @{name}",
+ "account.last_status": "Last active",
+ "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.media": "Media",
+ "account.mention": "Mention @{name}",
+ "account.moved_to": "{name} has moved to:",
+ "account.mute": "Mute @{name}",
+ "account.mute_notifications": "Mute notifications from @{name}",
+ "account.muted": "Muted",
+ "account.never_active": "Never",
+ "account.posts": "Toots",
+ "account.posts_with_replies": "Toots and replies",
+ "account.report": "Report @{name}",
+ "account.requested": "Awaiting approval",
+ "account.share": "Share @{name}'s profile",
+ "account.show_reblogs": "Show boosts from @{name}",
+ "account.unblock": "Unblock @{name}",
+ "account.unblock_domain": "Unblock domain {domain}",
+ "account.unendorse": "Don't feature on profile",
+ "account.unfollow": "Unfollow",
+ "account.unmute": "Unmute @{name}",
+ "account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Rate limited",
+ "alert.unexpected.message": "An unexpected error occurred.",
+ "alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "{count} per week",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "bundle_column_error.body": "Something went wrong while loading this component.",
+ "bundle_column_error.retry": "Try again",
+ "bundle_column_error.title": "Network error",
+ "bundle_modal_error.close": "Close",
+ "bundle_modal_error.message": "Something went wrong while loading this component.",
+ "bundle_modal_error.retry": "Try again",
+ "column.blocks": "Blocked users",
+ "column.bookmarks": "Bookmarks",
+ "column.community": "Local timeline",
+ "column.direct": "Direct messages",
+ "column.directory": "Browse profiles",
+ "column.domain_blocks": "Blocked domains",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Home",
+ "column.lists": "Lists",
+ "column.mutes": "Muted users",
+ "column.notifications": "Notifications",
+ "column.pins": "Pinned toot",
+ "column.public": "Federated timeline",
+ "column_back_button.label": "Back",
+ "column_header.hide_settings": "Hide settings",
+ "column_header.moveLeft_settings": "Move column to the left",
+ "column_header.moveRight_settings": "Move column to the right",
+ "column_header.pin": "Pin",
+ "column_header.show_settings": "Show settings",
+ "column_header.unpin": "Unpin",
+ "column_subheading.settings": "Settings",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+ "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "What is on your mind?",
+ "compose_form.poll.add_option": "Add a choice",
+ "compose_form.poll.duration": "Poll duration",
+ "compose_form.poll.option_placeholder": "Choice {number}",
+ "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "Toot",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.marked": "Media is marked as sensitive",
+ "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.spoiler.marked": "Text is hidden behind warning",
+ "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler_placeholder": "Write your warning here",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.logout.confirm": "Log out",
+ "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+ "confirmations.reply.confirm": "Reply",
+ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.unfollow.confirm": "Unfollow",
+ "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "conversation.delete": "Delete conversation",
+ "conversation.mark_as_read": "Mark as read",
+ "conversation.open": "View conversation",
+ "conversation.with": "With {names}",
+ "directory.federated": "From known fediverse",
+ "directory.local": "From {domain} only",
+ "directory.new_arrivals": "New arrivals",
+ "directory.recently_active": "Recently active",
+ "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.preview": "Here is what it will look like:",
+ "emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
+ "emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
+ "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no blocked domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
+ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "errors.unexpected_crash.report_issue": "Report issue",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "Developers",
+ "getting_started.directory": "Profile directory",
+ "getting_started.documentation": "Documentation",
+ "getting_started.heading": "Getting started",
+ "getting_started.invite": "Invite people",
+ "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+ "getting_started.security": "Security",
+ "getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.select.no_options_message": "No suggestions found",
+ "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
+ "intervals.full.days": "{number, plural, one {# day} other {# days}}",
+ "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "introduction.federation.action": "Next",
+ "introduction.federation.federated.headline": "Federated",
+ "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+ "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+ "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "introduction.interactions.action": "Finish toot-orial!",
+ "introduction.interactions.favourite.headline": "Favourite",
+ "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.reply.headline": "Reply",
+ "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+ "introduction.welcome.action": "Let's go!",
+ "introduction.welcome.headline": "First steps",
+ "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "to move down in the list",
+ "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "to move up in the list",
+ "lightbox.close": "Close",
+ "lightbox.next": "Next",
+ "lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "Add to list",
+ "lists.account.remove": "Remove from list",
+ "lists.delete": "Delete list",
+ "lists.edit": "Edit list",
+ "lists.edit.submit": "Change title",
+ "lists.new.create": "Add list",
+ "lists.new.title_placeholder": "New list title",
+ "lists.search": "Search among people you follow",
+ "lists.subheading": "Your lists",
+ "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "loading_indicator.label": "Loading...",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
+ "missing_indicator.label": "Not found",
+ "missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Direct messages",
+ "navigation_bar.discover": "Discover",
+ "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.edit_profile": "Edit profile",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.filters": "Muted words",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.info": "About this server",
+ "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "navigation_bar.lists": "Lists",
+ "navigation_bar.logout": "Logout",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.preferences": "Preferences",
+ "navigation_bar.public_timeline": "Federated timeline",
+ "navigation_bar.security": "Security",
+ "notification.favourite": "{name} favourited your status",
+ "notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
+ "notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
+ "notification.poll": "A poll you have voted in has ended",
+ "notification.reblog": "{name} boosted your status",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.filter_bar.advanced": "Display all categories",
+ "notifications.column_settings.filter_bar.category": "Quick filter bar",
+ "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.filter.all": "All",
+ "notifications.filter.boosts": "Boosts",
+ "notifications.filter.favourites": "Favourites",
+ "notifications.filter.follows": "Follows",
+ "notifications.filter.mentions": "Mentions",
+ "notifications.filter.polls": "Poll results",
+ "notifications.group": "{count} notifications",
+ "poll.closed": "Closed",
+ "poll.refresh": "Refresh",
+ "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.vote": "Vote",
+ "poll.voted": "You voted for this answer",
+ "poll_button.add_poll": "Add a poll",
+ "poll_button.remove_poll": "Remove poll",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Visible for mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Visible for followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Visible for all, shown in public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Visible for all, but not in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "refresh": "Refresh",
+ "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "now",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
+ "reply_indicator.cancel": "Cancel",
+ "report.forward": "Forward to {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Report {target}",
+ "search.placeholder": "Search",
+ "search_popout.search_format": "Advanced search format",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "user",
+ "search_results.accounts": "People",
+ "search_results.hashtags": "Hashtags",
+ "search_results.statuses": "Toots",
+ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.admin_account": "Open moderation interface for @{name}",
+ "status.admin_status": "Open this status in the moderation interface",
+ "status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
+ "status.cancel_reblog_private": "Unboost",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.copy": "Copy link to status",
+ "status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Direct message @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Favourite",
+ "status.filtered": "Filtered",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mention @{name}",
+ "status.more": "More",
+ "status.mute": "Mute @{name}",
+ "status.mute_conversation": "Mute conversation",
+ "status.open": "Expand this status",
+ "status.pin": "Pin on profile",
+ "status.pinned": "Pinned toot",
+ "status.read_more": "Read more",
+ "status.reblog": "Boost",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
+ "status.reply": "Reply",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_warning": "Sensitive content",
+ "status.share": "Share",
+ "status.show_less": "Show less",
+ "status.show_less_all": "Show less for all",
+ "status.show_more": "Show more",
+ "status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
+ "status.uncached_media_warning": "Not available",
+ "status.unmute_conversation": "Unmute conversation",
+ "status.unpin": "Unpin from profile",
+ "suggestions.dismiss": "Dismiss suggestion",
+ "suggestions.header": "You might be interested in…",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Home",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "tabs_bar.search": "Search",
+ "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+ "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+ "time_remaining.moments": "Moments remaining",
+ "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "trends.trending_now": "Trending now",
+ "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Add images, a video or an audio file",
+ "upload_error.limit": "File upload limit exceeded.",
+ "upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
+ "upload_form.description": "Describe for the visually impaired",
+ "upload_form.edit": "Edit",
+ "upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+ "upload_modal.analyzing_picture": "Analyzing picture…",
+ "upload_modal.apply": "Apply",
+ "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+ "upload_modal.detect_text": "Detect text from picture",
+ "upload_modal.edit_media": "Edit media",
+ "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_progress.label": "Uploading…",
+ "video.close": "Close video",
+ "video.download": "Download file",
+ "video.exit_fullscreen": "Exit full screen",
+ "video.expand": "Expand video",
+ "video.fullscreen": "Full screen",
+ "video.hide": "Hide video",
+ "video.mute": "Mute sound",
+ "video.pause": "Pause",
+ "video.play": "Play",
+ "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 82b5fff9e..8fdf10997 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -1,143 +1,158 @@
{
- "account.add_or_remove_from_list": "பட்டியல்களில் இருந்து சேர் அல்லது நீக்குக",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "பட்டியல்களில் சேர்/நீக்கு",
"account.badges.bot": "பாட்",
- "account.block": "Block @{name}",
- "account.block_domain": "எல்லாவற்றையும் மறைக்க {domain}",
- "account.blocked": "தடைமுட்டுகள்",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.badges.group": "குழு",
+ "account.block": "@{name} -ஐத் தடு",
+ "account.block_domain": "{domain} யில் இருந்து வரும் எல்லாவற்றையும் மறை",
+ "account.blocked": "முடக்கப்பட்டது",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "பின்தொடரும் கோரிக்கையை நிராகரி",
"account.direct": "நேரடி செய்தி @{name}",
- "account.domain_blocked": "டொமைன் மறைக்கப்பட்டது",
- "account.edit_profile": "சுயவிவரத்தைத் திருத்தவும்",
- "account.endorse": "சுயவிவரத்தில் அம்சம்",
- "account.follow": "பின்பற்று",
- "account.followers": "பின்பற்றுபவர்கள்",
+ "account.domain_blocked": "மறைக்கப்பட்டத் தளங்கள்",
+ "account.edit_profile": "சுயவிவரத்தை மாற்று",
+ "account.endorse": "சுயவிவரத்தில் வெளிப்படுத்து",
+ "account.follow": "பின்தொடர்",
+ "account.followers": "பின்தொடர்பவர்கள்",
"account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.",
- "account.follows": "பின்பற்று",
+ "account.follows": "பின்தொடர்",
"account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.",
- "account.follows_you": "நீ பின் தொடர்கிறாய்",
+ "account.follows_you": "உங்களைப் பின்தொடர்கிறார்",
"account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}",
- "account.last_status": "Last active",
+ "account.last_status": "கடைசி செயல்பாடு",
"account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}",
"account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.",
- "account.media": "Media",
+ "account.media": "ஊடகங்கள்",
"account.mention": "குறிப்பிடு @{name}",
"account.moved_to": "{name} நகர்த்தப்பட்டது:",
"account.mute": "ஊமையான @{name}",
"account.mute_notifications": "அறிவிப்புகளை முடக்கு @{name}",
"account.muted": "முடக்கியது",
- "account.never_active": "Never",
- "account.posts": "Toots",
+ "account.never_active": "எப்போதுமில்லை",
+ "account.posts": "டூட்டுகள்",
"account.posts_with_replies": "Toots மற்றும் பதில்கள்",
- "account.report": "Report @{name}",
- "account.requested": "ஒப்புதலுக்காக காத்திருக்கிறது. கோரிக்கையை ரத்துசெய்ய கிளிக் செய்க",
- "account.share": "பங்கிடு @{name}'s மனித முகத்தின்",
+ "account.report": "@{name} -ஐப் புகாரளி",
+ "account.requested": "ஒப்புதலுக்காகக் காத்திருக்கிறது. பின்தொடரும் கோரிக்கையை நீக்க அழுத்தவும்",
+ "account.share": "@{name} உடைய விவரத்தை பகிர்",
"account.show_reblogs": "காட்டு boosts இருந்து @{name}",
- "account.unblock": "விடுவி @{name}",
- "account.unblock_domain": "காண்பி {domain}",
- "account.unendorse": "சுயவிவரத்தில் அம்சம் இல்லை",
- "account.unfollow": "பின்தொடராட்",
- "account.unmute": "தடுப்புநீக்கு @{name}",
- "account.unmute_notifications": "அறிவிப்புகளை அகற்றவும் @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
- "alert.unexpected.message": "எதிர் பாராத பிழை ஏற்பட்டு விட்டது.",
+ "account.unblock": "@{name} மீது தடை நீக்குக",
+ "account.unblock_domain": "{domain} ஐ காண்பி",
+ "account.unendorse": "சுயவிவரத்தில் இடம்பெற வேண்டாம்",
+ "account.unfollow": "பின்தொடர்வதை நிறுத்துக",
+ "account.unmute": "@{name} இன் மீது மௌனத் தடையை நீக்குக",
+ "account.unmute_notifications": "@{name} இலிருந்து அறிவிப்புகளின் மீது மௌனத் தடையை நீக்குக",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "{retry_time, time, medium} க்கு பிறகு மீண்டும் முயற்சிக்கவும்.",
+ "alert.rate_limited.title": "பயன்பாடு கட்டுப்படுத்தப்பட்டுள்ளது",
+ "alert.unexpected.message": "எதிர்பாராத பிழை ஏற்பட்டுவிட்டது.",
"alert.unexpected.title": "அச்சச்சோ!",
- "autosuggest_hashtag.per_week": "{count} per week",
- "boost_modal.combo": "நீங்கள் அழுத்தவும் {combo} அடுத்த முறை தவிர்க்கவும்",
- "bundle_column_error.body": "இந்த கூறுகளை ஏற்றும்போது ஏதோ தவறு ஏற்பட்டது.",
- "bundle_column_error.retry": "மீண்டும் முயற்சி செய்",
- "bundle_column_error.title": "Network error",
- "bundle_modal_error.close": "நெருக்கமாக",
- "bundle_modal_error.message": "இந்த கூறுகளை ஏற்றும்போது ஏதோ தவறு ஏற்பட்டது.",
+ "announcement.announcement": "அறிவிப்பு",
+ "autosuggest_hashtag.per_week": "ஒவ்வொரு வாரம் {count}",
+ "boost_modal.combo": "நீங்கள் இதை அடுத்தமுறை தவிர்க்க {combo} வை அழுத்தவும்",
+ "bundle_column_error.body": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.",
+ "bundle_column_error.retry": "மீண்டும் முயற்சிக்கவும்",
+ "bundle_column_error.title": "பிணையப் பிழை",
+ "bundle_modal_error.close": "மூடுக",
+ "bundle_modal_error.message": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.",
"bundle_modal_error.retry": "மீண்டும் முயற்சி செய்",
"column.blocks": "தடுக்கப்பட்ட பயனர்கள்",
- "column.community": "உள்ளூர் காலக்கெடு",
- "column.direct": "நேரடி செய்திகள்",
- "column.directory": "Browse profiles",
- "column.domain_blocks": "மறைந்த களங்கள்",
- "column.favourites": "விருப்பத்துக்குகந்த",
- "column.follow_requests": "கோரிக்கைகளை பின்பற்றவும்",
- "column.home": "Home",
- "column.lists": "குதிரை வீர்ர்கள்",
- "column.mutes": "முடக்கப்பட்ட பயனர்கள்",
- "column.notifications": "Notifications",
- "column.pins": "Pinned toot",
- "column.public": "கூட்டாட்சி காலக்கெடு",
- "column_back_button.label": "ஆதரி",
+ "column.bookmarks": "அடையாளக்குறிகள்",
+ "column.community": "சுய நிகழ்வு காலவரிசை",
+ "column.direct": "நேர் சேதிகள்",
+ "column.directory": "சுயவிவரங்களை உலாவு",
+ "column.domain_blocks": "மறைந்திருக்கும் திரளங்கள்",
+ "column.favourites": "பிடித்தவைகள்",
+ "column.follow_requests": "பின்தொடர அனுமதிகள்",
+ "column.home": "முகப்பு",
+ "column.lists": "பட்டியல்கள்",
+ "column.mutes": "மௌனத் தடை செய்யப்பட்ட பயனர்கள்",
+ "column.notifications": "அறிவிப்புகள்",
+ "column.pins": "பொருத்தப்பட்ட டூட்டுகள்",
+ "column.public": "ஆலமரத்தில் நிகழ்பவை",
+ "column_back_button.label": "பின்செல்",
"column_header.hide_settings": "அமைப்புகளை மறை",
- "column_header.moveLeft_settings": "நெடுவரிசையை இடதுபுறமாக நகர்த்தவும்",
- "column_header.moveRight_settings": "நெடுவரிசை வலது புறமாக நகர்த்து",
- "column_header.pin": "குண்டூசி",
+ "column_header.moveLeft_settings": "நெடுவரிசையை இடதுபுறமாக நகர்த்து",
+ "column_header.moveRight_settings": "நெடுவரிசையை வலதுபுறமாக நகர்த்து",
+ "column_header.pin": "பொருத்து",
"column_header.show_settings": "அமைப்புகளைக் காட்டு",
- "column_header.unpin": "பொருத்தப்படாத",
+ "column_header.unpin": "கழட்டு",
"column_subheading.settings": "அமைப்புகள்",
- "community.column_settings.media_only": "மீடியா மட்டுமே",
- "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
- "compose_form.direct_message_warning_learn_more": "மேலும் அறிக",
- "compose_form.hashtag_warning": "இந்த toot பட்டியலிடப்படாதது போல எந்த ஹேஸ்டேக்கின் கீழ் பட்டியலிடப்படாது. ஹேஸ்டேக் மூலம் பொது டோட்டல்கள் மட்டுமே தேட முடியும்.",
- "compose_form.lock_disclaimer": "உங்கள் கணக்கு அல்ல {locked}. உங்களுடைய பின்தொடர்பவர் மட்டும் இடுகைகளை யாராவது காணலாம்.",
- "compose_form.lock_disclaimer.lock": "தாழிடு",
- "compose_form.placeholder": "What is on your mind?",
- "compose_form.poll.add_option": "ஒரு விருப்பத்தைச் சேர்க்கவும்",
- "compose_form.poll.duration": "வாக்கெடுப்பு காலம்",
- "compose_form.poll.option_placeholder": "தேர்ந்தெடுப்ப {number}",
- "compose_form.poll.remove_option": "இந்த விருப்பத்தை அகற்றவும்",
- "compose_form.publish": "Toot",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "படங்கள் மட்டுமே",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "இந்த டூட் இதில் குறிப்பிடப்பட்டுள்ள பயனர்களுக்கு மட்டுமே அனுப்பப்படும்.",
+ "compose_form.direct_message_warning_learn_more": "மேலும் அறிய",
+ "compose_form.hashtag_warning": "இது ஒரு பட்டியலிடப்படாத டூட் என்பதால் எந்த ஹேஷ்டேகின் கீழும் வராது. ஹேஷ்டேகின் மூலம் பொதுவில் உள்ள டூட்டுகளை மட்டுமே தேட முடியும்.",
+ "compose_form.lock_disclaimer": "உங்கள் கணக்கு {locked} செய்யப்படவில்லை. உங்கள் பதிவுகளை யார் வேண்டுமானாலும் பின்தொடர்ந்து காணலாம்.",
+ "compose_form.lock_disclaimer.lock": "பூட்டப்பட்டது",
+ "compose_form.placeholder": "உங்கள் மனதில் என்ன இருக்கிறது?",
+ "compose_form.poll.add_option": "தேர்வை சேர்",
+ "compose_form.poll.duration": "கருத்துக்கணிப்பின் கால அளவு",
+ "compose_form.poll.option_placeholder": "தேர்வு எண் {number}",
+ "compose_form.poll.remove_option": "இந்தத் தேர்வை அகற்று",
+ "compose_form.poll.switch_to_multiple": "பல தேர்வுகளை அனுமதிக்குமாறு மாற்று",
+ "compose_form.poll.switch_to_single": "ஒரே ஒரு தேர்வை மட்டும் அனுமதிக்குமாறு மாற்று",
+ "compose_form.publish": "டூட்",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
- "compose_form.sensitive.marked": "ஊடகம் உணர்திறன் என குறிக்கப்பட்டுள்ளது",
- "compose_form.sensitive.unmarked": "ஊடகம் உணர்திறன் என குறிக்கப்படவில்லை",
- "compose_form.spoiler.marked": "எச்சரிக்கை பின்னால் உரை மறைக்கப்பட்டுள்ளது",
- "compose_form.spoiler.unmarked": "உரை மறைக்கப்படவில்லை",
- "compose_form.spoiler_placeholder": "இங்கே உங்கள் எச்சரிக்கையை எழுதுங்கள்",
- "confirmation_modal.cancel": "எதிராணை",
- "confirmations.block.block_and_report": "Block & Report",
- "confirmations.block.confirm": "Block",
- "confirmations.block.message": "நீங்கள் நிச்சயமாக தடைசெய்ய விரும்புகிறீர்களா {name}?",
- "confirmations.delete.confirm": "Delete",
- "confirmations.delete.message": "இந்த நிலையை நிச்சயமாக நீக்க விரும்புகிறீர்களா?",
- "confirmations.delete_list.confirm": "Delete",
- "confirmations.delete_list.message": "இந்த பட்டியலில் நிரந்தரமாக நீக்க விரும்புகிறீர்களா?",
- "confirmations.domain_block.confirm": "முழு டொமைனை மறை",
- "confirmations.domain_block.message": "நீங்கள் உண்மையில், நிச்சயமாக நீங்கள் முழு தடுக்க வேண்டும் நிச்சயமாக {domain}? பெரும்பாலான சந்தர்ப்பங்களில் ஒரு சில இலக்குகள் அல்லது மியூட்கள் போதுமானவை மற்றும் சிறந்தவை. எந்த பொது நேரத்திலும் அல்லது உங்கள் அறிவிப்புகளிலும் அந்தக் களத்திலிருந்து உள்ளடக்கத்தை நீங்கள் பார்க்க மாட்டீர்கள். அந்த களத்தில் இருந்து உங்கள் ஆதரவாளர்கள் அகற்றப்படுவார்கள்.",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
- "confirmations.mute.confirm": "ஊமையான",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
- "confirmations.mute.message": "நிச்சயமாக நீங்கள் முடக்க விரும்புகிறீர்களா {name}?",
- "confirmations.redraft.confirm": "நீக்கு & redraft",
- "confirmations.redraft.message": "நிச்சயமாக இந்த நிலையை நீக்கி, அதை மறுபடியும் உருவாக்க வேண்டுமா? பிடித்தவை மற்றும் ஊக்கங்கள் இழக்கப்படும், மற்றும் அசல் இடுகையில் பதில்கள் அனாதையான இருக்கும்.",
- "confirmations.reply.confirm": "பதில்",
- "confirmations.reply.message": "இப்போது பதில், தற்போது நீங்கள் உருவாக்கும் செய்தி மேலெழுதப்படும். நீங்கள் தொடர விரும்புகிறீர்களா?",
- "confirmations.unfollow.confirm": "பின்தொடராட்",
- "confirmations.unfollow.message": "நிச்சயமாக நீங்கள் பின்தொடர விரும்புகிறீர்களா {name}?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
- "embed.instructions": "கீழே உள்ள குறியீட்டை நகலெடுப்பதன் மூலம் உங்கள் இணையதளத்தில் இந்த நிலையை உட்பொதிக்கவும்.",
- "embed.preview": "இது போன்ற தோற்றத்தை இங்கு காணலாம்:",
- "emoji_button.activity": "நடவடிக்கை",
- "emoji_button.custom": "வழக்கம்",
- "emoji_button.flags": "கொடி",
+ "compose_form.sensitive.hide": "அனைவருக்கும் ஏற்றப் படம் இல்லை எனக் குறியிடு",
+ "compose_form.sensitive.marked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்பட்டுள்ளது",
+ "compose_form.sensitive.unmarked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்படவில்லை",
+ "compose_form.spoiler.marked": "எச்சரிக்கையின் பின்னால் பதிவு மறைக்கப்பட்டுள்ளது",
+ "compose_form.spoiler.unmarked": "பதிவு மறைக்கப்படவில்லை",
+ "compose_form.spoiler_placeholder": "உங்கள் எச்சரிக்கையை இங்கு எழுதவும்",
+ "confirmation_modal.cancel": "ரத்து",
+ "confirmations.block.block_and_report": "தடுத்துப் புகாரளி",
+ "confirmations.block.confirm": "தடு",
+ "confirmations.block.message": "{name}-ஐ நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா?",
+ "confirmations.delete.confirm": "நீக்கு",
+ "confirmations.delete.message": "இப்பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?",
+ "confirmations.delete_list.confirm": "நீக்கு",
+ "confirmations.delete_list.message": "இப்பட்டியலை நிரந்தரமாக நீக்க நிச்சயம் விரும்புகிறீர்களா?",
+ "confirmations.domain_block.confirm": "முழு களத்தையும் மறை",
+ "confirmations.domain_block.message": "நீங்கள் முழு {domain} களத்தையும் நிச்சயமாக, நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா? பெரும்பாலும் சில குறிப்பிட்ட பயனர்களைத் தடுப்பதே போதுமானது. முழு களத்தையும் தடுத்தால், அதிலிருந்து வரும் எந்தப் பதிவையும் உங்களால் காண முடியாது, மேலும் அப்பதிவுகள் குறித்த அறிவிப்புகளும் உங்களுக்கு வராது. அந்தக் களத்தில் இருக்கும் பின்தொடர்பவர்கள் உங்கள் பக்கத்திலிருந்து நீக்கப்படுவார்கள்.",
+ "confirmations.logout.confirm": "வெளியேறு",
+ "confirmations.logout.message": "நிச்சயமாக நீங்கள் வெளியேற விரும்புகிறீர்களா?",
+ "confirmations.mute.confirm": "அமைதியாக்கு",
+ "confirmations.mute.explanation": "இந்தத் தேர்வு அவர்களின் பதிவுகளையும், அவர்களைக் குறிப்பிடும் பதிவுகளையும் மறைத்துவிடும். ஆனால், அவர்களால் உங்களைப் பின்தொடர்ந்து உங்கள் பதிவுகளைக் காண முடியும்.",
+ "confirmations.mute.message": "{name}-ஐ நிச்சயமாக நீங்கள் அமைதியாக்க விரும்புகிறீர்களா?",
+ "confirmations.redraft.confirm": "பதிவை நீக்கி மறுவரைவு செய்",
+ "confirmations.redraft.message": "நிச்சயமாக நீங்கள் இந்தப் பதிவை நீக்கி மறுவரைவு செய்ய விரும்புகிறீர்களா? விருப்பங்களும் பகிர்வுகளும் அழிந்துபோகும், மேலும் மூலப் பதிவிற்கு வந்த மறுமொழிகள் தனித்துவிடப்படும்.",
+ "confirmations.reply.confirm": "மறுமொழி",
+ "confirmations.reply.message": "ஏற்கனவே ஒரு பதிவு எழுதப்பட்டுக்கொண்டிருக்கிறது. இப்பொழுது பதில் எழுத முனைந்தால் அது அழிக்கப்படும். பரவாயில்லையா?",
+ "confirmations.unfollow.confirm": "விலகு",
+ "confirmations.unfollow.message": "{name}-ஐப் பின்தொடர்வதை நிச்சயமாக நீங்கள் நிறுத்த விரும்புகிறீர்களா?",
+ "conversation.delete": "உரையாடலை அழி",
+ "conversation.mark_as_read": "படிக்கபட்டதாகக் குறி",
+ "conversation.open": "உரையாடலைக் காட்டு",
+ "conversation.with": "{names} உடன்",
+ "directory.federated": "ஆலமரத்தின் அறியப்பட்டப் பகுதியிலிருந்து",
+ "directory.local": "{domain} களத்திலிருந்து மட்டும்",
+ "directory.new_arrivals": "புதிய வரவு",
+ "directory.recently_active": "சற்றுமுன் செயல்பாட்டில் இருந்தவர்கள்",
+ "embed.instructions": "இந்தப் பதிவை உங்கள் வலைதளத்தில் பொதிக்கக் கீழே உள்ள வரிகளை காப்பி செய்யவும்.",
+ "embed.preview": "பார்க்க இப்படி இருக்கும்:",
+ "emoji_button.activity": "செயல்பாடு",
+ "emoji_button.custom": "தனிப்பயன்",
+ "emoji_button.flags": "கொடிகள்",
"emoji_button.food": "உணவு மற்றும் பானம்",
- "emoji_button.label": "Insert emoji",
+ "emoji_button.label": "எமோஜியை உள்ளிடு",
"emoji_button.nature": "இயற்கை",
- "emoji_button.not_found": "எமோஜோஸ் இல்லை! (╯°□°)╯︵ ┻━┻",
- "emoji_button.objects": "மறுப்ப கூறு",
- "emoji_button.people": "People",
- "emoji_button.recent": "அடிக்கடி பயன்படுத்தப்படும்",
- "emoji_button.search": "தேடல்...",
+ "emoji_button.not_found": "வேண்டாம் எமோஜோஸ்! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "பொருட்கள்",
+ "emoji_button.people": "மக்கள்",
+ "emoji_button.recent": "அடிக்கடி பயன்படுத்தப்படுபவை",
+ "emoji_button.search": "தேடு...",
"emoji_button.search_results": "தேடல் முடிவுகள்",
- "emoji_button.symbols": "Symbols",
+ "emoji_button.symbols": "குறியீடுகள்",
"emoji_button.travel": "சுற்றுலா மற்றும் இடங்கள்",
"empty_column.account_timeline": "இல்லை toots இங்கே!",
"empty_column.account_unavailable": "சுயவிவரம் கிடைக்கவில்லை",
"empty_column.blocks": "இதுவரை எந்த பயனர்களும் தடுக்கவில்லை.",
+ "empty_column.bookmarked_statuses": "உங்களிடம் அடையாளக்குறியிட்ட டூட்டுகள் எவையும் இல்லை. அடையாளக்குறியிட்ட பிறகு அவை இங்கே காட்டப்படும்.",
"empty_column.community": "உள்ளூர் காலக்கெடு காலியாக உள்ளது. பந்தை உருட்டிக்கொள்வதற்கு பகிரங்கமாக ஒன்றை எழுதுங்கள்!",
"empty_column.direct": "உங்களிடம் நேரடியான செய்திகள் எதுவும் இல்லை. நீங்கள் ஒன்றை அனுப்பி அல்லது பெறும் போது, அது இங்கே காண்பிக்கும்.",
"empty_column.domain_blocks": "இன்னும் மறைந்த களங்கள் இல்லை.",
@@ -152,15 +167,16 @@
"empty_column.mutes": "நீங்கள் இதுவரை எந்த பயனர்களையும் முடக்கியிருக்கவில்லை.",
"empty_column.notifications": "உங்களிடம் எந்த அறிவிப்புகளும் இல்லை. உரையாடலைத் தொடங்க பிறருடன் தொடர்புகொள்ளவும்.",
"empty_column.public": "இங்கே எதுவும் இல்லை! பகிரங்கமாக ஒன்றை எழுதவும் அல்லது மற்ற நிகழ்வுகளிலிருந்து பயனர்களை அதை நிரப்புவதற்கு கைமுறையாக பின்பற்றவும்",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "மென்பொருள் பழுதுனாலோ அல்லது உங்கள் இணை உலாவியின் பொருந்தாதன்மையினாலோ இந்தப் பக்கத்தை சரியாகக் காண்பிக்க முடியவில்லை.",
+ "error.unexpected_crash.next_steps": "பக்கத்தை புதுப்பித்துப் பார்க்கவும். வேலை செய்யவில்லையெனில், வேறு ஒரு உலாவியில் இருந்தோ அல்லது உங்கள் கருவிக்கு பொருத்தமான வேறு செயலியில் இருந்தோ மச்டோடனைப் பயன்படுத்தவும்.",
+ "errors.unexpected_crash.copy_stacktrace": "பழுசெய்தியை பிடிப்புப் பலகைக்கு நகல் எடு",
+ "errors.unexpected_crash.report_issue": "புகாரளி",
"follow_request.authorize": "அதிகாரமளி",
"follow_request.reject": "விலக்கு",
+ "follow_requests.unlocked_explanation": "உங்கள் கணக்கு பூட்டப்படவில்லை என்றாலும், இந்தக் கணக்குகளிலிருந்து உங்களைப் பின்தொடர விரும்பும் கோரிக்கைகளை நீங்கள் பரீசீலிப்பது நலம் என்று {domain} ஊழியர் எண்ணுகிறார்.",
"getting_started.developers": "உருவாக்குநர்கள்",
"getting_started.directory": "சுயவிவர அடைவு",
- "getting_started.documentation": "Documentation",
+ "getting_started.documentation": "ஆவணங்கள்",
"getting_started.heading": "தொடங்குதல்",
"getting_started.invite": "நபர்களை அழைக்கவும்",
"getting_started.open_source_notice": "Mastodon திறந்த மூல மென்பொருள். GitHub இல் நீங்கள் பங்களிக்கவோ அல்லது புகார் அளிக்கவோ முடியும் {github}.",
@@ -178,15 +194,17 @@
"home.column_settings.basic": "அடிப்படையான",
"home.column_settings.show_reblogs": "காட்டு boosts",
"home.column_settings.show_replies": "பதில்களைக் காண்பி",
+ "home.hide_announcements": "அறிவிப்புகளை மறை",
+ "home.show_announcements": "அறிவிப்புகளைக் காட்டு",
"intervals.full.days": "{number, plural, one {# day} மற்ற {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} மற்ற {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} மற்ற {# minutes}}",
"introduction.federation.action": "அடுத்த",
- "introduction.federation.federated.headline": "Federated",
+ "introduction.federation.federated.headline": "கூட்டமைந்த",
"introduction.federation.federated.text": "கூட்டமைப்பின் பிற சேவையகங்களிலிருந்து பொது பதிவுகள் கூட்டப்பட்ட காலக்கெடுவில் தோன்றும்.",
- "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.headline": "முகப்பு",
"introduction.federation.home.text": "நீங்கள் பின்பற்றும் நபர்களின் இடுகைகள் உங்கள் வீட்டு ஊட்டத்தில் தோன்றும். நீங்கள் எந்த சர்வரில் யாரையும் பின்பற்ற முடியும்!",
- "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.headline": "அருகாமை",
"introduction.federation.local.text": "உள்ளூர் சேவையகத்தில் தோன்றும் அதே சர்வரில் உள்ளவர்களின் பொது இடுகைகள்.",
"introduction.interactions.action": "பயிற்சி முடிக்க!",
"introduction.interactions.favourite.headline": "விருப்பத்துக்குகந்த",
@@ -198,15 +216,15 @@
"introduction.welcome.action": "போகலாம்!",
"introduction.welcome.headline": "முதல் படிகள்",
"introduction.welcome.text": "கூட்டாளிக்கு வருக! ஒரு சில நிமிடங்களில், பலவிதமான சேவையகங்களில் செய்திகளை உரையாட மற்றும் உங்கள் நண்பர்களிடம் பேச முடியும். ஆனால் இந்த சர்வர், {domain}, சிறப்பு - இது உங்கள் சுயவிவரத்தை வழங்குகிறது, எனவே அதன் பெயரை நினைவில் கொள்ளுங்கள்.",
- "keyboard_shortcuts.back": "மீண்டும் செல்லவும்",
+ "keyboard_shortcuts.back": "பின் செல்வதற்கு",
"keyboard_shortcuts.blocked": "தடுக்கப்பட்ட பயனர்களின் பட்டியலைத் திறக்க",
"keyboard_shortcuts.boost": "அதிகரிக்கும்",
"keyboard_shortcuts.column": "நெடுவரிசைகளில் ஒன்றில் நிலைக்கு கவனம் செலுத்த வேண்டும்",
"keyboard_shortcuts.compose": "தொகு உரைப்பகுதியை கவனத்தில் கொள்ளவும்",
- "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.description": "விவரம்",
"keyboard_shortcuts.direct": "நேரடி செய்திகள் பத்தி திறக்க",
"keyboard_shortcuts.down": "பட்டியலில் கீழே நகர்த்த",
- "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.enter": "பதிவைத்திறக்க",
"keyboard_shortcuts.favourite": "பிடித்தது",
"keyboard_shortcuts.favourites": "பிடித்தவை பட்டியலை திறக்க",
"keyboard_shortcuts.federated": "ஒருங்கிணைந்த நேரத்தை திறக்க",
@@ -219,31 +237,33 @@
"keyboard_shortcuts.muted": "முடக்கப்பட்ட பயனர்களின் பட்டியலைத் திறக்க",
"keyboard_shortcuts.my_profile": "உங்கள் சுயவிவரத்தை திறக்க",
"keyboard_shortcuts.notifications": "அறிவிப்பு நெடுவரிசையைத் திறக்க",
+ "keyboard_shortcuts.open_media": "படத்தைத் திறக்க",
"keyboard_shortcuts.pinned": "திறக்க பொருத்தப்பட்டன toots பட்டியல்",
"keyboard_shortcuts.profile": "ஆசிரியரின் சுயவிவரத்தைத் திறக்க",
"keyboard_shortcuts.reply": "பதிலளிக்க",
"keyboard_shortcuts.requests": "கோரிக்கைகள் பட்டியலைத் திறக்க",
"keyboard_shortcuts.search": "தேடல் கவனம் செலுத்த",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "'தொடங்குவதற்கு' நெடுவரிசை திறக்க",
"keyboard_shortcuts.toggle_hidden": "CW க்கு பின்னால் உரையை மறைக்க / மறைக்க",
- "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toggle_sensitivity": "படிமங்களைக் காட்ட/மறைக்க",
"keyboard_shortcuts.toot": "தொடங்க ஒரு புதிய toot",
"keyboard_shortcuts.unfocus": "உரை பகுதியை / தேடலை கவனம் செலுத்த வேண்டும்",
"keyboard_shortcuts.up": "பட்டியலில் மேலே செல்ல",
"lightbox.close": "நெருக்கமாக",
"lightbox.next": "அடுத்த",
"lightbox.previous": "சென்ற",
- "lightbox.view_context": "View context",
+ "lightbox.view_context": "சூழலைக் பார்",
"lists.account.add": "பட்டியலில் சேர்",
"lists.account.remove": "பட்டியலில் இருந்து அகற்று",
- "lists.delete": "Delete list",
+ "lists.delete": "பட்டியலை நீக்கு",
"lists.edit": "பட்டியலை திருத்து",
"lists.edit.submit": "தலைப்பு மாற்றவும்",
"lists.new.create": "பட்டியலில் சேர்",
"lists.new.title_placeholder": "புதிய பட்டியல் தலைப்பு",
"lists.search": "நீங்கள் பின்தொடரும் நபர்கள் மத்தியில் தேடுதல்",
"lists.subheading": "உங்கள் பட்டியல்கள்",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "load_pending": "{count, plural,one {# புதியது}other {# புதியவை}}",
"loading_indicator.label": "ஏற்றுதல்...",
"media_gallery.toggle_visible": "நிலைமாற்று தெரியும்",
"missing_indicator.label": "கிடைக்கவில்லை",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "இந்த பயனரின் அறிவிப்புகளை மறைக்கவா?",
"navigation_bar.apps": "மொபைல் பயன்பாடுகள்",
"navigation_bar.blocks": "தடுக்கப்பட்ட பயனர்கள்",
+ "navigation_bar.bookmarks": "அடையாளக்குறிகள்",
"navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு",
"navigation_bar.compose": "புதியவற்றை எழுதுக toot",
"navigation_bar.direct": "நேரடி செய்திகள்",
@@ -260,20 +281,22 @@
"navigation_bar.favourites": "விருப்பத்துக்குகந்த",
"navigation_bar.filters": "முடக்கப்பட்ட வார்த்தைகள்",
"navigation_bar.follow_requests": "கோரிக்கைகளை பின்பற்றவும்",
- "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.follows_and_followers": "பின்பற்றல்கள் மற்றும் பின்பற்றுபவர்கள்",
"navigation_bar.info": "இந்த நிகழ்வு பற்றி",
"navigation_bar.keyboard_shortcuts": "சுருக்குவிசைகள்",
"navigation_bar.lists": "குதிரை வீர்ர்கள்",
"navigation_bar.logout": "விடு பதிகை",
"navigation_bar.mutes": "முடக்கப்பட்ட பயனர்கள்",
- "navigation_bar.personal": "Personal",
+ "navigation_bar.personal": "தனிப்பட்டவை",
"navigation_bar.pins": "பொருத்தப்பட்டன toots",
"navigation_bar.preferences": "விருப்பங்கள்",
"navigation_bar.public_timeline": "கூட்டாட்சி காலக்கெடு",
"navigation_bar.security": "பத்திரம்",
"notification.favourite": "{name} ஆர்வம் கொண்டவர், உங்கள் நிலை",
- "notification.follow": "{name} நீங்கள் தொடர்ந்து வந்தீர்கள்",
+ "notification.follow": "{name} உங்களைப் பின்தொடர்கிறார்",
+ "notification.follow_request": "{name} உங்களைப் பின்தொடரக் கோருகிறார்",
"notification.mention": "{name} நீங்கள் குறிப்பிட்டுள்ளீர்கள்",
+ "notification.own_poll": "கருத்துக்கணிப்பு நிறைவடைந்தது",
"notification.poll": "நீங்கள் வாக்களித்த வாக்கெடுப்பு முடிவடைந்தது",
"notification.reblog": "{name} உங்கள் நிலை அதிகரித்தது",
"notifications.clear": "அறிவிப்புகளை அழிக்கவும்",
@@ -284,9 +307,10 @@
"notifications.column_settings.filter_bar.category": "விரைவு வடிகட்டி பட்டை",
"notifications.column_settings.filter_bar.show": "காட்டு",
"notifications.column_settings.follow": "புதிய பின்பற்றுபவர்கள்:",
+ "notifications.column_settings.follow_request": "புதிய பின்தொடர் கோரிக்கைகள்:",
"notifications.column_settings.mention": "குறிப்பிடுகிறது:",
"notifications.column_settings.poll": "கருத்துக்கணிப்பு முடிவுகள்:",
- "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.push": "தள் அறிவிப்புகள்",
"notifications.column_settings.reblog": "மதிப்பை உயர்த்து:",
"notifications.column_settings.show": "பத்தியில் காண்பி",
"notifications.column_settings.sound": "ஒலி விளையாட",
@@ -296,13 +320,13 @@
"notifications.filter.follows": "பின்பற்று",
"notifications.filter.mentions": "குறிப்பிடுகிறார்",
"notifications.filter.polls": "கருத்துக்கணிப்பு முடிவுகள்",
- "notifications.group": "{count} notifications",
+ "notifications.group": "{count} அறிவிப்புகள்",
"poll.closed": "மூடிய",
"poll.refresh": "பத்துயிர்ப்ப?ட்டு",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, one {# நபர்} other {# நபர்கள்}}",
"poll.total_votes": "{count, plural, one {# vote} மற்ற {# votes}}",
"poll.vote": "வாக்களி",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "உங்கள் தேர்வு",
"poll_button.add_poll": "வாக்கெடுப்பைச் சேர்க்கவும்",
"poll_button.remove_poll": "வாக்கெடுப்பை அகற்று",
"privacy.change": "நிலை தனியுரிமை",
@@ -311,43 +335,45 @@
"privacy.private.long": "பின்தொடர்பவர்களுக்கு மட்டுமே இடுகை",
"privacy.private.short": "பின்பற்றுபவர்கள் மட்டும்",
"privacy.public.long": "பொது நேரங்களுக்கான இடுகை",
- "privacy.public.short": "Public",
+ "privacy.public.short": "பொது",
"privacy.unlisted.long": "Do not show in public timelines",
"privacy.unlisted.short": "பட்டியலிடப்படாத",
- "refresh": "Refresh",
+ "refresh": "புதுப்பி",
"regeneration_indicator.label": "சுமையேற்றம்…",
"regeneration_indicator.sublabel": "உங்கள் வீட்டு ஊட்டம் தயார் செய்யப்படுகிறது!",
- "relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
+ "relative_time.days": "{number}நா",
+ "relative_time.hours": "{number}ம",
"relative_time.just_now": "இப்பொழுது",
- "relative_time.minutes": "{number}m",
- "relative_time.seconds": "{number}s",
+ "relative_time.minutes": "{number}நி",
+ "relative_time.seconds": "{number}வி",
+ "relative_time.today": "இன்று",
"reply_indicator.cancel": "எதிராணை",
"report.forward": "முன்னோக்கி {target}",
"report.forward_hint": "கணக்கு மற்றொரு சேவையகத்திலிருந்து வருகிறது. அறிக்கையின் அநாமதேய பிரதி ஒன்றை அனுப்பவும்.?",
"report.hint": "அறிக்கை உங்கள் மாதிரியாக மாற்றியமைக்கப்படும். கீழே உள்ள கணக்கை நீங்கள் ஏன் புகாரளிக்கிறீர்கள் என்பதற்கான விளக்கத்தை வழங்கலாம்:",
"report.placeholder": "கூடுதல் கருத்துரைகள்",
- "report.submit": "Submit",
+ "report.submit": "சமர்ப்பி",
"report.target": "Report {target}",
"search.placeholder": "தேடு",
"search_popout.search_format": "மேம்பட்ட தேடல் வடிவம்",
"search_popout.tips.full_text": "எளிமையான உரை நீங்கள் எழுதப்பட்ட, புகழ், அதிகரித்தது, அல்லது குறிப்பிட்டுள்ள, அதே போல் பயனர் பெயர்கள், காட்சி பெயர்கள், மற்றும் ஹேஸ்டேகைகளை கொண்டுள்ளது என்று நிலைகளை கொடுக்கிறது.",
"search_popout.tips.hashtag": "ஹேஸ்டேக்",
- "search_popout.tips.status": "status",
+ "search_popout.tips.status": "நிலைமை",
"search_popout.tips.text": "எளிய உரை காட்சி பெயர்கள், பயனர்பெயர்கள் மற்றும் ஹாஷ்டேட்களுடன் பொருந்துகிறது",
- "search_popout.tips.user": "user",
- "search_results.accounts": "People",
+ "search_popout.tips.user": "பயனர்",
+ "search_results.accounts": "மக்கள்",
"search_results.hashtags": "ஹாஷ்டேக்குகளைச்",
- "search_results.statuses": "Toots",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.statuses": "டூட்டுகள்",
+ "search_results.statuses_fts_disabled": "டூட்டுகளின் வார்த்தைகளைக்கொண்டு தேடுவது இந்த மச்டோடன் வழங்கியில் இயல்விக்கப்படவில்லை.",
"search_results.total": "{count, number} {count, plural, one {result} மற்ற {results}}",
"status.admin_account": "மிதமான இடைமுகத்தை திறக்க @{name}",
"status.admin_status": "மிதமான இடைமுகத்தில் இந்த நிலையை திறக்கவும்",
- "status.block": "Block @{name}",
+ "status.block": "@{name} -ஐத் தடு",
+ "status.bookmark": "அடையாளம் குறி",
"status.cancel_reblog_private": "இல்லை பூஸ்ட்",
"status.cannot_reblog": "இந்த இடுகை அதிகரிக்க முடியாது",
"status.copy": "நிலைக்கு இணைப்பை நகலெடு",
- "status.delete": "Delete",
+ "status.delete": "நீக்கு",
"status.detailed_status": "விரிவான உரையாடல் காட்சி",
"status.direct": "நேரடி செய்தி @{name}",
"status.embed": "கிடத்து",
@@ -368,9 +394,10 @@
"status.reblogged_by": "{name} மதிப்பை உயர்த்து",
"status.reblogs.empty": "இதுவரை யாரும் இந்த மோதலை அதிகரிக்கவில்லை. யாராவது செய்தால், அவர்கள் இங்கே காண்பார்கள்.",
"status.redraft": "நீக்கு மற்றும் மீண்டும் வரைவு",
+ "status.remove_bookmark": "அடையாளம் நீக்கு",
"status.reply": "பதில்",
"status.replyAll": "நூலுக்கு பதிலளிக்கவும்",
- "status.report": "Report @{name}",
+ "status.report": "@{name} மீது புகாரளி",
"status.sensitive_warning": "உணர்திறன் உள்ளடக்கம்",
"status.share": "பங்கிடு",
"status.show_less": "குறைவாகக் காண்பி",
@@ -378,46 +405,53 @@
"status.show_more": "மேலும் காட்ட",
"status.show_more_all": "அனைவருக்கும் மேலும் காட்டு",
"status.show_thread": "நூல் காட்டு",
- "status.uncached_media_warning": "Not available",
+ "status.uncached_media_warning": "கிடைக்கவில்லை",
"status.unmute_conversation": "ஊமையாக உரையாடல் இல்லை",
"status.unpin": "சுயவிவரத்திலிருந்து நீக்கவும்",
"suggestions.dismiss": "பரிந்துரை விலக்க",
"suggestions.header": "நீங்கள் ஆர்வமாக இருக்கலாம் …",
- "tabs_bar.federated_timeline": "Federated",
- "tabs_bar.home": "Home",
- "tabs_bar.local_timeline": "Local",
- "tabs_bar.notifications": "Notifications",
+ "tabs_bar.federated_timeline": "கூட்டமைந்த",
+ "tabs_bar.home": "முகப்பு",
+ "tabs_bar.local_timeline": "உள்ளூர்",
+ "tabs_bar.notifications": "அறிவிப்புகள்",
"tabs_bar.search": "தேடு",
"time_remaining.days": "{number, plural, one {# day} மற்ற {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} மற்ற {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} மற்ற {# minutes}} left",
"time_remaining.moments": "தருணங்கள் மீதமுள்ளன",
"time_remaining.seconds": "{number, plural, one {# second} மற்ற {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} மற்ற {people}} உரையாடு",
- "trends.trending_now": "Trending now",
+ "trends.trending_now": "இப்போது செல்திசையில் இருப்பவை",
"ui.beforeunload": "நீங்கள் வெளியே சென்றால் உங்கள் வரைவு இழக்கப்படும் மஸ்தோடோன்.",
"upload_area.title": "பதிவேற்ற & இழுக்கவும்",
"upload_button.label": "மீடியாவைச் சேர்க்கவும் (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "கோப்பு பதிவேற்ற வரம்பு மீறப்பட்டது.",
"upload_error.poll": "கோப்பு பதிவேற்றம் அனுமதிக்கப்படவில்லை.",
+ "upload_form.audio_description": "செவித்திறன் குறைபாடு உள்ளவர்களுக்காக விளக்குக",
"upload_form.description": "பார்வையற்ற விவரிக்கவும்",
- "upload_form.edit": "Edit",
- "upload_form.undo": "Delete",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_form.edit": "தொகு",
+ "upload_form.undo": "நீக்கு",
+ "upload_form.video_description": "செவித்திறன் மற்றும் பார்வைக் குறைபாடு உள்ளவர்களுக்காக விளக்குக",
+ "upload_modal.analyzing_picture": "படம் ஆராயப்படுகிறது…",
+ "upload_modal.apply": "உபயோகி",
+ "upload_modal.description_placeholder": "பொருள் விளக்கம்",
+ "upload_modal.detect_text": "படத்தில் இருக்கும் எழுத்தை கண்டறி",
+ "upload_modal.edit_media": "படத்தைத் தொகு",
+ "upload_modal.hint": "எல்லா வில்லைப்பட்த்திலும் தெரியவேண்டிய, படத்தின் முக்கிய குவியப்புள்ளிக்கு, வட்டத்தை சொடுக்கி இழுத்துச்செல்லவும்.",
+ "upload_modal.preview_label": "முன்னோட்டம் ({ratio})",
"upload_progress.label": "ஏற்றுகிறது ...",
"video.close": "வீடியோவை மூடு",
+ "video.download": "கோப்பைப் பதிவிறக்கவும்",
"video.exit_fullscreen": "முழு திரையில் இருந்து வெளியேறவும்",
"video.expand": "வீடியோவை விரிவாக்கு",
- "video.fullscreen": "Full screen",
+ "video.fullscreen": "முழுத்திரை",
"video.hide": "வீடியோவை மறை",
"video.mute": "ஒலி முடக்கவும்",
- "video.pause": "Pause",
+ "video.pause": "இடைநிறுத்து",
"video.play": "விளையாடு",
"video.unmute": "ஒலி மெளனமாக இல்லை"
}
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
new file mode 100644
index 000000000..1476d0a54
--- /dev/null
+++ b/app/javascript/mastodon/locales/tai.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.badges.bot": "Bot",
+ "account.badges.group": "Group",
+ "account.block": "Block @{name}",
+ "account.block_domain": "Block domain {domain}",
+ "account.blocked": "Blocked",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "Cancel follow request",
+ "account.direct": "Direct message @{name}",
+ "account.domain_blocked": "Domain blocked",
+ "account.edit_profile": "Edit profile",
+ "account.endorse": "Feature on profile",
+ "account.follow": "Follow",
+ "account.followers": "Followers",
+ "account.followers.empty": "No one follows this user yet.",
+ "account.follows": "Follows",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows_you": "Follows you",
+ "account.hide_reblogs": "Hide boosts from @{name}",
+ "account.last_status": "Last active",
+ "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.media": "Media",
+ "account.mention": "Mention @{name}",
+ "account.moved_to": "{name} has moved to:",
+ "account.mute": "Mute @{name}",
+ "account.mute_notifications": "Mute notifications from @{name}",
+ "account.muted": "Muted",
+ "account.never_active": "Never",
+ "account.posts": "Toots",
+ "account.posts_with_replies": "Toots and replies",
+ "account.report": "Report @{name}",
+ "account.requested": "Awaiting approval",
+ "account.share": "Share @{name}'s profile",
+ "account.show_reblogs": "Show boosts from @{name}",
+ "account.unblock": "Unblock @{name}",
+ "account.unblock_domain": "Unblock domain {domain}",
+ "account.unendorse": "Don't feature on profile",
+ "account.unfollow": "Unfollow",
+ "account.unmute": "Unmute @{name}",
+ "account.unmute_notifications": "Unmute notifications from @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Rate limited",
+ "alert.unexpected.message": "An unexpected error occurred.",
+ "alert.unexpected.title": "Oops!",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "{count} per week",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "bundle_column_error.body": "Something went wrong while loading this component.",
+ "bundle_column_error.retry": "Try again",
+ "bundle_column_error.title": "Network error",
+ "bundle_modal_error.close": "Close",
+ "bundle_modal_error.message": "Something went wrong while loading this component.",
+ "bundle_modal_error.retry": "Try again",
+ "column.blocks": "Blocked users",
+ "column.bookmarks": "Bookmarks",
+ "column.community": "Local timeline",
+ "column.direct": "Direct messages",
+ "column.directory": "Browse profiles",
+ "column.domain_blocks": "Blocked domains",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Home",
+ "column.lists": "Lists",
+ "column.mutes": "Muted users",
+ "column.notifications": "Notifications",
+ "column.pins": "Pinned toot",
+ "column.public": "Federated timeline",
+ "column_back_button.label": "Back",
+ "column_header.hide_settings": "Hide settings",
+ "column_header.moveLeft_settings": "Move column to the left",
+ "column_header.moveRight_settings": "Move column to the right",
+ "column_header.pin": "Pin",
+ "column_header.show_settings": "Show settings",
+ "column_header.unpin": "Unpin",
+ "column_subheading.settings": "Settings",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "Media only",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+ "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "What is on your mind?",
+ "compose_form.poll.add_option": "Add a choice",
+ "compose_form.poll.duration": "Poll duration",
+ "compose_form.poll.option_placeholder": "Choice {number}",
+ "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "Toot",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.marked": "Media is marked as sensitive",
+ "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.spoiler.marked": "Text is hidden behind warning",
+ "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler_placeholder": "Write your warning here",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.logout.confirm": "Log out",
+ "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+ "confirmations.reply.confirm": "Reply",
+ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.unfollow.confirm": "Unfollow",
+ "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "conversation.delete": "Delete conversation",
+ "conversation.mark_as_read": "Mark as read",
+ "conversation.open": "View conversation",
+ "conversation.with": "With {names}",
+ "directory.federated": "From known fediverse",
+ "directory.local": "From {domain} only",
+ "directory.new_arrivals": "New arrivals",
+ "directory.recently_active": "Recently active",
+ "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.preview": "Here is what it will look like:",
+ "emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
+ "emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
+ "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no blocked domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
+ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
+ "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "errors.unexpected_crash.report_issue": "Report issue",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "Developers",
+ "getting_started.directory": "Profile directory",
+ "getting_started.documentation": "Documentation",
+ "getting_started.heading": "Getting started",
+ "getting_started.invite": "Invite people",
+ "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+ "getting_started.security": "Security",
+ "getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.select.no_options_message": "No suggestions found",
+ "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
+ "intervals.full.days": "{number, plural, one {# day} other {# days}}",
+ "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "introduction.federation.action": "Next",
+ "introduction.federation.federated.headline": "Federated",
+ "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+ "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+ "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "introduction.interactions.action": "Finish toot-orial!",
+ "introduction.interactions.favourite.headline": "Favourite",
+ "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.reply.headline": "Reply",
+ "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+ "introduction.welcome.action": "Let's go!",
+ "introduction.welcome.headline": "First steps",
+ "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "to move down in the list",
+ "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "to move up in the list",
+ "lightbox.close": "Close",
+ "lightbox.next": "Next",
+ "lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "Add to list",
+ "lists.account.remove": "Remove from list",
+ "lists.delete": "Delete list",
+ "lists.edit": "Edit list",
+ "lists.edit.submit": "Change title",
+ "lists.new.create": "Add list",
+ "lists.new.title_placeholder": "New list title",
+ "lists.search": "Search among people you follow",
+ "lists.subheading": "Your lists",
+ "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "loading_indicator.label": "Loading...",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
+ "missing_indicator.label": "Not found",
+ "missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Direct messages",
+ "navigation_bar.discover": "Discover",
+ "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.edit_profile": "Edit profile",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.filters": "Muted words",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.info": "About this server",
+ "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "navigation_bar.lists": "Lists",
+ "navigation_bar.logout": "Logout",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.preferences": "Preferences",
+ "navigation_bar.public_timeline": "Federated timeline",
+ "navigation_bar.security": "Security",
+ "notification.favourite": "{name} favourited your status",
+ "notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
+ "notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
+ "notification.poll": "A poll you have voted in has ended",
+ "notification.reblog": "{name} boosted your status",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.filter_bar.advanced": "Display all categories",
+ "notifications.column_settings.filter_bar.category": "Quick filter bar",
+ "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.filter.all": "All",
+ "notifications.filter.boosts": "Boosts",
+ "notifications.filter.favourites": "Favourites",
+ "notifications.filter.follows": "Follows",
+ "notifications.filter.mentions": "Mentions",
+ "notifications.filter.polls": "Poll results",
+ "notifications.group": "{count} notifications",
+ "poll.closed": "Closed",
+ "poll.refresh": "Refresh",
+ "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.vote": "Vote",
+ "poll.voted": "You voted for this answer",
+ "poll_button.add_poll": "Add a poll",
+ "poll_button.remove_poll": "Remove poll",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Visible for mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Visible for followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Visible for all, shown in public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Visible for all, but not in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "refresh": "Refresh",
+ "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "now",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
+ "reply_indicator.cancel": "Cancel",
+ "report.forward": "Forward to {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Report {target}",
+ "search.placeholder": "Search",
+ "search_popout.search_format": "Advanced search format",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "user",
+ "search_results.accounts": "People",
+ "search_results.hashtags": "Hashtags",
+ "search_results.statuses": "Toots",
+ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.admin_account": "Open moderation interface for @{name}",
+ "status.admin_status": "Open this status in the moderation interface",
+ "status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
+ "status.cancel_reblog_private": "Unboost",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.copy": "Copy link to status",
+ "status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Direct message @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Favourite",
+ "status.filtered": "Filtered",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mention @{name}",
+ "status.more": "More",
+ "status.mute": "Mute @{name}",
+ "status.mute_conversation": "Mute conversation",
+ "status.open": "Expand this status",
+ "status.pin": "Pin on profile",
+ "status.pinned": "Pinned toot",
+ "status.read_more": "Read more",
+ "status.reblog": "Boost",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
+ "status.reply": "Reply",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_warning": "Sensitive content",
+ "status.share": "Share",
+ "status.show_less": "Show less",
+ "status.show_less_all": "Show less for all",
+ "status.show_more": "Show more",
+ "status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
+ "status.uncached_media_warning": "Not available",
+ "status.unmute_conversation": "Unmute conversation",
+ "status.unpin": "Unpin from profile",
+ "suggestions.dismiss": "Dismiss suggestion",
+ "suggestions.header": "You might be interested in…",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Home",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "tabs_bar.search": "Search",
+ "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+ "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+ "time_remaining.moments": "Moments remaining",
+ "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "trends.trending_now": "Trending now",
+ "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Add images, a video or an audio file",
+ "upload_error.limit": "File upload limit exceeded.",
+ "upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
+ "upload_form.description": "Describe for the visually impaired",
+ "upload_form.edit": "Edit",
+ "upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+ "upload_modal.analyzing_picture": "Analyzing picture…",
+ "upload_modal.apply": "Apply",
+ "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+ "upload_modal.detect_text": "Detect text from picture",
+ "upload_modal.edit_media": "Edit media",
+ "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_progress.label": "Uploading…",
+ "video.close": "Close video",
+ "video.download": "Download file",
+ "video.exit_fullscreen": "Exit full screen",
+ "video.expand": "Expand video",
+ "video.fullscreen": "Full screen",
+ "video.hide": "Hide video",
+ "video.mute": "Mute sound",
+ "video.pause": "Pause",
+ "video.play": "Play",
+ "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 3cfbc5786..45e0dce32 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "జాబితాల నుండి చేర్చు లేదా తీసివేయి",
"account.badges.bot": "బాట్",
+ "account.badges.group": "Group",
"account.block": "@{name} ను బ్లాక్ చేయి",
"account.block_domain": "{domain} నుంచి అన్నీ దాచిపెట్టు",
"account.blocked": "బ్లాక్ అయినవి",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "@{name}కు నేరుగా సందేశం పంపు",
"account.domain_blocked": "డొమైన్ దాచిపెట్టబడినది",
@@ -38,10 +42,15 @@
"account.unfollow": "అనుసరించవద్దు",
"account.unmute": "@{name}పై మ్యూట్ ని తొలగించు",
"account.unmute_notifications": "@{name} నుంచి ప్రకటనలపై మ్యూట్ ని తొలగించు",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "అనుకోని తప్పు జరిగినది.",
"alert.unexpected.title": "అయ్యో!",
+ "announcement.announcement": "Announcement",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "మీరు తదుపరిసారి దీనిని దాటవేయడానికి {combo} నొక్కవచ్చు",
"bundle_column_error.body": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.",
"bundle_modal_error.retry": "మళ్ళీ ప్రయత్నించండి",
"column.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు",
+ "column.bookmarks": "Bookmarks",
"column.community": "స్థానిక కాలక్రమం",
"column.direct": "ప్రత్యక్ష సందేశాలు",
"column.directory": "Browse profiles",
@@ -71,7 +81,9 @@
"column_header.show_settings": "అమర్పులను చూపించు",
"column_header.unpin": "పీకివేయు",
"column_subheading.settings": "అమర్పులు",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "మీడియా మాత్రమే",
+ "community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "ఈ టూట్ పేర్కొన్న వినియోగదారులకు మాత్రమే పంపబడుతుంది.",
"compose_form.direct_message_warning_learn_more": "మరింత తెలుసుకోండి",
"compose_form.hashtag_warning": "ఈ టూట్ అన్లిస్టెడ్ కాబట్టి ఏ హాష్ ట్యాగ్ క్రిందకూ రాదు. పబ్లిక్ టూట్ లను మాత్రమే హాష్ ట్యాగ్ ద్వారా శోధించవచ్చు.",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "ఎన్నిక వ్యవధి",
"compose_form.poll.option_placeholder": "ఎంపిక {number}",
"compose_form.poll.remove_option": "ఈ ఎంపికను తొలగించు",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "టూట్",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Mark media as sensitive",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "ఇక్కడ ఏ టూట్లూ లేవు!No toots here!",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "మీరు ఇంకా ఏ వినియోగదారులనూ బ్లాక్ చేయలేదు.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "స్థానిక కాలక్రమం ఖాళీగా ఉంది. మొదలుపెట్టడానికి బహిరంగంగా ఏదో ఒకటి వ్రాయండి!",
"empty_column.direct": "మీకు ఇంకా ఏ ప్రత్యక్ష సందేశాలు లేవు. మీరు ఒకదాన్ని పంపినప్పుడు లేదా స్వీకరించినప్పుడు, అది ఇక్కడ చూపబడుతుంది.",
"empty_column.domain_blocks": "దాచబడిన డొమైన్లు ఇంకా ఏమీ లేవు.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Report issue",
"follow_request.authorize": "అనుమతించు",
"follow_request.reject": "తిరస్కరించు",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "డెవలపర్లు",
"getting_started.directory": "ప్రొఫైల్ డైరెక్టరీ",
"getting_started.documentation": "డాక్యుమెంటేషన్",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "ప్రాథమిక",
"home.column_settings.show_reblogs": "బూస్ట్ లను చూపించు",
"home.column_settings.show_replies": "ప్రత్యుత్తరాలను చూపించు",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "మ్యూట్ చేయబడిన వినియోగదారుల జాబితాను తెరవడానికి",
"keyboard_shortcuts.my_profile": "మీ ప్రొఫైల్ను తెరవడానికి",
"keyboard_shortcuts.notifications": "నోటిఫికేషన్ల నిలువు వరుసను తెరవడానికి",
+ "keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "అతికించబడిన టూట్ల జాబితాను తెరవడానికి",
"keyboard_shortcuts.profile": "రచయిత ప్రొఫైల్ ను తెరవాలంటే",
"keyboard_shortcuts.reply": "ప్రత్యుత్తరం ఇవ్వడానికి",
"keyboard_shortcuts.requests": "ఫాలో రిక్వెస్ట్ల జాబితాను తెరవడానికి",
"keyboard_shortcuts.search": "శోధనపై దృష్టి పెట్టండి",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "\"ఇక్కడ ప్రారంభించండి\" నిలువు వరుసను తెరవడానికి",
"keyboard_shortcuts.toggle_hidden": "CW వెనుక ఉన్న పాఠ్యాన్ని చూపడానికి / దాచడానికి",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "ఈ వినియోగదారు నుండి నోటిఫికేషన్లను దాచాలా?",
"navigation_bar.apps": "మొబైల్ ఆప్ లు",
"navigation_bar.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు",
+ "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "స్థానిక కాలక్రమం",
"navigation_bar.compose": "కొత్త టూట్ను రాయండి",
"navigation_bar.direct": "ప్రత్యక్ష సందేశాలు",
@@ -273,7 +294,9 @@
"navigation_bar.security": "భద్రత",
"notification.favourite": "{name} మీ స్టేటస్ ను ఇష్టపడ్డారు",
"notification.follow": "{name} మిమ్మల్ని అనుసరిస్తున్నారు",
+ "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} మిమ్మల్ని ప్రస్తావించారు",
+ "notification.own_poll": "Your poll has ended",
"notification.poll": "మీరు పాల్గొనిన ఎన్సిక ముగిసినది",
"notification.reblog": "{name} మీ స్టేటస్ ను బూస్ట్ చేసారు",
"notifications.clear": "ప్రకటనలను తుడిచివేయు",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "క్విక్ ఫిల్టర్ బార్",
"notifications.column_settings.filter_bar.show": "చూపించు",
"notifications.column_settings.follow": "క్రొత్త అనుచరులు:",
+ "notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "ప్రస్తావనలు:",
"notifications.column_settings.poll": "ఎన్నిక ఫలితాలు:",
"notifications.column_settings.push": "పుష్ ప్రకటనలు",
@@ -322,6 +346,7 @@
"relative_time.just_now": "ఇప్పుడు",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
"reply_indicator.cancel": "రద్దు చెయ్యి",
"report.forward": "{target}కి ఫార్వార్డ్ చేయండి",
"report.forward_hint": "ఖాతా మరొక సర్వర్లో ఉంది. నివేదిక యొక్క ఒక అనామకంగా ఉన్న కాపీని అక్కడికి కూడా పంపించమంటారా?",
@@ -344,6 +369,7 @@
"status.admin_account": "@{name} కొరకు సమన్వయ వినిమయసీమను తెరువు",
"status.admin_status": "సమన్వయ వినిమయసీమలో ఈ స్టేటస్ ను తెరవండి",
"status.block": "@{name} ను బ్లాక్ చేయి",
+ "status.bookmark": "Bookmark",
"status.cancel_reblog_private": "బూస్ట్ను తొలగించు",
"status.cannot_reblog": "ఈ పోస్ట్ను బూస్ట్ చేయడం సాధ్యం కాదు",
"status.copy": "లంకెను స్టేటస్కు కాపీ చేయి",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} బూస్ట్ చేసారు",
"status.reblogs.empty": "ఈ టూట్ను ఇంకా ఎవరూ బూస్ట్ చేయలేదు. ఎవరైనా చేసినప్పుడు, అవి ఇక్కడ కనబడతాయి.",
"status.redraft": "తొలగించు & తిరగరాయు",
+ "status.remove_bookmark": "Remove bookmark",
"status.reply": "ప్రత్యుత్తరం",
"status.replyAll": "సంభాషణకు ప్రత్యుత్తరం ఇవ్వండి",
"status.report": "@{name}పై ఫిర్యాదుచేయు",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "కొన్ని క్షణాలు మాత్రమే మిగిలి ఉన్నాయి",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} మాట్లాడుతున్నారు",
"trends.trending_now": "Trending now",
"ui.beforeunload": "మీరు మాస్టొడొన్ను వదిలివేస్తే మీ డ్రాఫ్ట్లు పోతాయి.",
@@ -400,9 +431,11 @@
"upload_button.label": "మీడియాను జోడించండి (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "దృష్టి లోపమున్న వారి కోసం వివరించండి",
"upload_form.edit": "Edit",
"upload_form.undo": "తొలగించు",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "అప్లోడ్ అవుతోంది...",
"video.close": "వీడియోని మూసివేయి",
+ "video.download": "Download file",
"video.exit_fullscreen": "పూర్తి స్క్రీన్ నుండి నిష్క్రమించు",
"video.expand": "వీడియోను విస్తరించండి",
"video.fullscreen": "పూర్తి స్క్రీన్",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index a9278fdd0..4ecd1be72 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -1,12 +1,16 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "เพิ่มหรือเอาออกจากรายการ",
"account.badges.bot": "บอต",
+ "account.badges.group": "กลุ่ม",
"account.block": "ปิดกั้น @{name}",
- "account.block_domain": "ซ่อนทุกอย่างจาก {domain}",
+ "account.block_domain": "ปิดกั้นโดเมน {domain}",
"account.blocked": "ปิดกั้นอยู่",
+ "account.browse_more_on_origin_server": "ดูเพิ่มเติมในโปรไฟล์ต้นฉบับ",
"account.cancel_follow_request": "ยกเลิกคำขอติดตาม",
"account.direct": "ส่งข้อความโดยตรงถึง @{name}",
- "account.domain_blocked": "ซ่อนโดเมนอยู่",
+ "account.domain_blocked": "ปิดกั้นโดเมนอยู่",
"account.edit_profile": "แก้ไขโปรไฟล์",
"account.endorse": "แสดงให้เห็นในโปรไฟล์",
"account.follow": "ติดตาม",
@@ -22,9 +26,9 @@
"account.media": "สื่อ",
"account.mention": "กล่าวถึง @{name}",
"account.moved_to": "{name} ได้ย้ายไปยัง:",
- "account.mute": "ปิดเสียง @{name}",
- "account.mute_notifications": "ปิดเสียงการแจ้งเตือนจาก @{name}",
- "account.muted": "ปิดเสียงอยู่",
+ "account.mute": "ซ่อน @{name}",
+ "account.mute_notifications": "ซ่อนการแจ้งเตือนจาก @{name}",
+ "account.muted": "ซ่อนอยู่",
"account.never_active": "ไม่เลย",
"account.posts": "โพสต์",
"account.posts_with_replies": "โพสต์และการตอบกลับ",
@@ -33,15 +37,20 @@
"account.share": "แบ่งปันโปรไฟล์ของ @{name}",
"account.show_reblogs": "แสดงการดันจาก @{name}",
"account.unblock": "เลิกปิดกั้น @{name}",
- "account.unblock_domain": "เลิกซ่อน {domain}",
+ "account.unblock_domain": "เลิกปิดกั้นโดเมน {domain}",
"account.unendorse": "ไม่แสดงให้เห็นในโปรไฟล์",
"account.unfollow": "เลิกติดตาม",
- "account.unmute": "เลิกปิดเสียง @{name}",
- "account.unmute_notifications": "เลิกปิดเสียงการแจ้งเตือนจาก @{name}",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account.unmute": "เลิกซ่อน @{name}",
+ "account.unmute_notifications": "เลิกซ่อนการแจ้งเตือนจาก @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "โปรดลองใหม่หลังจาก {retry_time, time, medium}",
+ "alert.rate_limited.title": "มีการจำกัดอัตรา",
"alert.unexpected.message": "เกิดข้อผิดพลาดที่ไม่คาดคิด",
"alert.unexpected.title": "อุปส์!",
+ "announcement.announcement": "ประกาศ",
"autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์",
"boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป",
"bundle_column_error.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้",
@@ -51,15 +60,16 @@
"bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้",
"bundle_modal_error.retry": "ลองอีกครั้ง",
"column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่",
- "column.community": "เส้นเวลาในเว็บ",
+ "column.bookmarks": "ที่คั่นหน้า",
+ "column.community": "เส้นเวลาในเซิร์ฟเวอร์",
"column.direct": "ข้อความโดยตรง",
"column.directory": "เรียกดูโปรไฟล์",
- "column.domain_blocks": "โดเมนที่ซ่อนอยู่",
+ "column.domain_blocks": "โดเมนที่ปิดกั้นอยู่",
"column.favourites": "รายการโปรด",
"column.follow_requests": "คำขอติดตาม",
"column.home": "หน้าแรก",
"column.lists": "รายการ",
- "column.mutes": "ผู้ใช้ที่ปิดเสียงอยู่",
+ "column.mutes": "ผู้ใช้ที่ซ่อนอยู่",
"column.notifications": "การแจ้งเตือน",
"column.pins": "โพสต์ที่ปักหมุด",
"column.public": "เส้นเวลาที่ติดต่อกับภายนอก",
@@ -71,17 +81,21 @@
"column_header.show_settings": "แสดงการตั้งค่า",
"column_header.unpin": "ถอนหมุด",
"column_subheading.settings": "การตั้งค่า",
+ "community.column_settings.local_only": "ในเซิร์ฟเวอร์เท่านั้น",
"community.column_settings.media_only": "สื่อเท่านั้น",
- "compose_form.direct_message_warning": "จะส่งโพสต์นี้ไปยังผู้ใช้ที่กล่าวถึงเท่านั้น",
+ "community.column_settings.remote_only": "ระยะไกลเท่านั้น",
+ "compose_form.direct_message_warning": "โพสต์นี้จะถูกส่งไปยังผู้ใช้ที่กล่าวถึงเท่านั้น",
"compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม",
- "compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาโดยแฮชแท็ก",
+ "compose_form.hashtag_warning": "โพสต์นี้จะไม่ถูกแสดงในแฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาโดยแฮชแท็ก",
"compose_form.lock_disclaimer": "บัญชีของคุณไม่ได้ {locked} ใครก็ตามสามารถติดตามคุณเพื่อดูโพสต์สำหรับผู้ติดตามเท่านั้นของคุณ",
"compose_form.lock_disclaimer.lock": "ล็อคอยู่",
"compose_form.placeholder": "คุณกำลังคิดอะไรอยู่?",
- "compose_form.poll.add_option": "เพิ่มทางเลือก",
+ "compose_form.poll.add_option": "เพิ่มตัวเลือก",
"compose_form.poll.duration": "ระยะเวลาโพล",
- "compose_form.poll.option_placeholder": "ทางเลือก {number}",
- "compose_form.poll.remove_option": "เอาทางเลือกนี้ออก",
+ "compose_form.poll.option_placeholder": "ตัวเลือก {number}",
+ "compose_form.poll.remove_option": "เอาตัวเลือกนี้ออก",
+ "compose_form.poll.switch_to_multiple": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตหลายตัวเลือก",
+ "compose_form.poll.switch_to_single": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตตัวเลือกเดี่ยว",
"compose_form.publish": "โพสต์",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "ทำเครื่องหมายสื่อว่าละเอียดอ่อน",
@@ -95,18 +109,18 @@
"confirmations.block.confirm": "ปิดกั้น",
"confirmations.block.message": "คุณแน่ใจหรือไม่ว่าต้องการปิดกั้น {name}?",
"confirmations.delete.confirm": "ลบ",
- "confirmations.delete.message": "คุณแน่ใจหรือไม่ว่าต้องการลบสถานะนี้?",
+ "confirmations.delete.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?",
"confirmations.delete_list.confirm": "ลบ",
"confirmations.delete_list.message": "คุณแน่ใจหรือไม่ว่าต้องการลบรายการนี้อย่างถาวร?",
- "confirmations.domain_block.confirm": "ซ่อนทั้งโดเมน",
- "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
+ "confirmations.domain_block.confirm": "ปิดกั้นทั้งโดเมน",
+ "confirmations.domain_block.message": "คุณแน่ใจจริง ๆ หรือไม่ว่าต้องการปิดกั้นทั้ง {domain}? ในกรณีส่วนใหญ่ การปิดกั้นหรือการซ่อนแบบกำหนดเป้าหมายไม่กี่รายการนั้นเพียงพอและเป็นที่นิยม คุณจะไม่เห็นเนื้อหาจากโดเมนนั้นในเส้นเวลาสาธารณะใด ๆ หรือการแจ้งเตือนของคุณ จะเอาผู้ติดตามของคุณจากโดเมนนั้นออก",
"confirmations.logout.confirm": "ออกจากระบบ",
"confirmations.logout.message": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบ?",
- "confirmations.mute.confirm": "ปิดเสียง",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
- "confirmations.mute.message": "คุณแน่ใจหรือไม่ว่าต้องการปิดเสียง {name}?",
+ "confirmations.mute.confirm": "ซ่อน",
+ "confirmations.mute.explanation": "นี่จะซ่อนโพสต์จากเขาและโพสต์ที่กล่าวถึงเขา แต่จะยังอนุญาตให้เขาเห็นโพสต์ของคุณและติดตามคุณ",
+ "confirmations.mute.message": "คุณแน่ใจหรือไม่ว่าต้องการซ่อน {name}?",
"confirmations.redraft.confirm": "ลบแล้วร่างใหม่",
- "confirmations.redraft.message": "คุณแน่ใจหรือไม่ว่าต้องการลบสถานะนี้แล้วร่างใหม่? รายการโปรดและการดันจะหายไป และการตอบกลับโพสต์ดั้งเดิมจะไม่มีความเกี่ยวพัน",
+ "confirmations.redraft.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้แล้วร่างใหม่? รายการโปรดและการดันจะหายไป และการตอบกลับโพสต์ดั้งเดิมจะไม่มีความเกี่ยวพัน",
"confirmations.reply.confirm": "ตอบกลับ",
"confirmations.reply.message": "การตอบกลับตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?",
"confirmations.unfollow.confirm": "เลิกติดตาม",
@@ -117,9 +131,9 @@
"conversation.with": "กับ {names}",
"directory.federated": "จากเฟดิเวิร์สที่รู้จัก",
"directory.local": "จาก {domain} เท่านั้น",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
- "embed.instructions": "ฝังสถานะนี้ในเว็บไซต์ของคุณโดยคัดลอกโค้ดด้านล่าง",
+ "directory.new_arrivals": "มาใหม่",
+ "directory.recently_active": "ใช้งานล่าสุด",
+ "embed.instructions": "ฝังโพสต์นี้ในเว็บไซต์ของคุณโดยคัดลอกโค้ดด้านล่าง",
"embed.preview": "นี่คือลักษณะที่จะปรากฏ:",
"emoji_button.activity": "กิจกรรม",
"emoji_button.custom": "กำหนดเอง",
@@ -138,33 +152,35 @@
"empty_column.account_timeline": "ไม่มีโพสต์ที่นี่!",
"empty_column.account_unavailable": "ไม่มีโปรไฟล์",
"empty_column.blocks": "คุณยังไม่ได้ปิดกั้นผู้ใช้ใด ๆ",
- "empty_column.community": "เส้นเวลาในเว็บว่างเปล่า เขียนบางอย่างเป็นสาธารณะเพื่อเริ่มต้น!",
+ "empty_column.bookmarked_statuses": "คุณยังไม่มีโพสต์ที่เพิ่มที่คั่นหน้าไว้ใด ๆ เมื่อคุณเพิ่มที่คั่นหน้าโพสต์ โพสต์จะปรากฏที่นี่",
+ "empty_column.community": "เส้นเวลาในเซิร์ฟเวอร์ว่างเปล่า เขียนบางอย่างเป็นสาธารณะเพื่อเริ่มต้น!",
"empty_column.direct": "คุณยังไม่มีข้อความโดยตรงใด ๆ เมื่อคุณส่งหรือรับข้อความ ข้อความจะปรากฏที่นี่",
- "empty_column.domain_blocks": "ยังไม่มีโดเมนที่ซ่อนอยู่",
+ "empty_column.domain_blocks": "ยังไม่มีโดเมนที่ปิดกั้นอยู่",
"empty_column.favourited_statuses": "คุณยังไม่มีโพสต์ที่ชื่นชอบใด ๆ เมื่อคุณชื่นชอบโพสต์ โพสต์จะปรากฏที่นี่",
"empty_column.favourites": "ยังไม่มีใครชื่นชอบโพสต์นี้ เมื่อใครสักคนชื่นชอบ เขาจะปรากฏที่นี่",
"empty_column.follow_requests": "คุณยังไม่มีคำขอติดตามใด ๆ เมื่อคุณได้รับคำขอ คำขอจะปรากฏที่นี่",
"empty_column.hashtag": "ยังไม่มีสิ่งใดในแฮชแท็กนี้",
"empty_column.home": "เส้นเวลาหน้าแรกของคุณว่างเปล่า! เยี่ยมชม {public} หรือใช้การค้นหาเพื่อเริ่มต้นใช้งานและพบปะผู้ใช้อื่น ๆ",
"empty_column.home.public_timeline": "เส้นเวลาสาธารณะ",
- "empty_column.list": "ยังไม่มีสิ่งใดในรายการนี้ เมื่อสมาชิกของรายการนี้โพสต์สถานะใหม่ สถานะจะปรากฏที่นี่",
+ "empty_column.list": "ยังไม่มีสิ่งใดในรายการนี้ เมื่อสมาชิกของรายการนี้โพสต์โพสต์ใหม่ โพสต์จะปรากฏที่นี่",
"empty_column.lists": "คุณยังไม่มีรายการใด ๆ เมื่อคุณสร้างรายการ รายการจะปรากฏที่นี่",
- "empty_column.mutes": "คุณยังไม่ได้ปิดเสียงผู้ใช้ใด ๆ",
+ "empty_column.mutes": "คุณยังไม่ได้ซ่อนผู้ใช้ใด ๆ",
"empty_column.notifications": "คุณยังไม่มีการแจ้งเตือนใด ๆ โต้ตอบกับผู้อื่นเพื่อเริ่มการสนทนา",
"empty_column.public": "ไม่มีสิ่งใดที่นี่! เขียนบางอย่างเป็นสาธารณะ หรือติดตามผู้ใช้จากเซิร์ฟเวอร์อื่น ๆ ด้วยตนเองเพื่อเติมให้เต็ม",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "error.unexpected_crash.explanation": "เนื่องจากข้อบกพร่องในโค้ดของเราหรือปัญหาความเข้ากันได้ของเบราว์เซอร์ จึงไม่สามารถแสดงหน้านี้ได้อย่างถูกต้อง",
+ "error.unexpected_crash.next_steps": "ลองรีเฟรชหน้า หากนั่นไม่ช่วย คุณอาจยังสามารถใช้ Mastodon ผ่านเบราว์เซอร์อื่นหรือแอป",
+ "errors.unexpected_crash.copy_stacktrace": "คัดลอกการติดตามสแตกไปยังคลิปบอร์ด",
"errors.unexpected_crash.report_issue": "รายงานปัญหา",
"follow_request.authorize": "อนุญาต",
"follow_request.reject": "ปฏิเสธ",
+ "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง",
"getting_started.developers": "นักพัฒนา",
"getting_started.directory": "ไดเรกทอรีโปรไฟล์",
"getting_started.documentation": "เอกสารประกอบ",
"getting_started.heading": "เริ่มต้นใช้งาน",
"getting_started.invite": "เชิญผู้คน",
- "getting_started.open_source_notice": "Mastodon เป็นซอฟต์แวร์เปิดต้นฉบับ คุณสามารถมีส่วนร่วมหรือรายงานปัญหาที่ GitHub ที่ {github}",
- "getting_started.security": "ความปลอดภัย",
+ "getting_started.open_source_notice": "Mastodon เป็นซอฟต์แวร์โอเพนซอร์ส คุณสามารถมีส่วนร่วมหรือรายงานปัญหาใน GitHub ที่ {github}",
+ "getting_started.security": "การตั้งค่าบัญชี",
"getting_started.terms": "เงื่อนไขการให้บริการ",
"hashtag.column_header.tag_mode.all": "และ {additional}",
"hashtag.column_header.tag_mode.any": "หรือ {additional}",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "พื้นฐาน",
"home.column_settings.show_reblogs": "แสดงการดัน",
"home.column_settings.show_replies": "แสดงการตอบกลับ",
+ "home.hide_announcements": "ซ่อนประกาศ",
+ "home.show_announcements": "แสดงประกาศ",
"intervals.full.days": "{number, plural, other {# วัน}}",
"intervals.full.hours": "{number, plural, other {# ชั่วโมง}}",
"intervals.full.minutes": "{number, plural, other {# นาที}}",
@@ -185,28 +203,28 @@
"introduction.federation.federated.headline": "ที่ติดต่อกับภายนอก",
"introduction.federation.federated.text": "โพสต์สาธารณะจากเซิร์ฟเวอร์อื่น ๆ ของเฟดิเวิร์สจะปรากฏในเส้นเวลาที่ติดต่อกับภายนอก",
"introduction.federation.home.headline": "หน้าแรก",
- "introduction.federation.home.text": "โพสต์จากผู้คนที่คุณติดตามจะปรากฏในฟีดหน้าแรกของคุณ คุณสามารถติดตามใครก็ตามในเซิร์ฟเวอร์ใดก็ตาม!",
- "introduction.federation.local.headline": "ในเว็บ",
- "introduction.federation.local.text": "โพสต์สาธารณะจากผู้คนในเซิร์ฟเวอร์เดียวกันกับคุณจะปรากฏในเส้นเวลาในเว็บ",
+ "introduction.federation.home.text": "โพสต์จากผู้คนที่คุณติดตามจะปรากฏในฟีดหน้าแรกของคุณ คุณสามารถติดตามใครก็ได้บนเซิร์ฟเวอร์ไหนก็ได้!",
+ "introduction.federation.local.headline": "ในเซิร์ฟเวอร์",
+ "introduction.federation.local.text": "โพสต์สาธารณะจากผู้คนในเซิร์ฟเวอร์เดียวกันกับคุณจะปรากฏในเส้นเวลาในเซิร์ฟเวอร์",
"introduction.interactions.action": "เสร็จสิ้นบทช่วยสอน!",
"introduction.interactions.favourite.headline": "ชื่นชอบ",
- "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.favourite.text": "คุณสามารถบันทึกโพสต์ไว้ในภายหลังและแจ้งให้ผู้สร้างทราบว่าคุณชอบโพสต์โดยการชื่นชอบโพสต์",
"introduction.interactions.reblog.headline": "ดัน",
- "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.reblog.text": "คุณสามารถแบ่งปันโพสต์ของผู้อื่นกับผู้ติดตามของคุณโดยการดันโพสต์",
"introduction.interactions.reply.headline": "ตอบกลับ",
- "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+ "introduction.interactions.reply.text": "คุณสามารถตอบกลับโพสต์ของผู้อื่นและของคุณเอง ซึ่งจะเชื่อมโยงโพสต์เข้าด้วยกันในการสนทนา",
"introduction.welcome.action": "ไปกันเลย!",
"introduction.welcome.headline": "ขั้นตอนแรก",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "introduction.welcome.text": "ยินดีต้อนรับสู่เฟดิเวิร์ส! ในอีกสักครู่ คุณจะสามารถออกอากาศข้อความและพูดคุยกับเพื่อน ๆ ของคุณผ่านเซิร์ฟเวอร์ที่หลากหลาย แต่เซิร์ฟเวอร์นี้ {domain} มีความพิเศษคือเป็นเซิร์ฟเวอร์ที่โฮสต์โปรไฟล์ของคุณ ดังนั้นจดจำชื่อของเซิร์ฟเวอร์ไว้",
"keyboard_shortcuts.back": "เพื่อนำทางย้อนกลับ",
"keyboard_shortcuts.blocked": "เพื่อเปิดรายการผู้ใช้ที่ปิดกั้นอยู่",
"keyboard_shortcuts.boost": "เพื่อดัน",
- "keyboard_shortcuts.column": "เพื่อโฟกัสสถานะในหนึ่งในคอลัมน์",
+ "keyboard_shortcuts.column": "เพื่อโฟกัสโพสต์ในหนึ่งในคอลัมน์",
"keyboard_shortcuts.compose": "เพื่อโฟกัสพื้นที่เขียนข้อความ",
"keyboard_shortcuts.description": "คำอธิบาย",
"keyboard_shortcuts.direct": "เพื่อเปิดคอลัมน์ข้อความโดยตรง",
"keyboard_shortcuts.down": "เพื่อย้ายลงในรายการ",
- "keyboard_shortcuts.enter": "เพื่อเปิดสถานะ",
+ "keyboard_shortcuts.enter": "เพื่อเปิดโพสต์",
"keyboard_shortcuts.favourite": "เพื่อชื่นชอบ",
"keyboard_shortcuts.favourites": "เพื่อเปิดรายการโปรด",
"keyboard_shortcuts.federated": "เพื่อเปิดเส้นเวลาที่ติดต่อกับภายนอก",
@@ -214,16 +232,18 @@
"keyboard_shortcuts.home": "เพื่อเปิดเส้นเวลาหน้าแรก",
"keyboard_shortcuts.hotkey": "ปุ่มลัด",
"keyboard_shortcuts.legend": "เพื่อแสดงคำอธิบายนี้",
- "keyboard_shortcuts.local": "เพื่อเปิดเส้นเวลาในเว็บ",
+ "keyboard_shortcuts.local": "เพื่อเปิดเส้นเวลาในเซิร์ฟเวอร์",
"keyboard_shortcuts.mention": "เพื่อกล่าวถึงผู้สร้าง",
- "keyboard_shortcuts.muted": "เพื่อเปิดรายการผู้ใช้ที่ปิดเสียงอยู่",
+ "keyboard_shortcuts.muted": "เพื่อเปิดรายการผู้ใช้ที่ซ่อนอยู่",
"keyboard_shortcuts.my_profile": "เพื่อเปิดโปรไฟล์ของคุณ",
"keyboard_shortcuts.notifications": "เพื่อเปิดคอลัมน์การแจ้งเตือน",
+ "keyboard_shortcuts.open_media": "เพื่อเปิดสื่อ",
"keyboard_shortcuts.pinned": "เพื่อเปิดรายการโพสต์ที่ปักหมุด",
"keyboard_shortcuts.profile": "เพื่อเปิดโปรไฟล์ของผู้สร้าง",
"keyboard_shortcuts.reply": "เพื่อตอบกลับ",
"keyboard_shortcuts.requests": "เพื่อเปิดรายการคำขอติดตาม",
"keyboard_shortcuts.search": "เพื่อโฟกัสการค้นหา",
+ "keyboard_shortcuts.spoilers": "เพื่อแสดง/ซ่อนช่องกรอกคำเตือนเนื้อหา",
"keyboard_shortcuts.start": "เพื่อเปิดคอลัมน์ \"เริ่มต้นใช้งาน\"",
"keyboard_shortcuts.toggle_hidden": "เพื่อแสดง/ซ่อนข้อความที่อยู่หลังคำเตือนเนื้อหา",
"keyboard_shortcuts.toggle_sensitivity": "เพื่อแสดง/ซ่อนสื่อ",
@@ -245,37 +265,40 @@
"lists.subheading": "รายการของคุณ",
"load_pending": "{count, plural, other {# รายการใหม่}}",
"loading_indicator.label": "กำลังโหลด...",
- "media_gallery.toggle_visible": "เปิด/ปิดการมองเห็น",
+ "media_gallery.toggle_visible": "ซ่อน {number, plural, other {ภาพ}}",
"missing_indicator.label": "ไม่พบ",
"missing_indicator.sublabel": "ไม่พบทรัพยากรนี้",
"mute_modal.hide_notifications": "ซ่อนการแจ้งเตือนจากผู้ใช้นี้?",
- "navigation_bar.apps": "แอปสำหรับมือถือ",
+ "navigation_bar.apps": "แอปมือถือ",
"navigation_bar.blocks": "ผู้ใช้ที่ปิดกั้นอยู่",
- "navigation_bar.community_timeline": "เส้นเวลาในเว็บ",
+ "navigation_bar.bookmarks": "ที่คั่นหน้า",
+ "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์",
"navigation_bar.compose": "เขียนโพสต์ใหม่",
"navigation_bar.direct": "ข้อความโดยตรง",
"navigation_bar.discover": "ค้นพบ",
- "navigation_bar.domain_blocks": "โดเมนที่ซ่อนอยู่",
+ "navigation_bar.domain_blocks": "โดเมนที่ปิดกั้นอยู่",
"navigation_bar.edit_profile": "แก้ไขโปรไฟล์",
"navigation_bar.favourites": "รายการโปรด",
- "navigation_bar.filters": "คำที่ปิดเสียงอยู่",
+ "navigation_bar.filters": "คำที่ซ่อนอยู่",
"navigation_bar.follow_requests": "คำขอติดตาม",
"navigation_bar.follows_and_followers": "การติดตามและผู้ติดตาม",
"navigation_bar.info": "เกี่ยวกับเซิร์ฟเวอร์นี้",
"navigation_bar.keyboard_shortcuts": "ปุ่มลัด",
"navigation_bar.lists": "รายการ",
"navigation_bar.logout": "ออกจากระบบ",
- "navigation_bar.mutes": "ผู้ใช้ที่ปิดเสียงอยู่",
+ "navigation_bar.mutes": "ผู้ใช้ที่ซ่อนอยู่",
"navigation_bar.personal": "ส่วนบุคคล",
"navigation_bar.pins": "โพสต์ที่ปักหมุด",
"navigation_bar.preferences": "การกำหนดลักษณะ",
"navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก",
"navigation_bar.security": "ความปลอดภัย",
- "notification.favourite": "{name} ได้ชื่นชอบสถานะของคุณ",
+ "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ",
"notification.follow": "{name} ได้ติดตามคุณ",
+ "notification.follow_request": "{name} ได้ขอติดตามคุณ",
"notification.mention": "{name} ได้กล่าวถึงคุณ",
- "notification.poll": "โพลที่คุณได้ลงคะแนนได้สิ้นสุดแล้ว",
- "notification.reblog": "{name} ได้ดันสถานะของคุณ",
+ "notification.own_poll": "การสำรวจความคิดเห็นของคุณได้สิ้นสุดแล้ว",
+ "notification.poll": "การสำรวจความคิดเห็นที่คุณได้ลงคะแนนได้สิ้นสุดแล้ว",
+ "notification.reblog": "{name} ได้ดันโพสต์ของคุณ",
"notifications.clear": "ล้างการแจ้งเตือน",
"notifications.clear_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการล้างการแจ้งเตือนทั้งหมดของคุณอย่างถาวร?",
"notifications.column_settings.alert": "การแจ้งเตือนบนเดสก์ท็อป",
@@ -284,8 +307,9 @@
"notifications.column_settings.filter_bar.category": "แถบตัวกรองด่วน",
"notifications.column_settings.filter_bar.show": "แสดง",
"notifications.column_settings.follow": "ผู้ติดตามใหม่:",
+ "notifications.column_settings.follow_request": "คำขอติดตามใหม่:",
"notifications.column_settings.mention": "การกล่าวถึง:",
- "notifications.column_settings.poll": "ผลลัพธ์โพล:",
+ "notifications.column_settings.poll": "ผลลัพธ์การสำรวจความคิดเห็น:",
"notifications.column_settings.push": "การแจ้งเตือนแบบผลัก",
"notifications.column_settings.reblog": "การดัน:",
"notifications.column_settings.show": "แสดงในคอลัมน์",
@@ -295,24 +319,24 @@
"notifications.filter.favourites": "รายการโปรด",
"notifications.filter.follows": "การติดตาม",
"notifications.filter.mentions": "การกล่าวถึง",
- "notifications.filter.polls": "ผลลัพธ์โพล",
+ "notifications.filter.polls": "ผลลัพธ์การสำรวจความคิดเห็น",
"notifications.group": "{count} การแจ้งเตือน",
"poll.closed": "ปิดแล้ว",
"poll.refresh": "รีเฟรช",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, other {# คน}}",
"poll.total_votes": "{count, plural, other {# การลงคะแนน}}",
"poll.vote": "ลงคะแนน",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "เพิ่มโพล",
- "poll_button.remove_poll": "เอาโพลออก",
- "privacy.change": "ปรับเปลี่ยนความเป็นส่วนตัวของสถานะ",
- "privacy.direct.long": "โพสต์ไปยังผู้ใช้ที่กล่าวถึงเท่านั้น",
+ "poll.voted": "คุณได้ลงคะแนนให้กับคำตอบนี้",
+ "poll_button.add_poll": "เพิ่มการสำรวจความคิดเห็น",
+ "poll_button.remove_poll": "เอาการสำรวจความคิดเห็นออก",
+ "privacy.change": "ปรับเปลี่ยนความเป็นส่วนตัวของโพสต์",
+ "privacy.direct.long": "ปรากฏแก่ผู้ใช้ที่กล่าวถึงเท่านั้น",
"privacy.direct.short": "โดยตรง",
- "privacy.private.long": "โพสต์ไปยังผู้ติดตามเท่านั้น",
+ "privacy.private.long": "ปรากฏแก่ผู้ติดตามเท่านั้น",
"privacy.private.short": "ผู้ติดตามเท่านั้น",
- "privacy.public.long": "โพสต์ไปยังเส้นเวลาสาธารณะ",
+ "privacy.public.long": "ปรากฏแก่ทุกคน แสดงในเส้นเวลาสาธารณะ",
"privacy.public.short": "สาธารณะ",
- "privacy.unlisted.long": "ไม่โพสต์ไปยังเส้นเวลาสาธารณะ",
+ "privacy.unlisted.long": "ปรากฏแก่ทุกคน แต่ไม่อยู่ในเส้นเวลาสาธารณะ",
"privacy.unlisted.short": "ไม่อยู่ในรายการ",
"refresh": "รีเฟรช",
"regeneration_indicator.label": "กำลังโหลด…",
@@ -322,31 +346,33 @@
"relative_time.just_now": "ตอนนี้",
"relative_time.minutes": "{number} นาที",
"relative_time.seconds": "{number} วินาที",
+ "relative_time.today": "วันนี้",
"reply_indicator.cancel": "ยกเลิก",
"report.forward": "ส่งต่อไปยัง {target}",
- "report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่นั่นด้วย?",
- "report.hint": "จะส่งรายงานไปยังผู้ควบคุมเซิร์ฟเวอร์ของคุณ คุณสามารถให้คำอธิบายเหตุผลที่คุณรายงานบัญชีนี้ด้านล่าง:",
+ "report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ต้องการส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่เซิร์ฟเวอร์นั้นด้วยหรือไม่?",
+ "report.hint": "รายงานนี้จะถูกส่งไปยังผู้ควบคุมเซิร์ฟเวอร์ของคุณ คุณสามารถอธิบายเหตุผลที่คุณรายงานบัญชีนี้ด้านล่าง:",
"report.placeholder": "ความคิดเห็นเพิ่มเติม",
"report.submit": "ส่ง",
"report.target": "กำลังรายงาน {target}",
"search.placeholder": "ค้นหา",
"search_popout.search_format": "รูปแบบการค้นหาขั้นสูง",
- "search_popout.tips.full_text": "ข้อความแบบง่ายส่งคืนสถานะที่คุณได้เขียน ชื่นชอบ ดัน หรือได้รับการกล่าวถึง ตลอดจนชื่อผู้ใช้, ชื่อที่แสดง และแฮชแท็กที่ตรงกัน",
+ "search_popout.tips.full_text": "ข้อความแบบง่ายส่งคืนโพสต์ที่คุณได้เขียน ชื่นชอบ ดัน หรือได้รับการกล่าวถึง ตลอดจนชื่อผู้ใช้, ชื่อที่แสดง และแฮชแท็กที่ตรงกัน",
"search_popout.tips.hashtag": "แฮชแท็ก",
- "search_popout.tips.status": "สถานะ",
+ "search_popout.tips.status": "โพสต์",
"search_popout.tips.text": "ข้อความแบบง่ายส่งคืนชื่อที่แสดง, ชื่อผู้ใช้ และแฮชแท็กที่ตรงกัน",
"search_popout.tips.user": "ผู้ใช้",
"search_results.accounts": "ผู้คน",
"search_results.hashtags": "แฮชแท็ก",
"search_results.statuses": "โพสต์",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.statuses_fts_disabled": "ไม่มีการเปิดใช้งานการค้นหาโพสต์โดยเนื้อหาของโพสต์ในเซิร์ฟเวอร์ Mastodon นี้",
"search_results.total": "{count, number} {count, plural, other {ผลลัพธ์}}",
"status.admin_account": "เปิดส่วนติดต่อการควบคุมสำหรับ @{name}",
- "status.admin_status": "เปิดสถานะนี้ในส่วนติดต่อการควบคุม",
+ "status.admin_status": "เปิดโพสต์นี้ในส่วนติดต่อการควบคุม",
"status.block": "ปิดกั้น @{name}",
+ "status.bookmark": "เพิ่มที่คั่นหน้า",
"status.cancel_reblog_private": "เลิกดัน",
"status.cannot_reblog": "ไม่สามารถดันโพสต์นี้",
- "status.copy": "คัดลอกลิงก์ไปยังสถานะ",
+ "status.copy": "คัดลอกลิงก์ไปยังโพสต์",
"status.delete": "ลบ",
"status.detailed_status": "มุมมองการสนทนาโดยละเอียด",
"status.direct": "ส่งข้อความโดยตรงถึง @{name}",
@@ -357,9 +383,9 @@
"status.media_hidden": "ซ่อนสื่ออยู่",
"status.mention": "กล่าวถึง @{name}",
"status.more": "เพิ่มเติม",
- "status.mute": "ปิดเสียง @{name}",
- "status.mute_conversation": "ปิดเสียงการสนทนา",
- "status.open": "ขยายสถานะนี้",
+ "status.mute": "ซ่อน @{name}",
+ "status.mute_conversation": "ซ่อนการสนทนา",
+ "status.open": "ขยายโพสต์นี้",
"status.pin": "ปักหมุดในโปรไฟล์",
"status.pinned": "โพสต์ที่ปักหมุด",
"status.read_more": "อ่านเพิ่มเติม",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} ได้ดัน",
"status.reblogs.empty": "ยังไม่มีใครดันโพสต์นี้ เมื่อใครสักคนดัน เขาจะปรากฏที่นี่",
"status.redraft": "ลบแล้วร่างใหม่",
+ "status.remove_bookmark": "เอาที่คั่นหน้าออก",
"status.reply": "ตอบกลับ",
"status.replyAll": "ตอบกลับกระทู้",
"status.report": "รายงาน @{name}",
@@ -378,14 +405,14 @@
"status.show_more": "แสดงเพิ่มเติม",
"status.show_more_all": "แสดงเพิ่มเติมทั้งหมด",
"status.show_thread": "แสดงกระทู้",
- "status.uncached_media_warning": "Not available",
- "status.unmute_conversation": "เลิกปิดเสียงการสนทนา",
+ "status.uncached_media_warning": "ไม่พร้อมใช้งาน",
+ "status.unmute_conversation": "เลิกซ่อนการสนทนา",
"status.unpin": "ถอนหมุดจากโปรไฟล์",
- "suggestions.dismiss": "ยกเลิกข้อเสนอแนะ",
+ "suggestions.dismiss": "ปิดข้อเสนอแนะ",
"suggestions.header": "คุณอาจสนใจ…",
"tabs_bar.federated_timeline": "ที่ติดต่อกับภายนอก",
"tabs_bar.home": "หน้าแรก",
- "tabs_bar.local_timeline": "ในเว็บ",
+ "tabs_bar.local_timeline": "ในเซิร์ฟเวอร์",
"tabs_bar.notifications": "การแจ้งเตือน",
"tabs_bar.search": "ค้นหา",
"time_remaining.days": "เหลืออีก {number, plural, other {# วัน}}",
@@ -393,25 +420,32 @@
"time_remaining.minutes": "เหลืออีก {number, plural, other {# นาที}}",
"time_remaining.moments": "ช่วงเวลาที่เหลือ",
"time_remaining.seconds": "เหลืออีก {number, plural, other {# วินาที}}",
- "trends.count_by_accounts": "{count} {rawCount, plural, other {คน}}กำลังคุย",
+ "timeline_hint.remote_resource_not_displayed": "ไม่ได้แสดง {resource} จากเซิร์ฟเวอร์อื่น ๆ",
+ "timeline_hint.resources.followers": "ผู้ติดตาม",
+ "timeline_hint.resources.follows": "การติดตาม",
+ "timeline_hint.resources.statuses": "โพสต์ที่เก่ากว่า",
+ "trends.count_by_accounts": "{count} {rawCount, plural, other {คน}}กำลังพูดคุย",
"trends.trending_now": "กำลังนิยม",
"ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Mastodon",
"upload_area.title": "ลากแล้วปล่อยเพื่ออัปโหลด",
- "upload_button.label": "เพิ่มสื่อ (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_button.label": "เพิ่มไฟล์ภาพ วิดีโอ หรือเสียง",
"upload_error.limit": "เกินขีดจำกัดการอัปโหลดไฟล์",
- "upload_error.poll": "ไม่อนุญาตให้อัปโหลดไฟล์กับการลงคะแนน",
+ "upload_error.poll": "ไม่อนุญาตให้อัปโหลดไฟล์พร้อมโพล",
+ "upload_form.audio_description": "อธิบายสำหรับผู้สูญเสียการได้ยิน",
"upload_form.description": "อธิบายสำหรับผู้บกพร่องทางการมองเห็น",
"upload_form.edit": "แก้ไข",
"upload_form.undo": "ลบ",
+ "upload_form.video_description": "อธิบายสำหรับผู้สูญเสียการได้ยินหรือบกพร่องทางการมองเห็น",
"upload_modal.analyzing_picture": "กำลังวิเคราะห์รูปภาพ…",
"upload_modal.apply": "นำไปใช้",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
+ "upload_modal.description_placeholder": "สุนัขจิ้งจอกสีน้ำตาลที่ว่องไวกระโดดข้ามสุนัขขี้เกียจ",
+ "upload_modal.detect_text": "ตรวจหาข้อความจากรูปภาพ",
"upload_modal.edit_media": "แก้ไขสื่อ",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.hint": "คลิกหรือลากวงกลมในตัวอย่างเพื่อเลือกจุดโฟกัส ซึ่งจะอยู่ในมุมมองของภาพขนาดย่อทั้งหมดเสมอ",
"upload_modal.preview_label": "ตัวอย่าง ({ratio})",
"upload_progress.label": "กำลังอัปโหลด...",
"video.close": "ปิดวิดีโอ",
+ "video.download": "ดาวน์โหลดไฟล์",
"video.exit_fullscreen": "ออกจากเต็มหน้าจอ",
"video.expand": "ขยายวิดีโอ",
"video.fullscreen": "เต็มหน้าจอ",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 5ceefa182..f6495bd63 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -1,11 +1,15 @@
{
- "account.add_or_remove_from_list": "Listeye ekle veya kaldır",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Listelere ekle veya kaldır",
"account.badges.bot": "Bot",
+ "account.badges.group": "Grup",
"account.block": "@{name} adlı kişiyi engelle",
"account.block_domain": "{domain} alanından her şeyi gizle",
"account.blocked": "Engellenmiş",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Takip isteğini iptal et",
- "account.direct": "Mesaj gönder : @{name}",
+ "account.direct": "Mesaj gönder @{name}",
"account.domain_blocked": "Alan adı gizlendi",
"account.edit_profile": "Profili düzenle",
"account.endorse": "Profildeki özellik",
@@ -17,7 +21,7 @@
"account.follows_you": "Seni takip ediyor",
"account.hide_reblogs": "@{name} kişisinin yinelemelerini gizle",
"account.last_status": "Son aktivite",
- "account.link_verified_on": "Bu bağlantının mülkiyeti {date} tarihinde kontrol edildi",
+ "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi",
"account.locked_info": "Bu hesabın gizlilik durumu kilitli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini elle inceliyor.",
"account.media": "Medya",
"account.mention": "@{name} kullanıcısından bahset",
@@ -26,8 +30,8 @@
"account.mute_notifications": "@{name} adlı kişinin bildirimlerini kapat",
"account.muted": "Susturuldu",
"account.never_active": "Asla",
- "account.posts": "Gönderi",
- "account.posts_with_replies": "Gönderiler ve yanıtlar",
+ "account.posts": "Toot",
+ "account.posts_with_replies": "Tootlar ve cevaplar",
"account.report": "@{name} adlı kişiyi bildir",
"account.requested": "Onay Bekleniyor. Takip isteğini iptal etmek için tıklayın",
"account.share": "@{name} kullanıcısının profilini paylaş",
@@ -35,13 +39,18 @@
"account.unblock": "@{name} adlı kişinin engelini kaldır",
"account.unblock_domain": "{domain} göster",
"account.unendorse": "Profilde özellik yok",
- "account.unfollow": "Takipi bırak",
+ "account.unfollow": "Takibi bırak",
"account.unmute": "@{name} adlı kişinin sesini aç",
"account.unmute_notifications": "@{name} adlı kişinin bildirimlerini aç",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Lütfen sonra tekrar deneyin {retry_time, time, medium}.",
"alert.rate_limited.title": "Oran sınırlıdır",
"alert.unexpected.message": "Beklenmedik bir hata oluştu.",
"alert.unexpected.title": "Hay aksi!",
+ "announcement.announcement": "Duyuru",
"autosuggest_hashtag.per_week": "Haftada {count}",
"boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsiniz",
"bundle_column_error.body": "Bu bileşen yüklenirken bir şeyler ters gitti.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.",
"bundle_modal_error.retry": "Tekrar deneyin",
"column.blocks": "Engellenen kullanıcılar",
+ "column.bookmarks": "Yer imleri",
"column.community": "Yerel zaman tüneli",
"column.direct": "Doğrudan mesajlar",
"column.directory": "Profillere göz at",
@@ -61,7 +71,7 @@
"column.lists": "Listeler",
"column.mutes": "Susturulmuş kullanıcılar",
"column.notifications": "Bildirimler",
- "column.pins": "Sabitlenmiş gönderi",
+ "column.pins": "Sabitlenmiş tootlar",
"column.public": "Federe zaman tüneli",
"column_back_button.label": "Geri",
"column_header.hide_settings": "Ayarları gizle",
@@ -71,10 +81,12 @@
"column_header.show_settings": "Ayarları göster",
"column_header.unpin": "Sabitlemeyi kaldır",
"column_subheading.settings": "Ayarlar",
+ "community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Sadece medya",
- "compose_form.direct_message_warning": "Bu gönderi sadece belirtilen kullanıcılara gönderilecektir.",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "Bu toot sadece belirtilen kullanıcılara gönderilecektir.",
"compose_form.direct_message_warning_learn_more": "Daha fazla bilgi edinin",
- "compose_form.hashtag_warning": "Bu paylaşım liste dışı olduğu için hiç bir hashtag'de yer almayacak. Sadece herkese açık gönderiler hashtaglerde bulunabilir.",
+ "compose_form.hashtag_warning": "Bu toot liste dışı olduğu için hiç bir etikette yer almayacak. Sadece herkese açık tootlar etiketlerde bulunabilir.",
"compose_form.lock_disclaimer": "Hesabınız {locked} değil. Sadece takipçilerle paylaştığınız gönderileri görebilmek için sizi herhangi bir kullanıcı takip edebilir.",
"compose_form.lock_disclaimer.lock": "kilitli",
"compose_form.placeholder": "Aklınızdan ne geçiyor?",
@@ -82,7 +94,9 @@
"compose_form.poll.duration": "Anket süresi",
"compose_form.poll.option_placeholder": "Seçim {number}",
"compose_form.poll.remove_option": "Bu seçimi kaldır",
- "compose_form.publish": "Gönder",
+ "compose_form.poll.switch_to_multiple": "Birden çok seçeneğe izin vermek için anketi değiştir",
+ "compose_form.poll.switch_to_single": "Tek bir seçeneğe izin vermek için anketi değiştir",
+ "compose_form.publish": "Tootla",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Medyayı hassas olarak işaretle",
"compose_form.sensitive.marked": "Medya hassas olarak işaretlendi",
@@ -135,14 +149,15 @@
"emoji_button.search_results": "Arama sonuçları",
"emoji_button.symbols": "Semboller",
"emoji_button.travel": "Seyahat ve Yerler",
- "empty_column.account_timeline": "Burada hiç gönderi yok!",
+ "empty_column.account_timeline": "Burada hiç toot yok!",
"empty_column.account_unavailable": "Profil kullanılamıyor",
"empty_column.blocks": "Henüz bir kullanıcıyı engellemediniz.",
+ "empty_column.bookmarked_statuses": "Hiç işaretlediğiniz tootunuz yok. Bir tane olduğunda burada görünecek.",
"empty_column.community": "Yerel zaman çizelgesi boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın!",
"empty_column.direct": "Henüz doğrudan mesajınız yok. Bir tane gönderdiğinizde veya aldığınızda burada görünecektir.",
"empty_column.domain_blocks": "Henüz hiçbir gizli alan adı yok.",
- "empty_column.favourited_statuses": "Hiç favori gönderiminiz yok. Bir tane olursa burada görünecek.",
- "empty_column.favourites": "Kimse bu gönderiyi favorilerine eklememiş. Biri eklerse burada görünecek.",
+ "empty_column.favourited_statuses": "Hiç favori tootunuz yok. Bir tane olduğunda burada görünecek.",
+ "empty_column.favourites": "Kimse bu tootu favorilerine eklememiş. Biri eklediğinde burada görünecek.",
"empty_column.follow_requests": "Hiç takip isteğiniz yok. Bir tane aldığınızda burada görünecek.",
"empty_column.hashtag": "Henüz bu hashtag’e sahip hiçbir gönderi yok.",
"empty_column.home": "Henüz kimseyi takip etmiyorsunuz. {public} ziyaret edebilir veya arama kısmını kullanarak diğer kullanıcılarla iletişime geçebilirsiniz.",
@@ -158,6 +173,7 @@
"errors.unexpected_crash.report_issue": "Sorun bildir",
"follow_request.authorize": "Yetkilendir",
"follow_request.reject": "Reddet",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers": "Geliştiriciler",
"getting_started.directory": "Profil dizini",
"getting_started.documentation": "Belgeler",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Temel",
"home.column_settings.show_reblogs": "Boost edilenleri göster",
"home.column_settings.show_replies": "Cevapları göster",
+ "home.hide_announcements": "Duyuruları gizle",
+ "home.show_announcements": "Duyuruları göster",
"intervals.full.days": "{number, plural, one {# gün} other {# gün}}",
"intervals.full.hours": "{number, plural, one {# saat} other {# saat}}",
"intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}",
@@ -190,11 +208,11 @@
"introduction.federation.local.text": "Aynı sunucudaki kişilerin gönderileri yerel zaman tünelinde gözükecektir.",
"introduction.interactions.action": "Öğreticiyi bitirin!",
"introduction.interactions.favourite.headline": "Favori",
- "introduction.interactions.favourite.text": "Bir gönderiyi favorilerinize alarak sonrası için saklayabilirsiniz ve yazara gönderiyi beğendiğinizi söyleyebilirsiniz.",
+ "introduction.interactions.favourite.text": "Bir tootu favorilerinize alarak sonrası için saklayabilirsiniz ve yazara tootu beğendiğinizi söyleyebilirsiniz.",
"introduction.interactions.reblog.headline": "Yinele",
- "introduction.interactions.reblog.text": "Başkalarının gönderilerini boostlayarak kendi takipçilerinizle paylaşabillirsiniz.",
+ "introduction.interactions.reblog.text": "Başkalarının tootlarını yineleyerek onları kendi takipçilerinizle paylaşabillirsiniz.",
"introduction.interactions.reply.headline": "Yanıt",
- "introduction.interactions.reply.text": "Başkalarının gönderilerini ve kendi gönderilerinizi yanıtlayabilirsiniz. Bir konuşmada zincirli bir şekilde olacaklardır.",
+ "introduction.interactions.reply.text": "Başkalarının ve kendinizin tootlarına cevap verebilirsiniz. Bu, onları bir konuşmada zincirli bir şekilde gösterecektir.",
"introduction.welcome.action": "Hadi gidelim!",
"introduction.welcome.headline": "İlk adımlar",
"introduction.welcome.text": "Krallığa hoş geldiniz! Az sonra, geniş bir sunucu yelpazesinde mesaj gönderip arkadaşlarınızla konuşabileceksiniz. Ama bu sunucu, {domain}, özel (profilinizi barındırır, bu yüzden adresini hatırlayın).",
@@ -219,15 +237,17 @@
"keyboard_shortcuts.muted": "susturulmuş kullanıcı listesini açmak için",
"keyboard_shortcuts.my_profile": "profilinizi açmak için",
"keyboard_shortcuts.notifications": "bildirimler sütununu açmak için",
- "keyboard_shortcuts.pinned": "sabitlenmiş gönderiler listesini açmak için",
+ "keyboard_shortcuts.open_media": "medyayı açmak için",
+ "keyboard_shortcuts.pinned": "sabitlenmiş tootların listesini açmak için",
"keyboard_shortcuts.profile": "yazarın profilini açmak için",
"keyboard_shortcuts.reply": "cevaplamak için",
"keyboard_shortcuts.requests": "takip istekleri listesini açmak için",
"keyboard_shortcuts.search": "aramaya odaklanmak için",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "\"başlayın\" sütununu açmak için",
"keyboard_shortcuts.toggle_hidden": "CW'den önceki yazıyı göstermek/gizlemek için",
"keyboard_shortcuts.toggle_sensitivity": "medyayı göstermek/gizlemek için",
- "keyboard_shortcuts.toot": "yeni bir gönderiye başlamak için",
+ "keyboard_shortcuts.toot": "yeni bir toot başlatmak için",
"keyboard_shortcuts.unfocus": "aramada bir gönderiye odaklanmamak için",
"keyboard_shortcuts.up": "listede yukarıya çıkmak için",
"lightbox.close": "Kapat",
@@ -251,8 +271,9 @@
"mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?",
"navigation_bar.apps": "Mobil uygulamalar",
"navigation_bar.blocks": "Engellenen kullanıcılar",
+ "navigation_bar.bookmarks": "Yer imleri",
"navigation_bar.community_timeline": "Yerel zaman tüneli",
- "navigation_bar.compose": "Yeni bir gönderi yazın",
+ "navigation_bar.compose": "Yeni toot oluştur",
"navigation_bar.direct": "Direkt Mesajlar",
"navigation_bar.discover": "Keşfet",
"navigation_bar.domain_blocks": "Gizli alan adları",
@@ -267,13 +288,15 @@
"navigation_bar.logout": "Çıkış",
"navigation_bar.mutes": "Sessize alınmış kullanıcılar",
"navigation_bar.personal": "Kişisel",
- "navigation_bar.pins": "Sabitlenmiş gönderiler",
+ "navigation_bar.pins": "Sabitlenmiş tootlar",
"navigation_bar.preferences": "Tercihler",
"navigation_bar.public_timeline": "Federe zaman tüneli",
"navigation_bar.security": "Güvenlik",
"notification.favourite": "{name} senin durumunu favorilere ekledi",
"notification.follow": "{name} seni takip ediyor",
+ "notification.follow_request": "{name} sizi takip etme isteği gönderdi",
"notification.mention": "{name} senden bahsetti",
+ "notification.own_poll": "Anketiniz sona erdi",
"notification.poll": "Oy verdiğiniz bir anket bitti",
"notification.reblog": "{name} senin durumunu boost etti",
"notifications.clear": "Bildirimleri temizle",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Hızlı filtre çubuğu",
"notifications.column_settings.filter_bar.show": "Göster",
"notifications.column_settings.follow": "Yeni takipçiler:",
+ "notifications.column_settings.follow_request": "Yeni takip istekleri:",
"notifications.column_settings.mention": "Bahsedilenler:",
"notifications.column_settings.poll": "Anket sonuçları:",
"notifications.column_settings.push": "Push bildirimleri",
@@ -322,6 +346,7 @@
"relative_time.just_now": "şimdi",
"relative_time.minutes": "{number}dk",
"relative_time.seconds": "{number}sn",
+ "relative_time.today": "bugün",
"reply_indicator.cancel": "İptal",
"report.forward": "Şu kişiye ilet : {target}",
"report.forward_hint": "Bu hesap başka bir sunucudan. Anonimleştirilmiş bir rapor oraya da gönderilsin mi?",
@@ -338,12 +363,13 @@
"search_popout.tips.user": "kullanıcı",
"search_results.accounts": "İnsanlar",
"search_results.hashtags": "Hashtagler",
- "search_results.statuses": "Gönderiler",
- "search_results.statuses_fts_disabled": "Bu Mastodon sunucusunda gönderi içeriğine göre arama etkin değil.",
+ "search_results.statuses": "Tootlar",
+ "search_results.statuses_fts_disabled": "Bu Mastodon sunucusunda toot içeriğine göre arama etkin değil.",
"search_results.total": "{count, number} {count, plural, one {sonuç} other {sonuçlar}}",
"status.admin_account": "@{name} için denetim arayüzünü açın",
"status.admin_status": "Denetim arayüzünde bu durumu açın",
"status.block": "Engelle : @{name}",
+ "status.bookmark": "Yer imlerine ekle",
"status.cancel_reblog_private": "Boost'u geri al",
"status.cannot_reblog": "Bu gönderi boost edilemez",
"status.copy": "Bağlantı durumunu kopyala",
@@ -361,15 +387,16 @@
"status.mute_conversation": "Yazışmayı sustur",
"status.open": "Bu gönderiyi genişlet",
"status.pin": "Profile sabitle",
- "status.pinned": "Sabitlenmiş gönderi",
+ "status.pinned": "Sabitlenmiş toot",
"status.read_more": "Daha dazla oku",
"status.reblog": "Boostla",
"status.reblog_private": "Orjinal kitleye yinele",
"status.reblogged_by": "{name} boost etti",
- "status.reblogs.empty": "Kimse bu gönderiyi boostlamadı. Biri yaptığında burada gözükecek.",
+ "status.reblogs.empty": "Henüz kimse bu tootu yinelemedi. Biri yaptığında burada görünecek.",
"status.redraft": "Sil & tekrar taslakla",
+ "status.remove_bookmark": "Yer imini kaldır",
"status.reply": "Cevapla",
- "status.replyAll": "Konuşmayı cevapla",
+ "status.replyAll": "Mesaj dizisini cevapla",
"status.report": "@{name}'i raporla",
"status.sensitive_warning": "Hassas içerik",
"status.share": "Paylaş",
@@ -377,7 +404,7 @@
"status.show_less_all": "Hepsi için daha az göster",
"status.show_more": "Daha fazla göster",
"status.show_more_all": "Hepsi için daha fazla göster",
- "status.show_thread": "Başlığı göster",
+ "status.show_thread": "Mesaj dizisini göster",
"status.uncached_media_warning": "Mevcut değil",
"status.unmute_conversation": "Sohbeti aç",
"status.unpin": "Profilden sabitlemeyi kaldır",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "{number, plural, one {# dakika} other {# dakika}} kaldı",
"time_remaining.moments": "Sadece birkaç dakika kaldı",
"time_remaining.seconds": "{number, plural, one {# saniye} other {# saniye}} kaldı",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {kişi} other {kişi}} konuşuyor",
"trends.trending_now": "Şu an popüler",
"ui.beforeunload": "Mastodon'dan ayrılırsanız taslağınız kaybolacak.",
@@ -400,9 +431,11 @@
"upload_button.label": "Görsel ekle",
"upload_error.limit": "Dosya yükleme sınırı aşıldı.",
"upload_error.poll": "Anketlerde dosya yüklemesine izin verilmez.",
+ "upload_form.audio_description": "İşitme kaybı olan kişiler için tarif edin",
"upload_form.description": "Görme engelliler için açıklama",
"upload_form.edit": "Düzenle",
"upload_form.undo": "Geri al",
+ "upload_form.video_description": "İşitme kaybı veya görme engeli olan kişiler için tarif edin",
"upload_modal.analyzing_picture": "Resmi analiz ediyor…",
"upload_modal.apply": "Uygula",
"upload_modal.description_placeholder": "Pijamalı hasta yağız şoföre çabucak güvendi",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Ön izleme ({ratio})",
"upload_progress.label": "Yükleniyor...",
"video.close": "Videoyu kapat",
+ "video.download": "Dosyayı indir",
"video.exit_fullscreen": "Tam ekrandan çık",
"video.expand": "Videoyu genişlet",
"video.fullscreen": "Tam ekran",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 6501c0283..2115aeec5 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -1,20 +1,24 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "Додати або видалити зі списків",
"account.badges.bot": "Бот",
+ "account.badges.group": "Група",
"account.block": "Заблокувати @{name}",
"account.block_domain": "Заглушити {domain}",
"account.blocked": "Заблоковані",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Скасувати запит на підписку",
"account.direct": "Пряме повідомлення @{name}",
"account.domain_blocked": "Домен приховано",
"account.edit_profile": "Редагувати профіль",
- "account.endorse": "Feature on profile",
+ "account.endorse": "Публікувати у профілі",
"account.follow": "Підписатися",
"account.followers": "Підписники",
"account.followers.empty": "Ніхто ще не підписався на цього користувача.",
"account.follows": "Підписки",
"account.follows.empty": "Цей користувач ще ні на кого не підписався.",
- "account.follows_you": "Підписаний(-а) на Вас",
+ "account.follows_you": "Підписаний(-а) на вас",
"account.hide_reblogs": "Сховати передмухи від @{name}",
"account.last_status": "Крайня активність",
"account.link_verified_on": "Права власності на це посилання були перевірені {date}",
@@ -30,18 +34,23 @@
"account.posts_with_replies": "Дмухи й відповіді",
"account.report": "Поскаржитися на @{name}",
"account.requested": "Очікує підтвердження. Натисніть щоб відмінити запит",
- "account.share": "Поширити профіль @{name}",
+ "account.share": "Поділитися профілем @{name}",
"account.show_reblogs": "Показати передмухи від @{name}",
"account.unblock": "Розблокувати @{name}",
"account.unblock_domain": "Розблокувати {domain}",
- "account.unendorse": "Don't feature on profile",
+ "account.unendorse": "Не публікувати у профілі",
"account.unfollow": "Відписатися",
"account.unmute": "Зняти глушення з @{name}",
"account.unmute_notifications": "Показувати сповіщення від @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "Спробуйте ще раз через {retry_time, time, medium}.",
"alert.rate_limited.title": "Швидкість обмежена",
"alert.unexpected.message": "Трапилась неочікувана помилка.",
"alert.unexpected.title": "Ой!",
+ "announcement.announcement": "Оголошення",
"autosuggest_hashtag.per_week": "{count} в тиждень",
"boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу",
"bundle_column_error.body": "Щось пішло не так під час завантаження компоненту.",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "Щось пішло не так під час завантаження компоненту.",
"bundle_modal_error.retry": "Спробувати ще раз",
"column.blocks": "Заблоковані користувачі",
+ "column.bookmarks": "Закладки",
"column.community": "Локальна стрічка",
"column.direct": "Прямі повідомлення",
"column.directory": "Переглянути профілі",
@@ -71,17 +81,21 @@
"column_header.show_settings": "Показати налаштування",
"column_header.unpin": "Відкріпити",
"column_subheading.settings": "Налаштування",
+ "community.column_settings.local_only": "Тільки локальні",
"community.column_settings.media_only": "Тільки медіа",
+ "community.column_settings.remote_only": "Тільки видалені",
"compose_form.direct_message_warning": "Цей дмух буде видимий тільки згаданим користувачам.",
"compose_form.direct_message_warning_learn_more": "Дізнатися більше",
"compose_form.hashtag_warning": "Цей дмух не буде відображений у жодній стрічці хештеґу, оскільки він прихований. Тільки публічні дмухи можуть бути знайдені за хештеґом.",
- "compose_form.lock_disclaimer": "Ваш акаунт не {locked}. Кожен може підписатися на Вас та бачити Ваші приватні пости.",
+ "compose_form.lock_disclaimer": "Ваш акаунт не {locked}. Будь-який користувач може підписатися на вас та переглядати ваші приватні пости.",
"compose_form.lock_disclaimer.lock": "приватний",
- "compose_form.placeholder": "Що у Вас на думці?",
+ "compose_form.placeholder": "Що у вас на думці?",
"compose_form.poll.add_option": "Додати варіант",
"compose_form.poll.duration": "Тривалість опитування",
"compose_form.poll.option_placeholder": "Варіант {number}",
"compose_form.poll.remove_option": "Видалити цей варіант",
+ "compose_form.poll.switch_to_multiple": "Перемкнути у режим вибору декількох відповідей",
+ "compose_form.poll.switch_to_single": "Перемкнути у режим вибору однієї відповіді",
"compose_form.publish": "Дмухнути",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Позначити медіа як дражливе",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "Вийти",
"confirmations.logout.message": "Ви впевнені, що хочете вийти?",
"confirmations.mute.confirm": "Заглушити",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "Це приховає пости від них і пости зі згадками про них, проте вони все одно матимуть змогу бачити ваші пости і підписуватися на вас.",
"confirmations.mute.message": "Ви впевнені, що хочете заглушити {name}?",
"confirmations.redraft.confirm": "Видалити та перестворити",
"confirmations.redraft.message": "Ви впевнені, що хочете видалити допис і перестворити його? Ви втратите всі відповіді, передмухи та вподобайки допису.",
@@ -114,7 +128,7 @@
"conversation.delete": "Видалити цю бесіду",
"conversation.mark_as_read": "Позначити як прочитане",
"conversation.open": "Переглянути бесіду",
- "conversation.with": "With {names}",
+ "conversation.with": "З {names}",
"directory.federated": "З відомого федесвіту",
"directory.local": "Тільки з домену {domain}",
"directory.new_arrivals": "Нові надходження",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "Тут дмухалок немає!",
"empty_column.account_unavailable": "Профіль недоступний",
"empty_column.blocks": "Ви ще не заблокували жодного користувача.",
+ "empty_column.bookmarked_statuses": "У вас ще немає дмухів у закладках. Коли ви щось додасте до заклкдок, воно з'явиться тут.",
"empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!",
"empty_column.direct": "У вас ще немає прямих повідомлень. Коли ви відправите чи отримаєте якесь, воно з'явиться тут.",
"empty_column.domain_blocks": "Тут поки немає прихованих доменів.",
@@ -152,12 +167,13 @@
"empty_column.mutes": "Ви ще не заглушили жодного користувача.",
"empty_column.notifications": "У вас ще немає сповіщень. Переписуйтесь з іншими користувачами, щоб почати розмову.",
"empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "Ця сторінка не може бути коректно відображена через баґ у нашому коді або через проблему сумісності браузера.",
+ "error.unexpected_crash.next_steps": "Спробуйте перезавантажити сторінку. Якщо це не допоможе, ви все ще зможете використовувати Mastodon через інший браузер або рідний додаток.",
+ "errors.unexpected_crash.copy_stacktrace": "Скопіювати трасування стека у буфер обміну",
+ "errors.unexpected_crash.report_issue": "Повідомити про проблему",
"follow_request.authorize": "Авторизувати",
"follow_request.reject": "Відмовити",
+ "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, працівники {domain} припускають, що, можливо, ви хотіли б переглянути ці запити на підписку.",
"getting_started.developers": "Розробникам",
"getting_started.directory": "Каталог профілів",
"getting_started.documentation": "Документація",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "Основні",
"home.column_settings.show_reblogs": "Показувати передмухи",
"home.column_settings.show_replies": "Показувати відповіді",
+ "home.hide_announcements": "Приховати оголошення",
+ "home.show_announcements": "Показати оголошення",
"intervals.full.days": "{number, plural, one {# день} few {# дні} other {# днів}}",
"intervals.full.hours": "{number, plural, one {# година} few {# години} other {# годин}}",
"intervals.full.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "відкрити список заглушених користувачів",
"keyboard_shortcuts.my_profile": "відкрити ваш профіль",
"keyboard_shortcuts.notifications": "відкрити колонку сповіщень",
+ "keyboard_shortcuts.open_media": "відкрити медіа",
"keyboard_shortcuts.pinned": "відкрити список закріплених дмухів",
"keyboard_shortcuts.profile": "відкрити профіль автора",
"keyboard_shortcuts.reply": "відповісти",
"keyboard_shortcuts.requests": "відкрити список бажаючих підписатися",
"keyboard_shortcuts.search": "сфокусуватися на пошуку",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "відкрити колонку \"Початок\"",
"keyboard_shortcuts.toggle_hidden": "показати/приховати текст під попередженням",
"keyboard_shortcuts.toggle_sensitivity": "показати/приховати медіа",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "Приховати сповіщення від користувача?",
"navigation_bar.apps": "Мобільні додатки",
"navigation_bar.blocks": "Заблоковані користувачі",
+ "navigation_bar.bookmarks": "Закладки",
"navigation_bar.community_timeline": "Локальна стрічка",
"navigation_bar.compose": "Написати новий дмух",
"navigation_bar.direct": "Прямі повідомлення",
@@ -272,8 +293,10 @@
"navigation_bar.public_timeline": "Глобальна стрічка",
"navigation_bar.security": "Безпека",
"notification.favourite": "{name} вподобав(-ла) ваш допис",
- "notification.follow": "{name} підписався(-лась) на Вас",
- "notification.mention": "{name} згадав(-ла) Вас",
+ "notification.follow": "{name} підписався(-лась) на вас",
+ "notification.follow_request": "{name} відправив(-ла) запит на підписку",
+ "notification.mention": "{name} згадав(-ла) вас",
+ "notification.own_poll": "Ваше опитування завершено",
"notification.poll": "Опитування, у якому ви голосували, закінчилося",
"notification.reblog": "{name} передмухнув(-ла) Ваш допис",
"notifications.clear": "Очистити сповіщення",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "Панель швидкого фільтру",
"notifications.column_settings.filter_bar.show": "Показати",
"notifications.column_settings.follow": "Нові підписники:",
+ "notifications.column_settings.follow_request": "Нові запити на підписку:",
"notifications.column_settings.mention": "Згадки:",
"notifications.column_settings.poll": "Результати опитування:",
"notifications.column_settings.push": "Push-сповіщення",
@@ -299,10 +323,10 @@
"notifications.group": "{count} сповіщень",
"poll.closed": "Закрито",
"poll.refresh": "Оновити",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, one {# особа} other {# осіб}}",
"poll.total_votes": "{count, plural, one {# голос} few {# голоси} many {# голосів} other {# голосів}}",
"poll.vote": "Проголосувати",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "Ви голосували за цю відповідь",
"poll_button.add_poll": "Додати опитування",
"poll_button.remove_poll": "Видалити опитування",
"privacy.change": "Змінити видимість допису",
@@ -322,10 +346,11 @@
"relative_time.just_now": "щойно",
"relative_time.minutes": "{number}х",
"relative_time.seconds": "{number}с",
+ "relative_time.today": "сьогодні",
"reply_indicator.cancel": "Відмінити",
"report.forward": "Надіслати до {target}",
- "report.forward_hint": "Це аккаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?",
- "report.hint": "Скаргу буде відправлено модераторам Вашого сайту. Ви можете надати їм пояснення, чому ви скаржитесь на аккаунт нижче:",
+ "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?",
+ "report.hint": "Скаргу буде відправлено модераторам Вашого сайту. Ви можете надати їм пояснення, чому ви скаржитесь на акаунт нижче:",
"report.placeholder": "Додаткові коментарі",
"report.submit": "Відправити",
"report.target": "Скаржимося на {target}",
@@ -344,6 +369,7 @@
"status.admin_account": "Відкрити інтерфейс модерації для @{name}",
"status.admin_status": "Відкрити цей статус в інтерфейсі модерації",
"status.block": "Заблокувати @{name}",
+ "status.bookmark": "Додати в закладки",
"status.cancel_reblog_private": "Відмінити передмухання",
"status.cannot_reblog": "Цей допис не може бути передмухнутий",
"status.copy": "Копіювати посилання до статусу",
@@ -354,7 +380,7 @@
"status.favourite": "Подобається",
"status.filtered": "Відфільтровано",
"status.load_more": "Завантажити більше",
- "status.media_hidden": "Медіаконтент приховано",
+ "status.media_hidden": "Медіа приховано",
"status.mention": "Згадати @{name}",
"status.more": "Більше",
"status.mute": "Заглушити @{name}",
@@ -368,15 +394,16 @@
"status.reblogged_by": "{name} передмухнув(-ла)",
"status.reblogs.empty": "Ніхто ще не передмухнув цього дмуху. Коли якісь користувачі це зроблять, вони будуть відображені тут.",
"status.redraft": "Видалити та перестворити",
+ "status.remove_bookmark": "Видалити закладку",
"status.reply": "Відповісти",
"status.replyAll": "Відповісти на ланцюжок",
"status.report": "Поскаржитися на @{name}",
"status.sensitive_warning": "Дражливий зміст",
"status.share": "Поділитися",
"status.show_less": "Згорнути",
- "status.show_less_all": "Show less for all",
+ "status.show_less_all": "Показувати менше для всіх",
"status.show_more": "Розгорнути",
- "status.show_more_all": "Show more for all",
+ "status.show_more_all": "Показувати більше для всіх",
"status.show_thread": "Показати ланцюжок",
"status.uncached_media_warning": "Недоступно",
"status.unmute_conversation": "Зняти глушення з діалогу",
@@ -391,18 +418,24 @@
"time_remaining.days": "{number, plural, one {# день} few {# дні} other {# днів}}",
"time_remaining.hours": "{number, plural, one {# година} few {# години} other {# годин}}",
"time_remaining.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}",
- "time_remaining.moments": "Moments remaining",
+ "time_remaining.moments": "Залишилось секунд",
"time_remaining.seconds": "{number, plural, one {# секунда} few {# секунди} other {# секунд}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {людина} few {людини} many {людей} other {людей}} обговорюють це",
"trends.trending_now": "Актуальні",
"ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.",
"upload_area.title": "Перетягніть сюди, щоб завантажити",
- "upload_button.label": "Додати медіаконтент ({formats})",
+ "upload_button.label": "Додати медіа ({formats})",
"upload_error.limit": "Ліміт завантаження файлів перевищено.",
"upload_error.poll": "Не можна завантажувати файли до опитувань.",
+ "upload_form.audio_description": "Опишіть для людей із вадами слуху",
"upload_form.description": "Опишіть для людей з вадами зору",
"upload_form.edit": "Змінити",
"upload_form.undo": "Видалити",
+ "upload_form.video_description": "Опишіть для людей із вадами слуху або зору",
"upload_modal.analyzing_picture": "Аналізуємо малюнок…",
"upload_modal.apply": "Застосувати",
"upload_modal.description_placeholder": "Щурячий бугай із їжаком-харцизом в'ючись підписали ґешефт у єнах",
@@ -412,6 +445,7 @@
"upload_modal.preview_label": "Переглянути ({ratio})",
"upload_progress.label": "Завантаження...",
"video.close": "Закрити відео",
+ "video.download": "Завантаження файла",
"video.exit_fullscreen": "Вийти з повноекранного режиму",
"video.expand": "Розширити відео",
"video.fullscreen": "На весь екран",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
new file mode 100644
index 000000000..79e2bfaf1
--- /dev/null
+++ b/app/javascript/mastodon/locales/ur.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "فہرست میں شامل یا برطرف کریں",
+ "account.badges.bot": "روبوٹ",
+ "account.badges.group": "Group",
+ "account.block": "مسدود @{name}",
+ "account.block_domain": "{domain} سے سب چھپائیں",
+ "account.blocked": "مسدود کردہ",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "درخواستِ پیروی منسوخ کریں",
+ "account.direct": "راست پیغام @{name}",
+ "account.domain_blocked": "پوشیدہ ڈومین",
+ "account.edit_profile": "مشخص ترمیم کریں",
+ "account.endorse": "مشکص پر نمایاں کریں",
+ "account.follow": "پیروی کریں",
+ "account.followers": "پیروکار",
+ "account.followers.empty": "\"ہنوز اس صارف کی کوئی پیروی نہیں کرتا\".",
+ "account.follows": "پیروی کرتے ہیں",
+ "account.follows.empty": "\"یہ صارف ہنوز کسی کی پیروی نہیں کرتا ہے\".",
+ "account.follows_you": "آپ کا پیروکار ہے",
+ "account.hide_reblogs": "@{name} سے فروغ چھپائیں",
+ "account.last_status": "آخری فعال",
+ "account.link_verified_on": "اس لنک کی ملکیت کی توثیق {date} پر کی گئی تھی",
+ "account.locked_info": "اس اکاونٹ کا اخفائی ضابطہ مقفل ہے۔ صارف کی پیروی کون کر سکتا ہے اس کا جائزہ وہ خود لیتا ہے.",
+ "account.media": "وسائل",
+ "account.mention": "ذکر @{name}",
+ "account.moved_to": "{name} منتقل ہگیا ہے بہ:",
+ "account.mute": "خاموش @{name}",
+ "account.mute_notifications": "@{name} سے اطلاعات خاموش کریں",
+ "account.muted": "خاموش کردہ",
+ "account.never_active": "کبھی نہیں",
+ "account.posts": "ٹوٹ",
+ "account.posts_with_replies": "ٹوٹ اور جوابات",
+ "account.report": "@{name} اطلاع کریں",
+ "account.requested": "منظوری کا منتظر۔ درخواستِ پیروی منسوخ کرنے کیلئے کلک کریں",
+ "account.share": "@{name} کے مشخص کو بانٹیں",
+ "account.show_reblogs": "@{name} کی افزائشات کو دکھائیں",
+ "account.unblock": "@{name} کو بحال کریں",
+ "account.unblock_domain": "{domain} کو نہ چھپائیں",
+ "account.unendorse": "مشخص پر نمایاں نہ کریں",
+ "account.unfollow": "پیروی ترک کریں",
+ "account.unmute": "@{name} کو با آواز کریں",
+ "account.unmute_notifications": "@{name} سے اطلاعات کو با آواز کریں",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "\"{retry_time, time, medium} کے بعد کوشش کریں\".",
+ "alert.rate_limited.title": "Rate limited",
+ "alert.unexpected.message": "ایک غیر متوقع سہو ہوا ہے.",
+ "alert.unexpected.title": "ا رے!",
+ "announcement.announcement": "Announcement",
+ "autosuggest_hashtag.per_week": "{count} فی ہفتہ",
+ "boost_modal.combo": "آئیندہ یہ نہ دیکھنے کیلئے آپ {combo} دبا سکتے ہیں",
+ "bundle_column_error.body": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.",
+ "bundle_column_error.retry": "دوبارہ کوشش کریں",
+ "bundle_column_error.title": "نیٹ ورک کی خرابی",
+ "bundle_modal_error.close": "بند کریں",
+ "bundle_modal_error.message": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.",
+ "bundle_modal_error.retry": "دوبارہ کوشش کریں",
+ "column.blocks": "مسدود صارفین",
+ "column.bookmarks": "Bookmarks",
+ "column.community": "مقامی زمانی جدول",
+ "column.direct": "راست پیغام",
+ "column.directory": "مشخصات کا مطالعہ کریں",
+ "column.domain_blocks": "پوشیدہ ڈومین",
+ "column.favourites": "پسندیدہ",
+ "column.follow_requests": "پیروی درخواست",
+ "column.home": "خانہ",
+ "column.lists": "فہرستیں",
+ "column.mutes": "خاموش کردہ صارفین",
+ "column.notifications": "اطلاعات",
+ "column.pins": "چسپاں ٹوٹ",
+ "column.public": "مجموعی زمانی جدول",
+ "column_back_button.label": "واپس",
+ "column_header.hide_settings": "ترتیبات کو چھپائیں",
+ "column_header.moveLeft_settings": "کالم کو بائیں جانب منتقل کریں",
+ "column_header.moveRight_settings": "کالم کو دائیں جانب منتقل کریں",
+ "column_header.pin": "چسپاں کریں",
+ "column_header.show_settings": "ترتیبات دکھائیں",
+ "column_header.unpin": "رہا کریں",
+ "column_subheading.settings": "ترتیبات",
+ "community.column_settings.local_only": "Local only",
+ "community.column_settings.media_only": "وسائل فقط",
+ "community.column_settings.remote_only": "Remote only",
+ "compose_form.direct_message_warning": "یہ ٹوٹ صرف مذکورہ صارفین کو بھیجا جائے گا.",
+ "compose_form.direct_message_warning_learn_more": "مزید جانیں",
+ "compose_form.hashtag_warning": "چونکہ یہ ٹوٹ غیر مندرجہ ہے لہذا یہ کسی بھی ہیش ٹیگ کے تحت درج نہیں کیا جائے گا. ہیش ٹیگ کے تحت صرف \nعمومی ٹوٹ تلاش کئے جا سکتے ہیں.",
+ "compose_form.lock_disclaimer": "آپ کا اکاؤنٹ {locked} نہیں ہے. کوئی بھی آپ کے مخصوص برائے پیروکار ٹوٹ دیکھنے کی خاطر آپ کی پیروی کر سکتا ہے.",
+ "compose_form.lock_disclaimer.lock": "مقفل",
+ "compose_form.placeholder": "آپ کیا سوچ رہے ہیں؟",
+ "compose_form.poll.add_option": "انتخاب شامل کریں",
+ "compose_form.poll.duration": "مدتِ رائے",
+ "compose_form.poll.option_placeholder": "انتخاب {number}",
+ "compose_form.poll.remove_option": "یہ انتخاب ہٹا دیں",
+ "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+ "compose_form.publish": "ٹوٹ",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "وسائل کو حساس نشاندہ کریں",
+ "compose_form.sensitive.marked": "وسائل حساس نشاندہ ہے",
+ "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.spoiler.marked": "Text is hidden behind warning",
+ "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler_placeholder": "Write your warning here",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.logout.confirm": "Log out",
+ "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+ "confirmations.reply.confirm": "Reply",
+ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.unfollow.confirm": "Unfollow",
+ "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "conversation.delete": "Delete conversation",
+ "conversation.mark_as_read": "Mark as read",
+ "conversation.open": "View conversation",
+ "conversation.with": "With {names}",
+ "directory.federated": "From known fediverse",
+ "directory.local": "From {domain} only",
+ "directory.new_arrivals": "New arrivals",
+ "directory.recently_active": "Recently active",
+ "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.preview": "Here is what it will look like:",
+ "emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
+ "emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "یہاں کوئی نوٹس نہیں ہیں!",
+ "empty_column.account_unavailable": "مشخص دستیاب نہیں ہے",
+ "empty_column.blocks": "آپ نے ابھی کسی صارف کو مسدود نہیں کیا ہے.",
+ "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "empty_column.community": "مقامی جدول خالی ہے. کچھ تحریر کریں تاکہ بات آگے بڑھے!",
+ "empty_column.direct": "آپ کیلئے کوئی راست پیغام نہیں ہے. جب آپ بھیجیں گے یا وصول کریں گے، یہاں نظر آئےگا.",
+ "empty_column.domain_blocks": "ابھی تک کوئی چھپا ہوا ڈومین نہیں ہے.",
+ "empty_column.favourited_statuses": "آپ کا کوئی پسندیدہ ٹوٹ نہیں ہے. جب آپ پسند کریں گے، یہاں نظر آئےگا.",
+ "empty_column.favourites": "ابھی تک کسی نے بھی اس ٹوٹ کو پسند نہیں کیا ہے. جب بھی کوئی اسے پسند کرے گا، ان کا نام یہاں نظر آئے گا.",
+ "empty_column.follow_requests": "ابھی تک آپ کی پیری کرنے کی درخواست نہیں کی ہے. جب کوئی درخواست کرے گا، ان کا نام یہاں نظر آئے گا.",
+ "empty_column.hashtag": "ابھی یہ ہیش ٹیگ خالی ہے.",
+ "empty_column.home": "آپ کا خانگی جدول خالی ہے! {public} دیکھیں یا شروعات کیلئے تلاش کریں اور دیگر صارفین سے ملیں.",
+ "empty_column.home.public_timeline": "جدولِ عام",
+ "empty_column.list": "یہ فہرست ابھی خالی ہے. جب اس فہرست کے ارکان کچھ تحریر کریں گے، یہاں نظر آئے گا.",
+ "empty_column.lists": "ابھی آپ کی کوئی فہرست نہیں ہے. جب آپ بنائیں گے، وہ یہاں نظر آئے گی.",
+ "empty_column.mutes": "آپ نے ابھی کسی صارف کو خاموش نہیں کیا ہے.",
+ "empty_column.notifications": "ابھی آپ کیلئے کوئی اطلاعات نہیں ہیں. گفتگو شروع کرنے کے لئے دیگر صارفین سے متعامل ہوں.",
+ "empty_column.public": "یہاں کچھ بھی نہیں ہے! کچھ عمومی تحریر کریں یا اس جگہ کو پُر کرنے کے لئے از خود دیگر سرورس کے صارفین کی پیروی کریں",
+ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+ "error.unexpected_crash.next_steps": "صفحے کو تازہ کرنے کی کوشش کریں. اگر کارآمد نہ ہو تو آپ کسی دیگر براؤزر یا مقامی ایپ سے ہنوز ماسٹوڈون استعمال کر سکتے ہیں.",
+ "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+ "errors.unexpected_crash.report_issue": "مسئلہ کی اطلاع کریں",
+ "follow_request.authorize": "اجازت دیں",
+ "follow_request.reject": "انکار کریں",
+ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "getting_started.developers": "Developers",
+ "getting_started.directory": "فہرست مشخصات",
+ "getting_started.documentation": "اسناد",
+ "getting_started.heading": "آغاز کریں",
+ "getting_started.invite": "دوستوں کو دعوت دیں",
+ "getting_started.open_source_notice": "ماسٹوڈون آزاد منبع سوفٹویر ہے. آپ {github} گِٹ ہب پر مسائل میں معاونت یا مشکلات کی اطلاع دے سکتے ہیں.",
+ "getting_started.security": "ترتیباتِ اکاؤنٹ",
+ "getting_started.terms": "شرائط خدمات",
+ "hashtag.column_header.tag_mode.all": "اور {additional}",
+ "hashtag.column_header.tag_mode.any": "یا {additional}",
+ "hashtag.column_header.tag_mode.none": "بغیر {additional}",
+ "hashtag.column_settings.select.no_options_message": "کوئی ترغیبات نہیں ملیں",
+ "hashtag.column_settings.select.placeholder": "ہیش ٹیگ داخل کریں…",
+ "hashtag.column_settings.tag_mode.all": "یہ تمام",
+ "hashtag.column_settings.tag_mode.any": "ان میں سے کوئی",
+ "hashtag.column_settings.tag_mode.none": "ان میں سے کوئی بھی نہیں",
+ "hashtag.column_settings.tag_toggle": "اس کالم کے لئے مزید ٹیگز شامل کریں",
+ "home.column_settings.basic": "بنیادی",
+ "home.column_settings.show_reblogs": "افزائشات دکھائیں",
+ "home.column_settings.show_replies": "جوابات دکھائیں",
+ "home.hide_announcements": "Hide announcements",
+ "home.show_announcements": "Show announcements",
+ "intervals.full.days": "{number, plural, one {# روز} other {# روز}}",
+ "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}",
+ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "introduction.federation.action": "اگلا",
+ "introduction.federation.federated.headline": "مجموعی",
+ "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+ "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+ "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "introduction.interactions.action": "Finish toot-orial!",
+ "introduction.interactions.favourite.headline": "Favourite",
+ "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.reply.headline": "Reply",
+ "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+ "introduction.welcome.action": "Let's go!",
+ "introduction.welcome.headline": "First steps",
+ "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "to move down in the list",
+ "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.open_media": "to open media",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "to move up in the list",
+ "lightbox.close": "Close",
+ "lightbox.next": "Next",
+ "lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "Add to list",
+ "lists.account.remove": "Remove from list",
+ "lists.delete": "Delete list",
+ "lists.edit": "Edit list",
+ "lists.edit.submit": "Change title",
+ "lists.new.create": "Add list",
+ "lists.new.title_placeholder": "New list title",
+ "lists.search": "Search among people you follow",
+ "lists.subheading": "Your lists",
+ "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "loading_indicator.label": "Loading...",
+ "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
+ "missing_indicator.label": "Not found",
+ "missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.bookmarks": "Bookmarks",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Direct messages",
+ "navigation_bar.discover": "Discover",
+ "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.edit_profile": "Edit profile",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.filters": "Muted words",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.info": "About this server",
+ "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "navigation_bar.lists": "Lists",
+ "navigation_bar.logout": "Logout",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.preferences": "Preferences",
+ "navigation_bar.public_timeline": "Federated timeline",
+ "navigation_bar.security": "Security",
+ "notification.favourite": "{name} favourited your status",
+ "notification.follow": "{name} followed you",
+ "notification.follow_request": "{name} has requested to follow you",
+ "notification.mention": "{name} mentioned you",
+ "notification.own_poll": "Your poll has ended",
+ "notification.poll": "A poll you have voted in has ended",
+ "notification.reblog": "{name} boosted your status",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.filter_bar.advanced": "Display all categories",
+ "notifications.column_settings.filter_bar.category": "Quick filter bar",
+ "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.follow_request": "New follow requests:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.filter.all": "All",
+ "notifications.filter.boosts": "Boosts",
+ "notifications.filter.favourites": "Favourites",
+ "notifications.filter.follows": "Follows",
+ "notifications.filter.mentions": "Mentions",
+ "notifications.filter.polls": "Poll results",
+ "notifications.group": "{count} notifications",
+ "poll.closed": "Closed",
+ "poll.refresh": "Refresh",
+ "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.vote": "Vote",
+ "poll.voted": "You voted for this answer",
+ "poll_button.add_poll": "Add a poll",
+ "poll_button.remove_poll": "Remove poll",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "refresh": "Refresh",
+ "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "now",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "relative_time.today": "today",
+ "reply_indicator.cancel": "Cancel",
+ "report.forward": "Forward to {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Report {target}",
+ "search.placeholder": "Search",
+ "search_popout.search_format": "Advanced search format",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "user",
+ "search_results.accounts": "People",
+ "search_results.hashtags": "Hashtags",
+ "search_results.statuses": "Toots",
+ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.admin_account": "Open moderation interface for @{name}",
+ "status.admin_status": "Open this status in the moderation interface",
+ "status.block": "Block @{name}",
+ "status.bookmark": "Bookmark",
+ "status.cancel_reblog_private": "Unboost",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.copy": "Copy link to status",
+ "status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Direct message @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Favourite",
+ "status.filtered": "Filtered",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mention @{name}",
+ "status.more": "More",
+ "status.mute": "Mute @{name}",
+ "status.mute_conversation": "Mute conversation",
+ "status.open": "Expand this status",
+ "status.pin": "Pin on profile",
+ "status.pinned": "Pinned toot",
+ "status.read_more": "Read more",
+ "status.reblog": "Boost",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.redraft": "Delete & re-draft",
+ "status.remove_bookmark": "Remove bookmark",
+ "status.reply": "Reply",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_warning": "Sensitive content",
+ "status.share": "Share",
+ "status.show_less": "Show less",
+ "status.show_less_all": "Show less for all",
+ "status.show_more": "Show more",
+ "status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
+ "status.uncached_media_warning": "Not available",
+ "status.unmute_conversation": "Unmute conversation",
+ "status.unpin": "Unpin from profile",
+ "suggestions.dismiss": "Dismiss suggestion",
+ "suggestions.header": "You might be interested in…",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Home",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "tabs_bar.search": "Search",
+ "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+ "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+ "time_remaining.moments": "Moments remaining",
+ "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "trends.trending_now": "Trending now",
+ "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Add images, a video or an audio file",
+ "upload_error.limit": "File upload limit exceeded.",
+ "upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.audio_description": "Describe for people with hearing loss",
+ "upload_form.description": "Describe for the visually impaired",
+ "upload_form.edit": "Edit",
+ "upload_form.undo": "Delete",
+ "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+ "upload_modal.analyzing_picture": "Analyzing picture…",
+ "upload_modal.apply": "Apply",
+ "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+ "upload_modal.detect_text": "Detect text from picture",
+ "upload_modal.edit_media": "Edit media",
+ "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_progress.label": "Uploading…",
+ "video.close": "Close video",
+ "video.download": "Download file",
+ "video.exit_fullscreen": "Exit full screen",
+ "video.expand": "Expand video",
+ "video.fullscreen": "Full screen",
+ "video.hide": "Hide video",
+ "video.mute": "Mute sound",
+ "video.pause": "Pause",
+ "video.play": "Play",
+ "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
new file mode 100644
index 000000000..3bdd8c233
--- /dev/null
+++ b/app/javascript/mastodon/locales/vi.json
@@ -0,0 +1,457 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "Thêm hoặc Xóa khỏi danh sách",
+ "account.badges.bot": "Bot",
+ "account.badges.group": "Nhóm",
+ "account.block": "Chặn @{name}",
+ "account.block_domain": "Chặn miền {domain}",
+ "account.blocked": "Đã chặn",
+ "account.browse_more_on_origin_server": "Tìm những tài khoản có liên quan",
+ "account.cancel_follow_request": "Hủy yêu cầu theo dõi",
+ "account.direct": "Nhắn tin cho @{name}",
+ "account.domain_blocked": "Đã chặn miền",
+ "account.edit_profile": "Chỉnh sửa hồ sơ",
+ "account.endorse": "Hiển thị trên trang cá nhân",
+ "account.follow": "Theo dõi",
+ "account.followers": "Người theo dõi",
+ "account.followers.empty": "Chưa có người theo dõi.",
+ "account.follows": "Đang theo dõi",
+ "account.follows.empty": "Người dùng này chưa theo dõi ai.",
+ "account.follows_you": "Đang theo dõi bạn",
+ "account.hide_reblogs": "Ẩn chia sẻ từ @{name}",
+ "account.last_status": "Hoạt động gần đây",
+ "account.link_verified_on": "Liên kết này đã được xác thực vào {date}",
+ "account.locked_info": "Người dùng này thiết lập trạng thái ẩn. Họ sẽ tự mình xét duyệt các yêu cầu mến mộ.",
+ "account.media": "Ảnh & Video",
+ "account.mention": "Nhắc đến @{name}",
+ "account.moved_to": "{name} đã dời sang:",
+ "account.mute": "Ẩn @{name}",
+ "account.mute_notifications": "Tắt thông báo từ @{name}",
+ "account.muted": "Đã ẩn",
+ "account.never_active": "Chưa có bất cứ hoạt động nào",
+ "account.posts": "Tút",
+ "account.posts_with_replies": "Tút và trả lời",
+ "account.report": "Báo cáo @{name}",
+ "account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi",
+ "account.share": "Chia sẻ hồ sơ @{name}",
+ "account.show_reblogs": "Hiện chia sẻ từ @{name}",
+ "account.unblock": "Bỏ chặn @{name}",
+ "account.unblock_domain": "Bỏ chặn miền {domain}",
+ "account.unendorse": "Không hiện trên trang cá nhân",
+ "account.unfollow": "Ngừng theo dõi",
+ "account.unmute": "Bỏ ẩn @{name}",
+ "account.unmute_notifications": "Hiển lại thông báo từ @{name}",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "Vui lòng thử lại sau {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Vượt giới hạn",
+ "alert.unexpected.message": "Đã xảy ra lỗi không mong muốn.",
+ "alert.unexpected.title": "Ốiii!",
+ "announcement.announcement": "Thông báo",
+ "autosuggest_hashtag.per_week": "{count} mỗi tuần",
+ "boost_modal.combo": "Lần sau, bạn có thể nhấn {combo} để bỏ qua",
+ "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.",
+ "bundle_column_error.retry": "Thử lại",
+ "bundle_column_error.title": "Lỗi mạng",
+ "bundle_modal_error.close": "Đóng",
+ "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.",
+ "bundle_modal_error.retry": "Thử lại",
+ "column.blocks": "Người dùng đã chặn",
+ "column.bookmarks": "Tút đã lưu",
+ "column.community": "Máy chủ của bạn",
+ "column.direct": "Nhắn tin",
+ "column.directory": "Tìm một ai đó",
+ "column.domain_blocks": "Máy chủ đã chặn",
+ "column.favourites": "Tâm đắc",
+ "column.follow_requests": "Yêu cầu theo dõi",
+ "column.home": "Bảng tin",
+ "column.lists": "Danh sách",
+ "column.mutes": "Người dùng đã chặn",
+ "column.notifications": "Thông báo",
+ "column.pins": "Tút ghim",
+ "column.public": "Dòng thời gian liên kết",
+ "column_back_button.label": "Quay lại",
+ "column_header.hide_settings": "Ẩn cài đặt",
+ "column_header.moveLeft_settings": "Dời cột sang bên trái",
+ "column_header.moveRight_settings": "Dời cột sang bên phải",
+ "column_header.pin": "Ghim",
+ "column_header.show_settings": "Hiển thị cài đặt",
+ "column_header.unpin": "Không ghim",
+ "column_subheading.settings": "Cài đặt",
+ "community.column_settings.local_only": "Chỉ miền của bạn",
+ "community.column_settings.media_only": "Chỉ ảnh/video",
+ "community.column_settings.remote_only": "Chỉ người dùng ở miền khác",
+ "compose_form.direct_message_warning": "Tút này sẽ chỉ gửi cho người được nhắc đến.",
+ "compose_form.direct_message_warning_learn_more": "Tìm hiểu thêm",
+ "compose_form.hashtag_warning": "Tút này sẽ không xuất hiện công khai khi tìm kiếm theo chủ đề. Chỉ Tút công khai có thể được tìm kiếm theo chủ đề.",
+ "compose_form.lock_disclaimer": "Tài khoản của bạn không {locked}. Bất cứ ai cũng có thể theo dõi bạn để xem bài viết dành riêng cho người theo dõi của bạn.",
+ "compose_form.lock_disclaimer.lock": "khóa",
+ "compose_form.placeholder": "Bạn đang nghĩ gì?",
+ "compose_form.poll.add_option": "Thêm lựa chọn",
+ "compose_form.poll.duration": "Thời hạn",
+ "compose_form.poll.option_placeholder": "Lựa chọn {number}",
+ "compose_form.poll.remove_option": "Xóa lựa chọn này",
+ "compose_form.poll.switch_to_multiple": "Sửa thăm dò để cho phép nhiều lựa chọn",
+ "compose_form.poll.switch_to_single": "Sửa thăm dò để cho phép một lựa chọn",
+ "compose_form.publish": "Tút",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Đánh dấu là nội dung nhạy cảm",
+ "compose_form.sensitive.marked": "Nội dung đã đánh dấu nhạy cảm",
+ "compose_form.sensitive.unmarked": "Nội dung không đánh dấu nhạy cảm",
+ "compose_form.spoiler.marked": "Văn bản ẩn sau cảnh báo",
+ "compose_form.spoiler.unmarked": "Văn bản không ẩn sau spoil",
+ "compose_form.spoiler_placeholder": "Viết cảnh báo của bạn ở đây",
+ "confirmation_modal.cancel": "Hủy bỏ",
+ "confirmations.block.block_and_report": "Chặn & Báo cáo",
+ "confirmations.block.confirm": "Chặn",
+ "confirmations.block.message": "Bạn có chắc chắn muốn chặn {name}?",
+ "confirmations.delete.confirm": "Xóa bỏ",
+ "confirmations.delete.message": "Bạn có chắc chắn muốn xóa tút này?",
+ "confirmations.delete_list.confirm": "Xóa bỏ",
+ "confirmations.delete_list.message": "Bạn có chắc chắn muốn xóa vĩnh viễn danh sách này?",
+ "confirmations.domain_block.confirm": "Ẩn toàn bộ miền",
+ "confirmations.domain_block.message": "Bạn có chắc chắn rằng muốn ẩn toàn bộ nội dung từ {domain}? Sẽ hợp lý hơn nếu bạn chỉ chặn hoặc ẩn một vài tài khoản cụ thể. Ẩn toàn bộ nội dung từ máy chủ sẽ khiến bạn không còn thấy nội dung từ máy chủ đó ở bất kỳ nơi nào, kể cả thông báo. Người quan tâm bạn từ máy chủ đó cũng sẽ bị xóa luôn.",
+ "confirmations.logout.confirm": "Đăng xuất",
+ "confirmations.logout.message": "Bạn có chắc chắn bạn muốn thoát?",
+ "confirmations.mute.confirm": "Ẩn",
+ "confirmations.mute.explanation": "Điều này sẽ khiến tút của người đó và những tút có đề cập đến họ bị ẩn, tuy nhiên vẫn cho phép họ xem bài đăng của bạn và mến mộ bạn.",
+ "confirmations.mute.message": "Bạn có chắc chắn muốn ẩn {name}?",
+ "confirmations.redraft.confirm": "Xóa & viết lại",
+ "confirmations.redraft.message": "Bạn có chắc chắn muốn xóa tút và viết lại? Điều này sẽ xóa mất những lượt tâm đắc và chia sẻ của tút, cũng như những phản hồi sẽ không còn nội dung gốc.",
+ "confirmations.reply.confirm": "Trả lời",
+ "confirmations.reply.message": "Nội dung bạn đang soạn thảo sẽ bị ghi đè, bạn có tiếp tục?",
+ "confirmations.unfollow.confirm": "Ngưng theo dõi",
+ "confirmations.unfollow.message": "Bạn có chắc chắn muốn ngưng theo dõi {name}?",
+ "conversation.delete": "Xóa tin nhắn này",
+ "conversation.mark_as_read": "Đánh dấu là đã đọc",
+ "conversation.open": "Xem tin nhắn",
+ "conversation.with": "Với {names}",
+ "directory.federated": "Từ mạng liên kết",
+ "directory.local": "Chỉ từ {domain}",
+ "directory.new_arrivals": "Gia nhập gần đây",
+ "directory.recently_active": "Hoạt động gần đây",
+ "embed.instructions": "Sao chép đoạn mã dưới đây và chèn vào trang web của bạn.",
+ "embed.preview": "Nó sẽ hiển thị như vầy:",
+ "emoji_button.activity": "Hoạt động",
+ "emoji_button.custom": "Riêng",
+ "emoji_button.flags": "Cờ",
+ "emoji_button.food": "Ăn uống",
+ "emoji_button.label": "Chèn emoji",
+ "emoji_button.nature": "Thiên nhiên",
+ "emoji_button.not_found": "Không tìm thấy emoji! (°□°)",
+ "emoji_button.objects": "Đồ vật",
+ "emoji_button.people": "Người",
+ "emoji_button.recent": "Thường dùng",
+ "emoji_button.search": "Tìm kiếm...",
+ "emoji_button.search_results": "Kết quả tìm kiếm",
+ "emoji_button.symbols": "Biểu tượng",
+ "emoji_button.travel": "Du lịch",
+ "empty_column.account_timeline": "Chưa có tút nào!",
+ "empty_column.account_unavailable": "Tài khoản không còn nữa",
+ "empty_column.blocks": "Bạn chưa chặn bất cứ ai.",
+ "empty_column.bookmarked_statuses": "Bạn chưa lưu tút nào. Nếu có, nó sẽ hiển thị ở đây.",
+ "empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!",
+ "empty_column.direct": "Bạn chưa có tin nhắn nào. Khi bạn gửi hoặc nhận tin nhắn, nó sẽ hiển thị ở đây.",
+ "empty_column.domain_blocks": "Chưa ẩn bất kỳ máy chủ nào.",
+ "empty_column.favourited_statuses": "Bạn chưa tâm đắc tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.",
+ "empty_column.favourites": "Chưa có ai tâm đắc tút này.",
+ "empty_column.follow_requests": "Bạn chưa có yêu cầu theo dõi nào. Khi có yêu cầu mới, nó sẽ xuất hiện ở đây.",
+ "empty_column.hashtag": "Chưa có bài đăng nào về chủ đề này.",
+ "empty_column.home": "Chưa có bất cứ gì! Hãy bắt đầu bằng cách tìm kiếm hoặc truy cập {public} để mến mộ những người bạn thích.",
+ "empty_column.home.public_timeline": "tút công khai",
+ "empty_column.list": "Chưa có gì trong danh sách. Khi thành viên của danh sách này đăng tút mới, chúng mới xuất hiện ở đây.",
+ "empty_column.lists": "Bạn không có danh sách nào.",
+ "empty_column.mutes": "Bạn chưa ẩn người dùng nào.",
+ "empty_column.notifications": "Bạn chưa có thông báo nào. Hãy thử mến mộ hoặc nhắn tin cho một ai đó mà bạn thích.",
+ "empty_column.public": "Trống trơn! Bạn hãy viết gì đó hoặc bắt đầu mến mộ người dùng khác",
+ "error.unexpected_crash.explanation": "Trang này có thể không hiển thị chính xác do lỗi lập trình Mastodon hoặc vấn đề tương thích trình duyệt.",
+ "error.unexpected_crash.next_steps": "Hãy thử làm mới trang. Nếu vẫn không được, bạn hãy vào Mastodon bằng một ứng dụng di động hoặc trình duyệt khác.",
+ "errors.unexpected_crash.copy_stacktrace": "Sao chép stacktrace vào clipboard",
+ "errors.unexpected_crash.report_issue": "Báo cáo lỗi",
+ "follow_request.authorize": "Cho phép",
+ "follow_request.reject": "Từ chối",
+ "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu mến mộ từ những người khác.",
+ "getting_started.developers": "Nhà phát triển",
+ "getting_started.directory": "Danh sách người dùng",
+ "getting_started.documentation": "Tài liệu",
+ "getting_started.heading": "Dành cho người mới",
+ "getting_started.invite": "Mời bạn bè",
+ "getting_started.open_source_notice": "Mastodon là phần mềm mã nguồn mở. Bạn có thể đóng góp hoặc báo lỗi trên GitHub tại {github}.",
+ "getting_started.security": "Bảo mật",
+ "getting_started.terms": "Điều khoản dịch vụ",
+ "hashtag.column_header.tag_mode.all": "và {additional}",
+ "hashtag.column_header.tag_mode.any": "hoặc {additional}",
+ "hashtag.column_header.tag_mode.none": "mà không {additional}",
+ "hashtag.column_settings.select.no_options_message": "Không tìm thấy đề xuất nào",
+ "hashtag.column_settings.select.placeholder": "Nhập chủ đề…",
+ "hashtag.column_settings.tag_mode.all": "Toàn bộ",
+ "hashtag.column_settings.tag_mode.any": "Một phần",
+ "hashtag.column_settings.tag_mode.none": "Không chọn",
+ "hashtag.column_settings.tag_toggle": "Bao gồm thêm chủ đề cho cột này",
+ "home.column_settings.basic": "Cơ bản",
+ "home.column_settings.show_reblogs": "Hiện tút chia sẻ",
+ "home.column_settings.show_replies": "Hiện phản hồi",
+ "home.hide_announcements": "Ẩn thông báo",
+ "home.show_announcements": "Hiện thông báo",
+ "intervals.full.days": "{number} days",
+ "intervals.full.hours": "{number} hours",
+ "intervals.full.minutes": "{number} minutes",
+ "introduction.federation.action": "Tiếp theo",
+ "introduction.federation.federated.headline": "Mạng liên kết",
+ "introduction.federation.federated.text": "Nếu máy chủ của bạn có liên kết với các máy chủ khác, bài đăng công khai từ họ sẽ xuất hiện ở Mạng liên kết.",
+ "introduction.federation.home.headline": "Bảng tin",
+ "introduction.federation.home.text": "Bảng tin là nơi hiển thị bài đăng từ những người bạn mến mộ. Bạn có thể mến mộ bất cứ ai trên bất cứ máy chủ nào!",
+ "introduction.federation.local.headline": "Máy chủ của bạn",
+ "introduction.federation.local.text": "Máy chủ của bạn là nơi hiển thị bài đăng công khai từ những người thuộc cùng một máy chủ của bạn.",
+ "introduction.interactions.action": "Tôi đã hiểu rồi!",
+ "introduction.interactions.favourite.headline": "Tâm đắc",
+ "introduction.interactions.favourite.text": "Tâm đắc một tút có nghĩa là bạn thích tút đó và lưu giữ để sau này xem lại.",
+ "introduction.interactions.reblog.headline": "Chia sẻ",
+ "introduction.interactions.reblog.text": "Với tính năng chia sẻ, bạn có thể chia sẻ tút của người khác với những người mến mộ bạn.",
+ "introduction.interactions.reply.headline": "Trả lời",
+ "introduction.interactions.reply.text": "Bạn có thể trả lời tút của những người khác và tút của bạn, từ đó tạo nên những cuộc hội thoại.",
+ "introduction.welcome.action": "Bắt đầu nào!",
+ "introduction.welcome.headline": "Hướng dẫn người mới",
+ "introduction.welcome.text": "Chào mừng bạn đến mạng xã hội liên hợp! Tại đây bạn có thể đăng tải nội dung và trao đổi với bạn bè của mình trên các máy chủ khác nhau. Máy chủ {domain} là nơi lưu trữ trang cá nhân của bạn.",
+ "keyboard_shortcuts.back": "trở lại",
+ "keyboard_shortcuts.blocked": "mở danh sách người dùng đã chặn",
+ "keyboard_shortcuts.boost": "chia sẻ",
+ "keyboard_shortcuts.column": "mở các mục",
+ "keyboard_shortcuts.compose": "mở khung soạn tút",
+ "keyboard_shortcuts.description": "Mô tả",
+ "keyboard_shortcuts.direct": "mở mục tin nhắn",
+ "keyboard_shortcuts.down": "di chuyển xuống dưới danh sách",
+ "keyboard_shortcuts.enter": "viết tút mới",
+ "keyboard_shortcuts.favourite": "tâm đắc",
+ "keyboard_shortcuts.favourites": "mở danh sách tâm đắc",
+ "keyboard_shortcuts.federated": "mở mạng liên kết",
+ "keyboard_shortcuts.heading": "Các phím tắt",
+ "keyboard_shortcuts.home": "mở bảng tin",
+ "keyboard_shortcuts.hotkey": "Phím tắt",
+ "keyboard_shortcuts.legend": "hiện bảng hướng dẫn này",
+ "keyboard_shortcuts.local": "mở máy chủ của bạn",
+ "keyboard_shortcuts.mention": "nhắc đến người dùng",
+ "keyboard_shortcuts.muted": "mở danh sách người dùng đã ẩn",
+ "keyboard_shortcuts.my_profile": "mở trang cá nhân của bạn",
+ "keyboard_shortcuts.notifications": "mở mục thông báo",
+ "keyboard_shortcuts.open_media": "mở ảnh hoặc video",
+ "keyboard_shortcuts.pinned": "mở danh sách tút ghim",
+ "keyboard_shortcuts.profile": "mở trang cá nhân của người viết tút",
+ "keyboard_shortcuts.reply": "trả lời",
+ "keyboard_shortcuts.requests": "mở danh sách yêu cầu mến mộ",
+ "keyboard_shortcuts.search": "mở tìm kiếm",
+ "keyboard_shortcuts.spoilers": "Hiện/ẩn nội dung nhạy cảm",
+ "keyboard_shortcuts.start": "mở mục \"Dành cho người mới\"",
+ "keyboard_shortcuts.toggle_hidden": "ẩn/hiện văn bản bên dưới spoil",
+ "keyboard_shortcuts.toggle_sensitivity": "ẩn/hiện ảnh hoặc video",
+ "keyboard_shortcuts.toot": "viết tút mới",
+ "keyboard_shortcuts.unfocus": "đưa con trỏ ra khỏi ô soạn thảo hoặc ô tìm kiếm",
+ "keyboard_shortcuts.up": "di chuyển lên trên danh sách",
+ "lightbox.close": "Đóng",
+ "lightbox.next": "Tiếp",
+ "lightbox.previous": "Trước",
+ "lightbox.view_context": "Xem nội dung",
+ "lists.account.add": "Thêm vào danh sách",
+ "lists.account.remove": "Xóa khỏi danh sách",
+ "lists.delete": "Xóa danh sách",
+ "lists.edit": "Sửa danh sách",
+ "lists.edit.submit": "Thay đổi tiêu đề",
+ "lists.new.create": "Thêm vào danh sách",
+ "lists.new.title_placeholder": "Tên danh sách mới",
+ "lists.search": "Tìm kiếm những người mà bạn mến mộ",
+ "lists.subheading": "Danh sách của bạn",
+ "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "loading_indicator.label": "Đang tải...",
+ "media_gallery.toggle_visible": "Ẩn {number, plural, one {image} other {images}}",
+ "missing_indicator.label": "Không tìm thấy",
+ "missing_indicator.sublabel": "Không tìm thấy cái này",
+ "mute_modal.hide_notifications": "Ẩn thông báo từ người dùng này?",
+ "navigation_bar.apps": "Apps",
+ "navigation_bar.blocks": "Người dùng đã chặn",
+ "navigation_bar.bookmarks": "Đã lưu",
+ "navigation_bar.community_timeline": "Máy chủ của bạn",
+ "navigation_bar.compose": "Soạn tút mới",
+ "navigation_bar.direct": "Tin nhắn",
+ "navigation_bar.discover": "Cộng đồng",
+ "navigation_bar.domain_blocks": "Máy chủ đã ẩn",
+ "navigation_bar.edit_profile": "Chỉnh sửa trang cá nhân",
+ "navigation_bar.favourites": "Những thứ tâm đắc",
+ "navigation_bar.filters": "Bộ lọc từ ngữ",
+ "navigation_bar.follow_requests": "Yêu cầu theo dõi",
+ "navigation_bar.follows_and_followers": "Đang theo dõi và người theo dõi bạn",
+ "navigation_bar.info": "Về máy chủ này",
+ "navigation_bar.keyboard_shortcuts": "Phím tắt",
+ "navigation_bar.lists": "Danh sách",
+ "navigation_bar.logout": "Đăng xuất",
+ "navigation_bar.mutes": "Người dùng đã chặn",
+ "navigation_bar.personal": "Cá nhân",
+ "navigation_bar.pins": "Tút ghim",
+ "navigation_bar.preferences": "Tùy chỉnh",
+ "navigation_bar.public_timeline": "Dòng thời gian liên kết",
+ "navigation_bar.security": "Bảo mật",
+ "notification.favourite": "{name} vừa tâm đắc tút của bạn",
+ "notification.follow": "{name} đã theo dõi bạn",
+ "notification.follow_request": "{name} đã yêu cầu theo dõi bạn",
+ "notification.mention": "{name} nhắc đến bạn",
+ "notification.own_poll": "Cuộc thăm dò của bạn đã kết thúc",
+ "notification.poll": "Một cuộc thăm dò mà bạn tham gia đã kết thúc",
+ "notification.reblog": "{name} chia sẻ tút của bạn",
+ "notifications.clear": "Xóa thông báo",
+ "notifications.clear_confirmation": "Bạn có chắc chắn muốn xóa vĩnh viễn tất cả thông báo của mình?",
+ "notifications.column_settings.alert": "Thông báo trên máy tính",
+ "notifications.column_settings.favourite": "Tâm đắc:",
+ "notifications.column_settings.filter_bar.advanced": "Hiển thị toàn bộ",
+ "notifications.column_settings.filter_bar.category": "Lọc nhanh",
+ "notifications.column_settings.filter_bar.show": "Hiện",
+ "notifications.column_settings.follow": "Người theo dõi mới:",
+ "notifications.column_settings.follow_request": "Yêu cầu theo dõi mới:",
+ "notifications.column_settings.mention": "Nhắc đến:",
+ "notifications.column_settings.poll": "Kết quả cuộc thăm dò:",
+ "notifications.column_settings.push": "Thông báo đẩy",
+ "notifications.column_settings.reblog": "Chia sẻ:",
+ "notifications.column_settings.show": "Hiện trong cột",
+ "notifications.column_settings.sound": "Mở tiếng",
+ "notifications.filter.all": "Toàn bộ",
+ "notifications.filter.boosts": "Chia sẻ",
+ "notifications.filter.favourites": "Tâm đắc",
+ "notifications.filter.follows": "Đang theo dõi",
+ "notifications.filter.mentions": "Nhắc đến",
+ "notifications.filter.polls": "Kết quả cuộc thăm dò",
+ "notifications.group": "{count} thông báo",
+ "poll.closed": "Đóng",
+ "poll.refresh": "Làm mới",
+ "poll.total_people": "{count, plural, other {}}",
+ "poll.total_votes": "{count, plural, one {# bình chọn} other {# bình chọn}}",
+ "poll.vote": "Cuộc thăm dò",
+ "poll.voted": "Bạn đã bình chọn cho câu trả lời này",
+ "poll_button.add_poll": "Tạo thăm dò",
+ "poll_button.remove_poll": "Hủy thăm dò",
+ "privacy.change": "Thay đổi quyền riêng tư",
+ "privacy.direct.long": "Chỉ người được nhắc đến mới thấy",
+ "privacy.direct.short": "Tin nhắn",
+ "privacy.private.long": "Chỉ dành cho người theo dõi",
+ "privacy.private.short": "Chỉ người theo dõi",
+ "privacy.public.long": "Đăng lên các dòng thời gian công cộng",
+ "privacy.public.short": "Công khai",
+ "privacy.unlisted.long": "Không đăng lên các dòng thời gian công cộng",
+ "privacy.unlisted.short": "Mở",
+ "refresh": "Làm mới",
+ "regeneration_indicator.label": "Đang tải…",
+ "regeneration_indicator.sublabel": "Bảng tin của bạn đang được cập nhật!",
+ "relative_time.days": "{number} ngày",
+ "relative_time.hours": "{number} giờ",
+ "relative_time.just_now": "vừa xong",
+ "relative_time.minutes": "{number}p",
+ "relative_time.seconds": "{number}s",
+ "relative_time.today": "hôm nay",
+ "reply_indicator.cancel": "Hủy bỏ",
+ "report.forward": "Chuyển đến {target}",
+ "report.forward_hint": "Người dùng này ở máy chủ khác. Gửi một báo xấu ẩn danh tới máy chủ đó?",
+ "report.hint": "Hãy cho quản trị viên biết lý do tại sao bạn lại báo xấu tài khoản này:",
+ "report.placeholder": "Bổ sung thêm",
+ "report.submit": "Gửi đi",
+ "report.target": "Báo xấu {target}",
+ "search.placeholder": "Tìm kiếm",
+ "search_popout.search_format": "Tìm kiếm nâng cao",
+ "search_popout.tips.full_text": "Nội dung trả về bao gồm các tút do bạn viết, thích, đã chia sẻ hoặc được nhắc đến. Cũng như địa chỉ người dùng, tên hiển thị lẫn chủ đề.",
+ "search_popout.tips.hashtag": "chủ đề",
+ "search_popout.tips.status": "tút",
+ "search_popout.tips.text": "Nội dung trả về là địa chỉ người dùng, tên hiển thị và hashtag",
+ "search_popout.tips.user": "người dùng",
+ "search_results.accounts": "Người dùng",
+ "search_results.hashtags": "Chủ đề",
+ "search_results.statuses": "Tút",
+ "search_results.statuses_fts_disabled": "Máy chủ của bạn không bật chức năng tìm kiếm tút.",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.admin_account": "Mở giao diện quản trị @{name}",
+ "status.admin_status": "Mở tút này trong giao diện quản trị",
+ "status.block": "Chặn @{name}",
+ "status.bookmark": "Lưu",
+ "status.cancel_reblog_private": "Hủy chia sẻ",
+ "status.cannot_reblog": "Không thể chia sẻ tút này",
+ "status.copy": "Sao chép URL tút",
+ "status.delete": "Xóa",
+ "status.detailed_status": "Xem chi tiết thêm",
+ "status.direct": "Nhắn riêng @{name}",
+ "status.embed": "Nhúng",
+ "status.favourite": "Tâm đắc",
+ "status.filtered": "Bộ lọc",
+ "status.load_more": "Xem thêm",
+ "status.media_hidden": "Ảnh/video đã ẩn",
+ "status.mention": "Nhắc đến @{name}",
+ "status.more": "Thêm",
+ "status.mute": "Ẩn @{name}",
+ "status.mute_conversation": "Không quan tâm nữa",
+ "status.open": "Xem nguyên văn",
+ "status.pin": "Ghim lên trang cá nhân",
+ "status.pinned": "Tút đã ghim",
+ "status.read_more": "Đọc thêm",
+ "status.reblog": "Chia sẻ",
+ "status.reblog_private": "Chia sẻ với người viết tút gốc",
+ "status.reblogged_by": "{name} chia sẻ",
+ "status.reblogs.empty": "Chưa ai chia sẻ Tút này. Nếu có, nó sẽ xuất hiện ở đây.",
+ "status.redraft": "Xóa và viết lại",
+ "status.remove_bookmark": "Hủy lưu",
+ "status.reply": "Trả lời",
+ "status.replyAll": "Trả lời tất cả",
+ "status.report": "Báo xấu @{name}",
+ "status.sensitive_warning": "Nội dung nhạy cảm",
+ "status.share": "Chia sẻ",
+ "status.show_less": "Thu gọn",
+ "status.show_less_all": "Thu gọn tất cả",
+ "status.show_more": "Mở rộng",
+ "status.show_more_all": "Hiển thị tất cả",
+ "status.show_thread": "Hiện thêm",
+ "status.uncached_media_warning": "N/A",
+ "status.unmute_conversation": "Quan tâm",
+ "status.unpin": "Bỏ ghim trên trang cá nhân",
+ "suggestions.dismiss": "Tắt đề xuất",
+ "suggestions.header": "Có thể bạn quan tâm…",
+ "tabs_bar.federated_timeline": "Mạng liên kết",
+ "tabs_bar.home": "Bảng tin",
+ "tabs_bar.local_timeline": "Máy chủ của bạn",
+ "tabs_bar.notifications": "Thông báo",
+ "tabs_bar.search": "Tìm kiếm",
+ "time_remaining.days": "{number, plural, other {}} left",
+ "time_remaining.hours": "{number, plural, other {}} left",
+ "time_remaining.minutes": "{number, plural, other {}} left",
+ "time_remaining.moments": "Còn lại",
+ "time_remaining.seconds": "{number, plural, other {}} left",
+ "timeline_hint.remote_resource_not_displayed": "{resource} từ máy chủ khác sẽ không hiển thị.",
+ "timeline_hint.resources.followers": "Người theo dõi",
+ "timeline_hint.resources.follows": "Đang theo dõi",
+ "timeline_hint.resources.statuses": "Tút cũ hơn",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} đang thảo luận",
+ "trends.trending_now": "Xu hướng",
+ "ui.beforeunload": "Bản nháp của bạn sẽ bị mất nếu bạn thoát khỏi Mastodon.",
+ "upload_area.title": "Kéo và thả để tải lên",
+ "upload_button.label": "Thêm media (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_error.limit": "Tập tin tải lên vượt quá giới hạn cho phép.",
+ "upload_error.poll": "Cuộc thăm dò không được tải tập tin.",
+ "upload_form.audio_description": "Mô tả cho người thính giác kém",
+ "upload_form.description": "Mô tả cho người khiếm thị",
+ "upload_form.edit": "Biên tập",
+ "upload_form.undo": "Xóa bỏ",
+ "upload_form.video_description": "Mô tả cho người có vấn đề về thính giác",
+ "upload_modal.analyzing_picture": "Phân tích hình ảnh",
+ "upload_modal.apply": "Áp dụng",
+ "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+ "upload_modal.detect_text": "Phát hiện văn bản trong hình ảnh",
+ "upload_modal.edit_media": "Chỉnh sửa ảnh/video",
+ "upload_modal.hint": "Nhấp hoặc kéo vòng tròn trên bản xem trước để chọn phần hiển thị trên hình thu nhỏ.",
+ "upload_modal.preview_label": "Xem trước ({ratio})",
+ "upload_progress.label": "Đang tải lên...",
+ "video.close": "Đóng video",
+ "video.download": "Tải tập tin",
+ "video.exit_fullscreen": "Thoát toàn màn hình",
+ "video.expand": "Mở rộng video",
+ "video.fullscreen": "Toàn màn hình",
+ "video.hide": "Ẩn video",
+ "video.mute": "Tắt tiếng",
+ "video.pause": "Tạm dừng",
+ "video.play": "Phát",
+ "video.unmute": "Mở tiếng"
+}
diff --git a/app/javascript/mastodon/locales/whitelist_is.json b/app/javascript/mastodon/locales/whitelist_is.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_is.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_kab.json b/app/javascript/mastodon/locales/whitelist_kab.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_kab.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_kn.json b/app/javascript/mastodon/locales/whitelist_kn.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_kn.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_ml.json b/app/javascript/mastodon/locales/whitelist_ml.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ml.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_mr.json b/app/javascript/mastodon/locales/whitelist_mr.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_mr.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_sc.json b/app/javascript/mastodon/locales/whitelist_sc.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_sc.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_szl.json b/app/javascript/mastodon/locales/whitelist_szl.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_szl.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_tai.json b/app/javascript/mastodon/locales/whitelist_tai.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_tai.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_ur.json b/app/javascript/mastodon/locales/whitelist_ur.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ur.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_vi.json b/app/javascript/mastodon/locales/whitelist_vi.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_vi.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index fc97d38f2..ab1c96181 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "从列表中添加或删除",
"account.badges.bot": "机器人",
+ "account.badges.group": "群组",
"account.block": "屏蔽 @{name}",
"account.block_domain": "隐藏来自 {domain} 的内容",
"account.blocked": "已屏蔽",
+ "account.browse_more_on_origin_server": "在原始个人资料页面上浏览详情",
"account.cancel_follow_request": "取消关注请求",
"account.direct": "发送私信给 @{name}",
"account.domain_blocked": "网站已屏蔽",
@@ -16,7 +20,7 @@
"account.follows.empty": "此用户目前尚未关注任何人。",
"account.follows_you": "关注了你",
"account.hide_reblogs": "隐藏来自 @{name} 的转嘟",
- "account.last_status": "Last active",
+ "account.last_status": "最近活动",
"account.link_verified_on": "此链接的所有权已在 {date} 检查",
"account.locked_info": "此账户已锁嘟。账户的主人会手动审核关注者。",
"account.media": "媒体",
@@ -25,7 +29,7 @@
"account.mute": "隐藏 @{name}",
"account.mute_notifications": "隐藏来自 @{name} 的通知",
"account.muted": "已隐藏",
- "account.never_active": "Never",
+ "account.never_active": "从未活跃",
"account.posts": "嘟文",
"account.posts_with_replies": "嘟文和回复",
"account.report": "举报 @{name}",
@@ -38,10 +42,15 @@
"account.unfollow": "取消关注",
"account.unmute": "不再隐藏 @{name}",
"account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "请在{retry_time, time, medium}后重试。",
+ "alert.rate_limited.title": "频率受限",
"alert.unexpected.message": "发生了意外错误。",
"alert.unexpected.title": "哎呀!",
+ "announcement.announcement": "公告",
"autosuggest_hashtag.per_week": "每星期 {count} 条",
"boost_modal.combo": "下次按住 {combo} 即可跳过此提示",
"bundle_column_error.body": "载入这个组件时发生了错误。",
@@ -51,9 +60,10 @@
"bundle_modal_error.message": "载入这个组件时发生了错误。",
"bundle_modal_error.retry": "重试",
"column.blocks": "已屏蔽的用户",
+ "column.bookmarks": "书签",
"column.community": "本站时间轴",
"column.direct": "私信",
- "column.directory": "Browse profiles",
+ "column.directory": "浏览用户资料",
"column.domain_blocks": "已屏蔽的网站",
"column.favourites": "喜欢",
"column.follow_requests": "关注请求",
@@ -72,7 +82,9 @@
"column_header.show_settings": "显示设置",
"column_header.unpin": "取消固定",
"column_subheading.settings": "设置",
+ "community.column_settings.local_only": "只显示本站",
"community.column_settings.media_only": "仅媒体",
+ "community.column_settings.remote_only": "只显示外站",
"compose_form.direct_message_warning": "这条嘟文仅对所有被提及的用户可见。",
"compose_form.direct_message_warning_learn_more": "了解详情",
"compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。",
@@ -83,6 +95,8 @@
"compose_form.poll.duration": "投票持续时间",
"compose_form.poll.option_placeholder": "选项 {number}",
"compose_form.poll.remove_option": "移除这个选项",
+ "compose_form.poll.switch_to_multiple": "将投票改为多选",
+ "compose_form.poll.switch_to_single": "将投票改为单选",
"compose_form.publish": "嘟嘟",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "标记媒体为敏感内容",
@@ -101,10 +115,10 @@
"confirmations.delete_list.message": "你确定要永久删除这个列表吗?",
"confirmations.domain_block.confirm": "隐藏整个网站的内容",
"confirmations.domain_block.message": "你真的确定要隐藏所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.logout.confirm": "登出",
+ "confirmations.logout.message": "您确定要登出吗?",
"confirmations.mute.confirm": "隐藏",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "这将隐藏他们的嘟文以及提到他们的嘟文,但他们仍可以看到你的嘟文并关注你。",
"confirmations.mute.message": "你确定要隐藏 {name} 吗?",
"confirmations.redraft.confirm": "删除并重新编辑",
"confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将会失去关联。",
@@ -112,14 +126,14 @@
"confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?",
"confirmations.unfollow.confirm": "取消关注",
"confirmations.unfollow.message": "你确定要取消关注 {name} 吗?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
+ "conversation.delete": "删除对话",
+ "conversation.mark_as_read": "标记为已读",
+ "conversation.open": "查看对话",
+ "conversation.with": "与 {names}",
+ "directory.federated": "来自联邦宇宙的已知部分",
+ "directory.local": "仅来自 {domain}",
+ "directory.new_arrivals": "新来者",
+ "directory.recently_active": "最近活跃",
"embed.instructions": "要在你的网站上嵌入这条嘟文,请复制以下代码。",
"embed.preview": "它会像这样显示出来:",
"emoji_button.activity": "活动",
@@ -139,11 +153,12 @@
"empty_column.account_timeline": "这里没有嘟文!",
"empty_column.account_unavailable": "个人资料不可用",
"empty_column.blocks": "你目前没有屏蔽任何用户。",
+ "empty_column.bookmarked_statuses": "你还没有给任何嘟文添加过书签。在你添加书签后,嘟文就会显示在这里。",
"empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!",
"empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。",
"empty_column.domain_blocks": "目前没有被隐藏的站点。",
"empty_column.favourited_statuses": "你还没有喜欢过任何嘟文。喜欢过的嘟文会显示在这里。",
- "empty_column.favourites": "没有人点赞过这条嘟文。如果有人点了,就会显示在这里。",
+ "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢了,就会显示在这里。",
"empty_column.follow_requests": "你没有收到新的关注请求。收到了之后就会显示在这里。",
"empty_column.hashtag": "这个话题标签下暂时没有内容。",
"empty_column.home": "你还没有关注任何用户。快看看{public},向其他人问个好吧。",
@@ -153,12 +168,13 @@
"empty_column.mutes": "你没有隐藏任何用户。",
"empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。",
"empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。",
+ "error.unexpected_crash.next_steps": "刷新一下页面试试。如果没用,您可以换个浏览器或者用本地应用。",
+ "errors.unexpected_crash.copy_stacktrace": "把堆栈跟踪信息复制到剪贴板",
+ "errors.unexpected_crash.report_issue": "报告问题",
"follow_request.authorize": "同意",
"follow_request.reject": "拒绝",
+ "follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核关注请求。",
"getting_started.developers": "开发",
"getting_started.directory": "用户目录",
"getting_started.documentation": "指南",
@@ -179,6 +195,8 @@
"home.column_settings.basic": "基本设置",
"home.column_settings.show_reblogs": "显示转嘟",
"home.column_settings.show_replies": "显示回复",
+ "home.hide_announcements": "隐藏公告",
+ "home.show_announcements": "显示公告",
"intervals.full.days": "{number} 天",
"intervals.full.hours": "{number} 小时",
"intervals.full.minutes": "{number} 分钟",
@@ -191,7 +209,7 @@
"introduction.federation.local.text": "你所关注的用户的动态会显示在主页里,你可以关注任何服务器上的任何人。",
"introduction.interactions.action": "教程结束!",
"introduction.interactions.favourite.headline": "喜欢",
- "introduction.interactions.favourite.text": "你可以保存嘟文以便以后阅读。或者通过喜欢功能告诉作者你点了个赞。",
+ "introduction.interactions.favourite.text": "通过喜欢一条嘟文,你可以保存它以便以后阅读,并且告诉作者你喜欢它。",
"introduction.interactions.reblog.headline": "转嘟",
"introduction.interactions.reblog.text": "通过转嘟,你可以向你的关注者分享其他人的嘟文。",
"introduction.interactions.reply.headline": "回复",
@@ -209,7 +227,7 @@
"keyboard_shortcuts.down": "在列表中让光标下移",
"keyboard_shortcuts.enter": "展开嘟文",
"keyboard_shortcuts.favourite": "喜欢嘟文",
- "keyboard_shortcuts.favourites": "打开喜欢列表",
+ "keyboard_shortcuts.favourites": "打开喜欢的嘟文列表",
"keyboard_shortcuts.federated": "打开跨站时间轴",
"keyboard_shortcuts.heading": "快捷键列表",
"keyboard_shortcuts.home": "打开主页时间轴",
@@ -220,11 +238,13 @@
"keyboard_shortcuts.muted": "打开隐藏用户列表",
"keyboard_shortcuts.my_profile": "打开你的个人资料",
"keyboard_shortcuts.notifications": "打开通知栏",
+ "keyboard_shortcuts.open_media": "打开媒体",
"keyboard_shortcuts.pinned": "打开置顶嘟文列表",
"keyboard_shortcuts.profile": "打开作者的个人资料",
"keyboard_shortcuts.reply": "回复嘟文",
"keyboard_shortcuts.requests": "打开关注请求列表",
"keyboard_shortcuts.search": "选择搜索框",
+ "keyboard_shortcuts.spoilers": "显示或隐藏被折叠的正文",
"keyboard_shortcuts.start": "打开“开始使用”栏",
"keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文",
"keyboard_shortcuts.toggle_sensitivity": "显示/隐藏媒体",
@@ -246,19 +266,20 @@
"lists.subheading": "你的列表",
"load_pending": "{count} 项",
"loading_indicator.label": "加载中……",
- "media_gallery.toggle_visible": "切换显示/隐藏",
+ "media_gallery.toggle_visible": "隐藏 {number} 张图片",
"missing_indicator.label": "找不到内容",
"missing_indicator.sublabel": "无法找到此资源",
"mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?",
"navigation_bar.apps": "移动应用",
"navigation_bar.blocks": "已屏蔽的用户",
+ "navigation_bar.bookmarks": "书签",
"navigation_bar.community_timeline": "本站时间轴",
"navigation_bar.compose": "撰写新嘟文",
"navigation_bar.direct": "私信",
"navigation_bar.discover": "发现",
"navigation_bar.domain_blocks": "已屏蔽的网站",
"navigation_bar.edit_profile": "修改个人资料",
- "navigation_bar.favourites": "喜欢的内容",
+ "navigation_bar.favourites": "喜欢",
"navigation_bar.filters": "屏蔽关键词",
"navigation_bar.follow_requests": "关注请求",
"navigation_bar.follows_and_followers": "关注管理",
@@ -274,7 +295,9 @@
"navigation_bar.security": "安全",
"notification.favourite": "{name} 喜欢了你的嘟文",
"notification.follow": "{name} 开始关注你",
+ "notification.follow_request": "{name} 向你发送了关注请求",
"notification.mention": "{name} 提及了你",
+ "notification.own_poll": "您的投票已经结束",
"notification.poll": "你参与的一个投票已经结束",
"notification.reblog": "{name} 转嘟了你的嘟文",
"notifications.clear": "清空通知列表",
@@ -285,6 +308,7 @@
"notifications.column_settings.filter_bar.category": "快速过滤栏",
"notifications.column_settings.filter_bar.show": "显示",
"notifications.column_settings.follow": "当有人关注你时:",
+ "notifications.column_settings.follow_request": "新的关注请求:",
"notifications.column_settings.mention": "当有人在嘟文中提及你时:",
"notifications.column_settings.poll": "投票结果:",
"notifications.column_settings.push": "推送通知",
@@ -300,10 +324,10 @@
"notifications.group": "{count} 条通知",
"poll.closed": "已关闭",
"poll.refresh": "刷新",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count}人",
"poll.total_votes": "{count} 票",
"poll.vote": "投票",
- "poll.voted": "You voted for this answer",
+ "poll.voted": "您已经对这个答案投过票了",
"poll_button.add_poll": "发起投票",
"poll_button.remove_poll": "移除投票",
"privacy.change": "设置嘟文可见范围",
@@ -315,16 +339,17 @@
"privacy.public.short": "公开",
"privacy.unlisted.long": "所有人可见,但不会出现在公共时间轴上",
"privacy.unlisted.short": "不公开",
- "refresh": "Refresh",
+ "refresh": "刷新",
"regeneration_indicator.label": "加载中……",
- "regeneration_indicator.sublabel": "你的主页时间轴正在准备中!",
+ "regeneration_indicator.sublabel": "你的主页动态正在准备中!",
"relative_time.days": "{number}天",
"relative_time.hours": "{number}时",
"relative_time.just_now": "刚刚",
"relative_time.minutes": "{number}分",
"relative_time.seconds": "{number}秒",
+ "relative_time.today": "今天",
"reply_indicator.cancel": "取消",
- "report.forward": "发送举报至 {target}",
+ "report.forward": "转发举报至 {target}",
"report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?",
"report.hint": "举报将会发送给你所在服务器的监察员。你可以在下面填写举报该用户的理由:",
"report.placeholder": "备注",
@@ -345,6 +370,7 @@
"status.admin_account": "打开 @{name} 的管理界面",
"status.admin_status": "打开这条嘟文的管理界面",
"status.block": "屏蔽 @{name}",
+ "status.bookmark": "添加到书签",
"status.cancel_reblog_private": "取消转嘟",
"status.cannot_reblog": "这条嘟文不允许被转嘟",
"status.copy": "复制嘟文链接",
@@ -370,6 +396,7 @@
"status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。",
"status.redraft": "删除并重新编辑",
"status.comment": "评论",
+ "status.remove_bookmark": "移除书签",
"status.reply": "回复",
"status.replyAll": "回复所有人",
"status.report": "举报 @{name}",
@@ -380,7 +407,7 @@
"status.show_more": "显示内容",
"status.show_more_all": "显示所有内容",
"status.show_thread": "显示全部对话",
- "status.uncached_media_warning": "Not available",
+ "status.uncached_media_warning": "暂不可用",
"status.unmute_conversation": "不再隐藏此对话",
"status.unpin": "在个人资料页面取消置顶",
"suggestions.dismiss": "关闭建议",
@@ -396,16 +423,22 @@
"time_remaining.minutes": "剩余 {number, plural, one {# 分钟} other {# 分钟}}",
"time_remaining.moments": "即将结束",
"time_remaining.seconds": "剩余 {number, plural, one {# 秒} other {# 秒}}",
+ "timeline_hint.remote_resource_not_displayed": "不会显示来自其它服务器的 {resource}",
+ "timeline_hint.resources.followers": "关注者",
+ "timeline_hint.resources.follows": "关注",
+ "timeline_hint.resources.statuses": "更早的嘟文",
"trends.count_by_accounts": "{count} 人正在讨论",
"trends.trending_now": "现在流行",
"ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。",
"upload_area.title": "将文件拖放到此处开始上传",
- "upload_button.label": "上传媒体文件 (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_button.label": "上传媒体文件 ({formats})",
"upload_error.limit": "文件大小超过限制。",
"upload_error.poll": "投票中不允许上传文件。",
+ "upload_form.audio_description": "为听障人士添加文字描述",
"upload_form.description": "为视觉障碍人士添加文字说明",
"upload_form.edit": "编辑",
"upload_form.undo": "删除",
+ "upload_form.video_description": "为听障人士和视障人士添加文字描述",
"upload_modal.analyzing_picture": "分析图片…",
"upload_modal.apply": "应用",
"upload_modal.description_placeholder": "天地玄黄 宇宙洪荒 日月盈仄 辰宿列张",
@@ -415,6 +448,7 @@
"upload_modal.preview_label": "预览 ({ratio})",
"upload_progress.label": "上传中……",
"video.close": "关闭视频",
+ "video.download": "下载文件",
"video.exit_fullscreen": "退出全屏",
"video.expand": "展开视频",
"video.fullscreen": "全屏",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index a09ca6bd9..222855c2c 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -1,31 +1,35 @@
{
- "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "從名單中新增或移除",
"account.badges.bot": "機械人",
+ "account.badges.group": "群組",
"account.block": "封鎖 @{name}",
"account.block_domain": "隱藏來自 {domain} 的一切文章",
"account.blocked": "封鎖",
- "account.cancel_follow_request": "Cancel follow request",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "取消關注請求",
"account.direct": "私訊 @{name}",
"account.domain_blocked": "服務站被隱藏",
"account.edit_profile": "修改個人資料",
- "account.endorse": "Feature on profile",
+ "account.endorse": "在個人資料推薦對方",
"account.follow": "關注",
"account.followers": "關注的人",
- "account.followers.empty": "No one follows this user yet.",
+ "account.followers.empty": "尚沒有人關注這位使用者。",
"account.follows": "正關注",
- "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows.empty": "這位使用者尚未關注任何使用者。",
"account.follows_you": "關注你",
"account.hide_reblogs": "隱藏 @{name} 的轉推",
- "account.last_status": "Last active",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
- "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.last_status": "上次活躍時間",
+ "account.link_verified_on": "此連結的所有權已在 {date} 檢查過",
+ "account.locked_info": "這隻帳戶的隱私狀態被設成鎖定。該擁有者會手動審核能關注這隻帳號的人。",
"account.media": "媒體",
"account.mention": "提及 @{name}",
"account.moved_to": "{name} 已經遷移到:",
"account.mute": "將 @{name} 靜音",
"account.mute_notifications": "將來自 @{name} 的通知靜音",
"account.muted": "靜音",
- "account.never_active": "Never",
+ "account.never_active": "永不",
"account.posts": "文章",
"account.posts_with_replies": "包含回覆的文章",
"account.report": "舉報 @{name}",
@@ -34,15 +38,20 @@
"account.show_reblogs": "顯示 @{name} 的推文",
"account.unblock": "解除對 @{name} 的封鎖",
"account.unblock_domain": "不再隱藏 {domain}",
- "account.unendorse": "Don't feature on profile",
+ "account.unendorse": "不再於個人資料頁面推薦對方",
"account.unfollow": "取消關注",
"account.unmute": "取消 @{name} 的靜音",
"account.unmute_notifications": "取消來自 @{name} 通知的靜音",
- "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
- "alert.rate_limited.title": "Rate limited",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "請在 {retry_time, time, medium} 過後重試",
+ "alert.rate_limited.title": "已限速",
"alert.unexpected.message": "發生不可預期的錯誤。",
"alert.unexpected.title": "噢!",
- "autosuggest_hashtag.per_week": "{count} per week",
+ "announcement.announcement": "公告",
+ "autosuggest_hashtag.per_week": "{count} / 週",
"boost_modal.combo": "如你想在下次路過這顯示,請按{combo},",
"bundle_column_error.body": "加載本組件出錯。",
"bundle_column_error.retry": "重試",
@@ -51,9 +60,10 @@
"bundle_modal_error.message": "加載本組件出錯。",
"bundle_modal_error.retry": "重試",
"column.blocks": "封鎖用戶",
+ "column.bookmarks": "書籤",
"column.community": "本站時間軸",
"column.direct": "個人訊息",
- "column.directory": "Browse profiles",
+ "column.directory": "瀏覽個人資料",
"column.domain_blocks": "隱藏的服務站",
"column.favourites": "最愛的文章",
"column.follow_requests": "關注請求",
@@ -71,27 +81,31 @@
"column_header.show_settings": "顯示設定",
"column_header.unpin": "取下",
"column_subheading.settings": "設定",
+ "community.column_settings.local_only": "只有本地",
"community.column_settings.media_only": "僅媒體",
+ "community.column_settings.remote_only": "只有遠端",
"compose_form.direct_message_warning": "這文章只有被提及的用戶才可以看到。",
"compose_form.direct_message_warning_learn_more": "了解更多",
"compose_form.hashtag_warning": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。",
"compose_form.lock_disclaimer": "你的用戶狀態為「{locked}」,任何人都能立即關注你,然後看到「只有關注者能看」的文章。",
"compose_form.lock_disclaimer.lock": "公共",
"compose_form.placeholder": "你在想甚麼?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "新增選擇",
+ "compose_form.poll.duration": "投票期限",
+ "compose_form.poll.option_placeholder": "第 {number} 個選擇",
+ "compose_form.poll.remove_option": "移除此選擇",
+ "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項",
+ "compose_form.poll.switch_to_single": "變更投票為允許單一選項",
"compose_form.publish": "發文",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.hide": "標記媒體為敏感內容",
"compose_form.sensitive.marked": "媒體被標示為敏感",
"compose_form.sensitive.unmarked": "媒體沒有被標示為敏感",
"compose_form.spoiler.marked": "文字被警告隱藏",
"compose_form.spoiler.unmarked": "文字沒有被隱藏",
"compose_form.spoiler_placeholder": "敏感警告訊息",
"confirmation_modal.cancel": "取消",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "封鎖並檢舉",
"confirmations.block.confirm": "封鎖",
"confirmations.block.message": "你確定要封鎖{name}嗎?",
"confirmations.delete.confirm": "刪除",
@@ -100,25 +114,25 @@
"confirmations.delete_list.message": "你確定要永久刪除這列表嗎?",
"confirmations.domain_block.confirm": "隱藏整個網站",
"confirmations.domain_block.message": "你真的真的確定要隱藏整個 {domain} ?多數情況下,比較推薦封鎖或靜音幾個特定目標就好。你從此將不會再看到該站的內容和通知。來自該站的關注者亦會被移除。",
- "confirmations.logout.confirm": "Log out",
- "confirmations.logout.message": "Are you sure you want to log out?",
+ "confirmations.logout.confirm": "登出",
+ "confirmations.logout.message": "確定要登出嗎?",
"confirmations.mute.confirm": "靜音",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "這將會隱藏來自他們的貼文與通知,但是他們還是可以查閱你的貼文與關注你。",
"confirmations.mute.message": "你確定要將{name}靜音嗎?",
"confirmations.redraft.confirm": "刪除並編輯",
"confirmations.redraft.message": "你確定要刪除並重新編輯嗎?所有相關的回覆、轉推與最愛都會被刪除。",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "回覆",
+ "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?",
"confirmations.unfollow.confirm": "取消關注",
"confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?",
- "conversation.delete": "Delete conversation",
- "conversation.mark_as_read": "Mark as read",
- "conversation.open": "View conversation",
- "conversation.with": "With {names}",
- "directory.federated": "From known fediverse",
- "directory.local": "From {domain} only",
- "directory.new_arrivals": "New arrivals",
- "directory.recently_active": "Recently active",
+ "conversation.delete": "刪除對話",
+ "conversation.mark_as_read": "標為已讀",
+ "conversation.open": "檢視對話",
+ "conversation.with": "與 {names}",
+ "directory.federated": "來自已知聯邦宇宙",
+ "directory.local": "僅來自 {domain}",
+ "directory.new_arrivals": "新貨",
+ "directory.recently_active": "最近活躍",
"embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。",
"embed.preview": "看上去會是這樣:",
"emoji_button.activity": "活動",
@@ -135,176 +149,186 @@
"emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊景物",
- "empty_column.account_timeline": "No toots here!",
- "empty_column.account_unavailable": "Profile unavailable",
- "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.account_timeline": "這裡還沒有嘟文!",
+ "empty_column.account_unavailable": "無法取得個人資料",
+ "empty_column.blocks": "你還沒有封鎖任何使用者。",
+ "empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。",
"empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!",
"empty_column.direct": "你沒有個人訊息。當你發出或接收個人訊息,就會在這裡出現。",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
- "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
- "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
- "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.domain_blocks": "尚未隱藏任何網域。",
+ "empty_column.favourited_statuses": "你還沒收藏任何嘟文。這裡將會顯示你收藏的嘟文。",
+ "empty_column.favourites": "還沒有人收藏這則嘟文。這裡將會顯示被收藏的嘟文。",
+ "empty_column.follow_requests": "您尚未收到任何關注請求。這裡將會顯示收到的關注請求。",
"empty_column.hashtag": "這個標籤暫時未有內容。",
"empty_column.home": "你還沒有關注任何用戶。快看看{public},向其他用戶搭訕吧。",
"empty_column.home.public_timeline": "公共時間軸",
"empty_column.list": "這個列表暫時未有內容。",
- "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
- "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.lists": "你還沒有建立任何名單。這裡將會顯示你所建立的名單。",
+ "empty_column.mutes": "你尚未靜音任何使用者。",
"empty_column.notifications": "你沒有任何通知紀錄,快向其他用戶搭訕吧。",
"empty_column.public": "跨站時間軸暫時沒有內容!快寫一些公共的文章,或者關注另一些服務站的用戶吧!你和本站、友站的交流,將決定這裏出現的內容。",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,故無法正常顯示頁面。",
+ "error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有進展,你可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。",
+ "errors.unexpected_crash.copy_stacktrace": "複製到剪貼簿",
+ "errors.unexpected_crash.report_issue": "舉報問題",
"follow_request.authorize": "批准",
"follow_request.reject": "拒絕",
+ "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的員工認為可能想要自己審核這些帳號的追蹤請求。",
"getting_started.developers": "開發者",
- "getting_started.directory": "Profile directory",
- "getting_started.documentation": "Documentation",
+ "getting_started.directory": "個人資料目錄",
+ "getting_started.documentation": "文件",
"getting_started.heading": "開始使用",
"getting_started.invite": "邀請使用者",
"getting_started.open_source_notice": "Mastodon(萬象)是一個開放源碼的軟件。你可以在官方 GitHub ({github}) 貢獻或者回報問題。",
"getting_started.security": "帳戶安全",
"getting_started.terms": "服務條款",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_header.tag_mode.all": "以及{additional}",
+ "hashtag.column_header.tag_mode.any": "或是{additional}",
+ "hashtag.column_header.tag_mode.none": "而無需{additional}",
+ "hashtag.column_settings.select.no_options_message": "找不到建議",
+ "hashtag.column_settings.select.placeholder": "輸入主題標籤…",
+ "hashtag.column_settings.tag_mode.all": "全部",
+ "hashtag.column_settings.tag_mode.any": "任一",
+ "hashtag.column_settings.tag_mode.none": "全不",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "基本",
"home.column_settings.show_reblogs": "顯示被轉推的文章",
"home.column_settings.show_replies": "顯示回應文章",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
- "introduction.federation.federated.headline": "Federated",
- "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
- "introduction.federation.home.headline": "Home",
- "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
- "introduction.federation.local.headline": "Local",
- "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "home.hide_announcements": "隱藏公告",
+ "home.show_announcements": "顯示公告",
+ "intervals.full.days": "{number, plural, one {# 天} other {# 天}}",
+ "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}",
+ "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}",
+ "introduction.federation.action": "下一步",
+ "introduction.federation.federated.headline": "站台聯盟",
+ "introduction.federation.federated.text": "來自聯盟宇宙中其他站台的公開嘟文將會在站點聯盟時間軸中顯示。",
+ "introduction.federation.home.headline": "首頁",
+ "introduction.federation.home.text": "你關注使用者的嘟文將會在首頁動態中顯示。你可以關注任何伺服器上的任何人!",
+ "introduction.federation.local.headline": "本機",
+ "introduction.federation.local.text": "跟您同伺服器之使用者所發的公開嘟文將會顯示在本機時間軸中。",
"introduction.interactions.action": "Finish toot-orial!",
- "introduction.interactions.favourite.headline": "Favourite",
- "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
- "introduction.interactions.reblog.headline": "Boost",
- "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
- "introduction.interactions.reply.headline": "Reply",
- "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "First steps",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "introduction.interactions.favourite.headline": "關注",
+ "introduction.interactions.favourite.text": "您能儲存嘟文供稍候觀看,或者收藏嘟文,讓作者知道您喜歡這則嘟文。",
+ "introduction.interactions.reblog.headline": "轉嘟",
+ "introduction.interactions.reblog.text": "您能藉由轉嘟他人嘟文來分享給您的關注者。",
+ "introduction.interactions.reply.headline": "回覆",
+ "introduction.interactions.reply.text": "您能回覆其他人或自己的嘟文,這麼做會把這些回覆串成一串對話。",
+ "introduction.welcome.action": "開始旅程吧!",
+ "introduction.welcome.headline": "第一步",
+ "introduction.welcome.text": "歡迎來到聯盟宇宙!等等你就可以廣播訊息及跨越各種各式各樣的伺服器與朋友聊天。但這台伺服器,{domain},非常特別 - 它寄管了你的個人資料,所以請記住它的名字。",
"keyboard_shortcuts.back": "後退",
- "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.blocked": "開啟「封鎖使用者」名單",
"keyboard_shortcuts.boost": "轉推",
"keyboard_shortcuts.column": "把標示移動到其中一列",
"keyboard_shortcuts.compose": "把標示移動到文字輸入區",
"keyboard_shortcuts.description": "描述",
- "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.direct": "開啟私訊欄",
"keyboard_shortcuts.down": "在列表往下移動",
"keyboard_shortcuts.enter": "打開文章",
- "keyboard_shortcuts.favourite": "赞藏",
- "keyboard_shortcuts.favourites": "to open favourites list",
- "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.favourite": "收藏",
+ "keyboard_shortcuts.favourites": "開啟收藏名單",
+ "keyboard_shortcuts.federated": "開啟站點聯盟時間軸",
"keyboard_shortcuts.heading": "鍵盤快速鍵",
- "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.home": "開啟首頁時間軸",
"keyboard_shortcuts.hotkey": "快速鍵",
"keyboard_shortcuts.legend": "顯示這個說明",
- "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.local": "開啟本機時間軸",
"keyboard_shortcuts.mention": "提及作者",
- "keyboard_shortcuts.muted": "to open muted users list",
- "keyboard_shortcuts.my_profile": "to open your profile",
- "keyboard_shortcuts.notifications": "to open notifications column",
- "keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.muted": "開啟靜音使用者名單",
+ "keyboard_shortcuts.my_profile": "開啟個人資料頁面",
+ "keyboard_shortcuts.notifications": "開啟通知欄",
+ "keyboard_shortcuts.open_media": "開啟媒體",
+ "keyboard_shortcuts.pinned": "開啟釘選的嘟文名單",
+ "keyboard_shortcuts.profile": "開啟作者的個人資料頁面",
"keyboard_shortcuts.reply": "回覆",
- "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.requests": "開啟關注請求名單",
"keyboard_shortcuts.search": "把標示移動到搜索",
- "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "開啟「開始使用」欄位",
"keyboard_shortcuts.toggle_hidden": "顯示或隱藏被標為敏感的文字",
- "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toggle_sensitivity": "顯示 / 隱藏媒體",
"keyboard_shortcuts.toot": "新的推文",
"keyboard_shortcuts.unfocus": "把標示移離文字輸入和搜索",
"keyboard_shortcuts.up": "在列表往上移動",
"lightbox.close": "關閉",
"lightbox.next": "繼續",
"lightbox.previous": "回退",
- "lightbox.view_context": "View context",
+ "lightbox.view_context": "檢視內文",
"lists.account.add": "新增到列表",
"lists.account.remove": "從列表刪除",
"lists.delete": "刪除列表",
"lists.edit": "編輯列表",
- "lists.edit.submit": "Change title",
+ "lists.edit.submit": "變更標題",
"lists.new.create": "新增列表",
"lists.new.title_placeholder": "新列表標題",
"lists.search": "從你關注的用戶中搜索",
"lists.subheading": "列表",
- "load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "load_pending": "{count, plural, other {# 個新項目}}",
"loading_indicator.label": "載入中...",
"media_gallery.toggle_visible": "打開或關上",
"missing_indicator.label": "找不到內容",
"missing_indicator.sublabel": "無法找到內容",
"mute_modal.hide_notifications": "隱藏來自這用戶的通知嗎?",
- "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.apps": "封鎖的使用者",
"navigation_bar.blocks": "被你封鎖的用戶",
+ "navigation_bar.bookmarks": "書籤",
"navigation_bar.community_timeline": "本站時間軸",
- "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.compose": "撰寫新嘟文",
"navigation_bar.direct": "個人訊息",
"navigation_bar.discover": "探索",
"navigation_bar.domain_blocks": "隱藏的服務站",
"navigation_bar.edit_profile": "修改個人資料",
"navigation_bar.favourites": "最愛的內容",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "靜音詞彙",
"navigation_bar.follow_requests": "關注請求",
- "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.follows_and_followers": "關注及關注者",
"navigation_bar.info": "關於本服務站",
"navigation_bar.keyboard_shortcuts": "鍵盤快速鍵",
"navigation_bar.lists": "列表",
"navigation_bar.logout": "登出",
"navigation_bar.mutes": "被你靜音的用戶",
- "navigation_bar.personal": "Personal",
+ "navigation_bar.personal": "個人",
"navigation_bar.pins": "置頂文章",
"navigation_bar.preferences": "偏好設定",
"navigation_bar.public_timeline": "跨站時間軸",
"navigation_bar.security": "安全",
- "notification.favourite": "{name} 赞藏了你的文章",
+ "notification.favourite": "{name} 收藏了你的文章",
"notification.follow": "{name} 開始關注你",
+ "notification.follow_request": "{name} 要求關注你",
"notification.mention": "{name} 提及你",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.own_poll": "您的投票已結束",
+ "notification.poll": "您投過的投票已經結束",
"notification.reblog": "{name} 轉推你的文章",
"notifications.clear": "清空通知紀錄",
"notifications.clear_confirmation": "你確定要清空通知紀錄嗎?",
"notifications.column_settings.alert": "顯示桌面通知",
- "notifications.column_settings.favourite": "赞藏了你的文章:",
- "notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.favourite": "收藏了你的文章:",
+ "notifications.column_settings.filter_bar.advanced": "顯示所有分類",
+ "notifications.column_settings.filter_bar.category": "快速過濾欄",
+ "notifications.column_settings.filter_bar.show": "顯示",
"notifications.column_settings.follow": "關注你:",
+ "notifications.column_settings.follow_request": "新的關注請求:",
"notifications.column_settings.mention": "提及你:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "投票結果:",
"notifications.column_settings.push": "推送通知",
"notifications.column_settings.reblog": "轉推你的文章:",
"notifications.column_settings.show": "在通知欄顯示",
"notifications.column_settings.sound": "播放音效",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Boosts",
- "notifications.filter.favourites": "Favourites",
- "notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.all": "全部",
+ "notifications.filter.boosts": "轉嘟",
+ "notifications.filter.favourites": "最愛",
+ "notifications.filter.follows": "關注的使用者",
+ "notifications.filter.mentions": "提及",
+ "notifications.filter.polls": "投票結果",
"notifications.group": "{count} 條通知",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll.voted": "You voted for this answer",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll.closed": "已關閉",
+ "poll.refresh": "重新整理",
+ "poll.total_people": "{count, plural, one {# 個投票} other {# 個投票}}",
+ "poll.total_votes": "{count, plural, one {# 個投票} other {# 個投票}}",
+ "poll.vote": "投票",
+ "poll.voted": "你已對此問題投票",
+ "poll_button.add_poll": "建立投票",
+ "poll_button.remove_poll": "移除投票",
"privacy.change": "調整私隱設定",
"privacy.direct.long": "只有提及的用戶能看到",
"privacy.direct.short": "私人訊息",
@@ -314,7 +338,7 @@
"privacy.public.short": "公共",
"privacy.unlisted.long": "公開,但不在公共時間軸顯示",
"privacy.unlisted.short": "公開",
- "refresh": "Refresh",
+ "refresh": "重新整理",
"regeneration_indicator.label": "載入中……",
"regeneration_indicator.sublabel": "你的主頁時間軸正在準備中!",
"relative_time.days": "{number}日",
@@ -322,6 +346,7 @@
"relative_time.just_now": "剛剛",
"relative_time.minutes": "{number}分鐘",
"relative_time.seconds": "{number}秒",
+ "relative_time.today": "今天",
"reply_indicator.cancel": "取消",
"report.forward": "轉寄到 {target}",
"report.forward_hint": "這個帳戶屬於其他服務站。要向該服務站發送匿名的舉報訊息嗎?",
@@ -331,7 +356,7 @@
"report.target": "舉報",
"search.placeholder": "搜尋",
"search_popout.search_format": "高級搜索格式",
- "search_popout.tips.full_text": "輸入簡單的文字,搜索由你發放、赞藏、轉推和提及你的文章,以及符合的用戶名稱,帳號名稱和標籤。",
+ "search_popout.tips.full_text": "輸入簡單的文字,搜索由你發放、收藏、轉推和提及你的文章,以及符合的用戶名稱,帳號名稱和標籤。",
"search_popout.tips.hashtag": "標籤",
"search_popout.tips.status": "文章",
"search_popout.tips.text": "輸入簡單的文字,搜索符合的用戶名稱,帳號名稱和標籤",
@@ -339,20 +364,21 @@
"search_results.accounts": "使用者",
"search_results.hashtags": "標籤",
"search_results.statuses": "文章",
- "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+ "search_results.statuses_fts_disabled": "「依內容搜尋嘟文」未在此 Mastodon 伺服器啟用。",
"search_results.total": "{count, number} 項結果",
- "status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
+ "status.admin_account": "開啟 @{name} 的管理介面",
+ "status.admin_status": "在管理介面開啟此嘟文",
"status.block": "封鎖 @{name}",
+ "status.bookmark": "書籤",
"status.cancel_reblog_private": "取消轉推",
"status.cannot_reblog": "這篇文章無法被轉推",
- "status.copy": "Copy link to status",
+ "status.copy": "將連結複製到嘟文中",
"status.delete": "刪除",
- "status.detailed_status": "Detailed conversation view",
+ "status.detailed_status": "對話的詳細內容",
"status.direct": "私訊 @{name}",
"status.embed": "鑲嵌",
- "status.favourite": "赞藏",
- "status.filtered": "Filtered",
+ "status.favourite": "收藏",
+ "status.filtered": "已過濾",
"status.load_more": "載入更多",
"status.media_hidden": "隱藏媒體內容",
"status.mention": "提及 @{name}",
@@ -362,12 +388,13 @@
"status.open": "展開文章",
"status.pin": "置頂到資料頁",
"status.pinned": "置頂文章",
- "status.read_more": "Read more",
+ "status.read_more": "閱讀更多",
"status.reblog": "轉推",
"status.reblog_private": "轉推到原讀者",
"status.reblogged_by": "{name} 轉推",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.reblogs.empty": "還沒有人轉嘟。如果有,會顯示在這裡。",
"status.redraft": "刪除並編輯",
+ "status.remove_bookmark": "移除書籤",
"status.reply": "回應",
"status.replyAll": "回應所有人",
"status.report": "舉報 @{name}",
@@ -377,41 +404,48 @@
"status.show_less_all": "減少顯示這類文章",
"status.show_more": "顯示更多",
"status.show_more_all": "顯示更多這類文章",
- "status.show_thread": "Show thread",
- "status.uncached_media_warning": "Not available",
+ "status.show_thread": "顯示討論串",
+ "status.uncached_media_warning": "無法使用",
"status.unmute_conversation": "解禁對話",
"status.unpin": "解除置頂",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "關閉建議",
+ "suggestions.header": "您可能對這些東西有興趣…",
"tabs_bar.federated_timeline": "跨站",
"tabs_bar.home": "主頁",
"tabs_bar.local_timeline": "本站",
"tabs_bar.notifications": "通知",
"tabs_bar.search": "搜尋",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "time_remaining.days": "剩餘{number, plural, one {# 天數} other {# 天數}}",
+ "time_remaining.hours": "剩餘{number, plural, one {# 小時} other {# 小時}}",
+ "time_remaining.minutes": "剩餘{number, plural, one {# 分鐘} other {# 分鐘}}",
+ "time_remaining.moments": "剩餘時間",
+ "time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} 位用戶在討論",
- "trends.trending_now": "Trending now",
+ "trends.trending_now": "目前趨勢",
"ui.beforeunload": "如果你現在離開 Mastodon,你的草稿內容將會被丟棄。",
"upload_area.title": "將檔案拖放至此上載",
"upload_button.label": "上載媒體檔案",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.limit": "已達到檔案上傳限制。",
+ "upload_error.poll": "不允許在投票上傳檔案。",
+ "upload_form.audio_description": "簡單描述內容給聽障人士",
"upload_form.description": "為視覺障礙人士添加文字說明",
- "upload_form.edit": "Edit",
+ "upload_form.edit": "編輯",
"upload_form.undo": "刪除",
- "upload_modal.analyzing_picture": "Analyzing picture…",
- "upload_modal.apply": "Apply",
- "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
- "upload_modal.detect_text": "Detect text from picture",
- "upload_modal.edit_media": "Edit media",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
- "upload_modal.preview_label": "Preview ({ratio})",
+ "upload_form.video_description": "簡單描述給聽障或視障人士",
+ "upload_modal.analyzing_picture": "正在分析圖片…",
+ "upload_modal.apply": "套用",
+ "upload_modal.description_placeholder": "A quick brown fox 跳過那隻懶狗",
+ "upload_modal.detect_text": "從圖片偵測文字",
+ "upload_modal.edit_media": "編輯媒體",
+ "upload_modal.hint": "點擊或拖曳圓圈以選擇預覽縮圖。",
+ "upload_modal.preview_label": "預覽 ({ratio})",
"upload_progress.label": "上載中……",
"video.close": "關閉影片",
+ "video.download": "下載檔案",
"video.exit_fullscreen": "退出全熒幕",
"video.expand": "展開影片",
"video.fullscreen": "全熒幕",
diff --git a/app/javascript/mastodon/locales/zh-HK.json.orig b/app/javascript/mastodon/locales/zh-HK.json.orig
new file mode 100644
index 000000000..15316b083
--- /dev/null
+++ b/app/javascript/mastodon/locales/zh-HK.json.orig
@@ -0,0 +1,475 @@
+{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
+ "account.add_or_remove_from_list": "從名單中新增或移除",
+ "account.badges.bot": "機械人",
+ "account.badges.group": "群組",
+ "account.block": "封鎖 @{name}",
+ "account.block_domain": "隱藏來自 {domain} 的一切文章",
+ "account.blocked": "封鎖",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
+ "account.cancel_follow_request": "取消關注請求",
+ "account.direct": "私訊 @{name}",
+ "account.domain_blocked": "服務站被隱藏",
+ "account.edit_profile": "修改個人資料",
+ "account.endorse": "在個人資料推薦對方",
+ "account.follow": "關注",
+ "account.followers": "關注的人",
+ "account.followers.empty": "尚沒有人關注這位使用者。",
+ "account.follows": "正關注",
+ "account.follows.empty": "這位使用者尚未關注任何使用者。",
+ "account.follows_you": "關注你",
+ "account.hide_reblogs": "隱藏 @{name} 的轉推",
+ "account.last_status": "上次活躍時間",
+ "account.link_verified_on": "此連結的所有權已在 {date} 檢查過",
+ "account.locked_info": "這隻帳戶的隱私狀態被設成鎖定。該擁有者會手動審核能關注這隻帳號的人。",
+ "account.media": "媒體",
+ "account.mention": "提及 @{name}",
+ "account.moved_to": "{name} 已經遷移到:",
+ "account.mute": "將 @{name} 靜音",
+ "account.mute_notifications": "將來自 @{name} 的通知靜音",
+ "account.muted": "靜音",
+ "account.never_active": "永不",
+ "account.posts": "文章",
+ "account.posts_with_replies": "包含回覆的文章",
+ "account.report": "舉報 @{name}",
+ "account.requested": "等候審批",
+ "account.share": "分享 @{name} 的個人資料",
+ "account.show_reblogs": "顯示 @{name} 的推文",
+ "account.unblock": "解除對 @{name} 的封鎖",
+ "account.unblock_domain": "不再隱藏 {domain}",
+ "account.unendorse": "不再於個人資料頁面推薦對方",
+ "account.unfollow": "取消關注",
+ "account.unmute": "取消 @{name} 的靜音",
+ "account.unmute_notifications": "取消來自 @{name} 通知的靜音",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
+ "alert.rate_limited.message": "請在 {retry_time, time, medium} 過後重試",
+ "alert.rate_limited.title": "已限速",
+ "alert.unexpected.message": "發生不可預期的錯誤。",
+ "alert.unexpected.title": "噢!",
+ "announcement.announcement": "公告",
+ "autosuggest_hashtag.per_week": "{count} / 週",
+ "boost_modal.combo": "如你想在下次路過這顯示,請按{combo},",
+ "bundle_column_error.body": "加載本組件出錯。",
+ "bundle_column_error.retry": "重試",
+ "bundle_column_error.title": "網絡錯誤",
+ "bundle_modal_error.close": "關閉",
+ "bundle_modal_error.message": "加載本組件出錯。",
+ "bundle_modal_error.retry": "重試",
+ "column.blocks": "封鎖用戶",
+ "column.bookmarks": "書籤",
+ "column.community": "本站時間軸",
+ "column.direct": "個人訊息",
+ "column.directory": "瀏覽個人資料",
+ "column.domain_blocks": "隱藏的服務站",
+ "column.favourites": "最愛的文章",
+ "column.follow_requests": "關注請求",
+ "column.home": "主頁",
+ "column.lists": "列表",
+ "column.mutes": "靜音名單",
+ "column.notifications": "通知",
+ "column.pins": "置頂文章",
+ "column.public": "跨站時間軸",
+ "column_back_button.label": "返回",
+ "column_header.hide_settings": "隱藏設定",
+ "column_header.moveLeft_settings": "將欄左移",
+ "column_header.moveRight_settings": "將欄右移",
+ "column_header.pin": "固定",
+ "column_header.show_settings": "顯示設定",
+ "column_header.unpin": "取下",
+ "column_subheading.settings": "設定",
+ "community.column_settings.local_only": "只有本地",
+ "community.column_settings.media_only": "僅媒體",
+ "community.column_settings.remote_only": "只有遠端",
+ "compose_form.direct_message_warning": "這文章只有被提及的用戶才可以看到。",
+ "compose_form.direct_message_warning_learn_more": "了解更多",
+ "compose_form.hashtag_warning": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。",
+ "compose_form.lock_disclaimer": "你的用戶狀態為「{locked}」,任何人都能立即關注你,然後看到「只有關注者能看」的文章。",
+ "compose_form.lock_disclaimer.lock": "公共",
+ "compose_form.placeholder": "你在想甚麼?",
+ "compose_form.poll.add_option": "新增選擇",
+ "compose_form.poll.duration": "投票期限",
+ "compose_form.poll.option_placeholder": "第 {number} 個選擇",
+ "compose_form.poll.remove_option": "移除此選擇",
+ "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項",
+ "compose_form.poll.switch_to_single": "變更投票為允許單一選項",
+ "compose_form.publish": "發文",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "標記媒體為敏感內容",
+ "compose_form.sensitive.marked": "媒體被標示為敏感",
+ "compose_form.sensitive.unmarked": "媒體沒有被標示為敏感",
+ "compose_form.spoiler.marked": "文字被警告隱藏",
+ "compose_form.spoiler.unmarked": "文字沒有被隱藏",
+ "compose_form.spoiler_placeholder": "敏感警告訊息",
+ "confirmation_modal.cancel": "取消",
+ "confirmations.block.block_and_report": "封鎖並檢舉",
+ "confirmations.block.confirm": "封鎖",
+ "confirmations.block.message": "你確定要封鎖{name}嗎?",
+ "confirmations.delete.confirm": "刪除",
+ "confirmations.delete.message": "你確定要刪除這文章嗎?",
+ "confirmations.delete_list.confirm": "刪除",
+ "confirmations.delete_list.message": "你確定要永久刪除這列表嗎?",
+ "confirmations.domain_block.confirm": "隱藏整個網站",
+ "confirmations.domain_block.message": "你真的真的確定要隱藏整個 {domain} ?多數情況下,比較推薦封鎖或靜音幾個特定目標就好。你從此將不會再看到該站的內容和通知。來自該站的關注者亦會被移除。",
+ "confirmations.logout.confirm": "登出",
+ "confirmations.logout.message": "確定要登出嗎?",
+ "confirmations.mute.confirm": "靜音",
+ "confirmations.mute.explanation": "這將會隱藏來自他們的貼文與通知,但是他們還是可以查閱你的貼文與關注你。",
+ "confirmations.mute.message": "你確定要將{name}靜音嗎?",
+ "confirmations.redraft.confirm": "刪除並編輯",
+ "confirmations.redraft.message": "你確定要刪除並重新編輯嗎?所有相關的回覆、轉推與最愛都會被刪除。",
+ "confirmations.reply.confirm": "回覆",
+ "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?",
+ "confirmations.unfollow.confirm": "取消關注",
+ "confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?",
+ "conversation.delete": "刪除對話",
+ "conversation.mark_as_read": "標為已讀",
+ "conversation.open": "檢視對話",
+ "conversation.with": "與 {names}",
+ "directory.federated": "來自已知聯邦宇宙",
+ "directory.local": "僅來自 {domain}",
+ "directory.new_arrivals": "新貨",
+ "directory.recently_active": "最近活躍",
+ "embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。",
+ "embed.preview": "看上去會是這樣:",
+ "emoji_button.activity": "活動",
+ "emoji_button.custom": "自訂",
+ "emoji_button.flags": "旗幟",
+ "emoji_button.food": "飲飲食食",
+ "emoji_button.label": "加入表情符號",
+ "emoji_button.nature": "自然",
+ "emoji_button.not_found": "沒有表情符號!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "物品",
+ "emoji_button.people": "人物",
+ "emoji_button.recent": "常用",
+ "emoji_button.search": "搜尋…",
+ "emoji_button.search_results": "搜尋結果",
+ "emoji_button.symbols": "符號",
+ "emoji_button.travel": "旅遊景物",
+ "empty_column.account_timeline": "這裡還沒有嘟文!",
+ "empty_column.account_unavailable": "無法取得個人資料",
+ "empty_column.blocks": "你還沒有封鎖任何使用者。",
+ "empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。",
+ "empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!",
+ "empty_column.direct": "你沒有個人訊息。當你發出或接收個人訊息,就會在這裡出現。",
+ "empty_column.domain_blocks": "尚未隱藏任何網域。",
+ "empty_column.favourited_statuses": "你還沒收藏任何嘟文。這裡將會顯示你收藏的嘟文。",
+ "empty_column.favourites": "還沒有人收藏這則嘟文。這裡將會顯示被收藏的嘟文。",
+ "empty_column.follow_requests": "您尚未收到任何關注請求。這裡將會顯示收到的關注請求。",
+ "empty_column.hashtag": "這個標籤暫時未有內容。",
+ "empty_column.home": "你還沒有關注任何用戶。快看看{public},向其他用戶搭訕吧。",
+ "empty_column.home.public_timeline": "公共時間軸",
+ "empty_column.list": "這個列表暫時未有內容。",
+ "empty_column.lists": "你還沒有建立任何名單。這裡將會顯示你所建立的名單。",
+ "empty_column.mutes": "你尚未靜音任何使用者。",
+ "empty_column.notifications": "你沒有任何通知紀錄,快向其他用戶搭訕吧。",
+ "empty_column.public": "跨站時間軸暫時沒有內容!快寫一些公共的文章,或者關注另一些服務站的用戶吧!你和本站、友站的交流,將決定這裏出現的內容。",
+ "error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,故無法正常顯示頁面。",
+ "error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有進展,你可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。",
+ "errors.unexpected_crash.copy_stacktrace": "複製到剪貼簿",
+ "errors.unexpected_crash.report_issue": "舉報問題",
+ "follow_request.authorize": "批准",
+ "follow_request.reject": "拒絕",
+ "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的員工認為可能想要自己審核這些帳號的追蹤請求。",
+ "getting_started.developers": "開發者",
+ "getting_started.directory": "個人資料目錄",
+ "getting_started.documentation": "文件",
+ "getting_started.heading": "開始使用",
+ "getting_started.invite": "邀請使用者",
+ "getting_started.open_source_notice": "Mastodon(萬象)是一個開放源碼的軟件。你可以在官方 GitHub ({github}) 貢獻或者回報問題。",
+ "getting_started.security": "帳戶安全",
+ "getting_started.terms": "服務條款",
+ "hashtag.column_header.tag_mode.all": "以及{additional}",
+ "hashtag.column_header.tag_mode.any": "或是{additional}",
+ "hashtag.column_header.tag_mode.none": "而無需{additional}",
+ "hashtag.column_settings.select.no_options_message": "找不到建議",
+ "hashtag.column_settings.select.placeholder": "輸入主題標籤…",
+ "hashtag.column_settings.tag_mode.all": "全部",
+ "hashtag.column_settings.tag_mode.any": "任一",
+ "hashtag.column_settings.tag_mode.none": "全不",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "home.column_settings.basic": "基本",
+ "home.column_settings.show_reblogs": "顯示被轉推的文章",
+ "home.column_settings.show_replies": "顯示回應文章",
+ "home.hide_announcements": "隱藏公告",
+ "home.show_announcements": "顯示公告",
+ "intervals.full.days": "{number, plural, one {# 天} other {# 天}}",
+ "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}",
+ "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}",
+ "introduction.federation.action": "下一步",
+ "introduction.federation.federated.headline": "站台聯盟",
+ "introduction.federation.federated.text": "來自聯盟宇宙中其他站台的公開嘟文將會在站點聯盟時間軸中顯示。",
+ "introduction.federation.home.headline": "首頁",
+ "introduction.federation.home.text": "你關注使用者的嘟文將會在首頁動態中顯示。你可以關注任何伺服器上的任何人!",
+ "introduction.federation.local.headline": "本機",
+ "introduction.federation.local.text": "跟您同伺服器之使用者所發的公開嘟文將會顯示在本機時間軸中。",
+ "introduction.interactions.action": "Finish toot-orial!",
+ "introduction.interactions.favourite.headline": "關注",
+ "introduction.interactions.favourite.text": "您能儲存嘟文供稍候觀看,或者收藏嘟文,讓作者知道您喜歡這則嘟文。",
+ "introduction.interactions.reblog.headline": "轉嘟",
+ "introduction.interactions.reblog.text": "您能藉由轉嘟他人嘟文來分享給您的關注者。",
+ "introduction.interactions.reply.headline": "回覆",
+ "introduction.interactions.reply.text": "您能回覆其他人或自己的嘟文,這麼做會把這些回覆串成一串對話。",
+ "introduction.welcome.action": "開始旅程吧!",
+ "introduction.welcome.headline": "第一步",
+ "introduction.welcome.text": "歡迎來到聯盟宇宙!等等你就可以廣播訊息及跨越各種各式各樣的伺服器與朋友聊天。但這台伺服器,{domain},非常特別 - 它寄管了你的個人資料,所以請記住它的名字。",
+ "keyboard_shortcuts.back": "後退",
+ "keyboard_shortcuts.blocked": "開啟「封鎖使用者」名單",
+ "keyboard_shortcuts.boost": "轉推",
+ "keyboard_shortcuts.column": "把標示移動到其中一列",
+ "keyboard_shortcuts.compose": "把標示移動到文字輸入區",
+ "keyboard_shortcuts.description": "描述",
+ "keyboard_shortcuts.direct": "開啟私訊欄",
+ "keyboard_shortcuts.down": "在列表往下移動",
+ "keyboard_shortcuts.enter": "打開文章",
+<<<<<<< HEAD
+ "keyboard_shortcuts.favourite": "赞藏",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+=======
+ "keyboard_shortcuts.favourite": "收藏",
+ "keyboard_shortcuts.favourites": "開啟收藏名單",
+ "keyboard_shortcuts.federated": "開啟站點聯盟時間軸",
+>>>>>>> master
+ "keyboard_shortcuts.heading": "鍵盤快速鍵",
+ "keyboard_shortcuts.home": "開啟首頁時間軸",
+ "keyboard_shortcuts.hotkey": "快速鍵",
+ "keyboard_shortcuts.legend": "顯示這個說明",
+ "keyboard_shortcuts.local": "開啟本機時間軸",
+ "keyboard_shortcuts.mention": "提及作者",
+ "keyboard_shortcuts.muted": "開啟靜音使用者名單",
+ "keyboard_shortcuts.my_profile": "開啟個人資料頁面",
+ "keyboard_shortcuts.notifications": "開啟通知欄",
+ "keyboard_shortcuts.open_media": "開啟媒體",
+ "keyboard_shortcuts.pinned": "開啟釘選的嘟文名單",
+ "keyboard_shortcuts.profile": "開啟作者的個人資料頁面",
+ "keyboard_shortcuts.reply": "回覆",
+ "keyboard_shortcuts.requests": "開啟關注請求名單",
+ "keyboard_shortcuts.search": "把標示移動到搜索",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
+ "keyboard_shortcuts.start": "開啟「開始使用」欄位",
+ "keyboard_shortcuts.toggle_hidden": "顯示或隱藏被標為敏感的文字",
+ "keyboard_shortcuts.toggle_sensitivity": "顯示 / 隱藏媒體",
+ "keyboard_shortcuts.toot": "新的推文",
+ "keyboard_shortcuts.unfocus": "把標示移離文字輸入和搜索",
+ "keyboard_shortcuts.up": "在列表往上移動",
+ "lightbox.close": "關閉",
+ "lightbox.next": "繼續",
+ "lightbox.previous": "回退",
+ "lightbox.view_context": "檢視內文",
+ "lists.account.add": "新增到列表",
+ "lists.account.remove": "從列表刪除",
+ "lists.delete": "刪除列表",
+ "lists.edit": "編輯列表",
+ "lists.edit.submit": "變更標題",
+ "lists.new.create": "新增列表",
+ "lists.new.title_placeholder": "新列表標題",
+ "lists.search": "從你關注的用戶中搜索",
+ "lists.subheading": "列表",
+ "load_pending": "{count, plural, other {# 個新項目}}",
+ "loading_indicator.label": "載入中...",
+ "media_gallery.toggle_visible": "打開或關上",
+ "missing_indicator.label": "找不到內容",
+ "missing_indicator.sublabel": "無法找到內容",
+ "mute_modal.hide_notifications": "隱藏來自這用戶的通知嗎?",
+ "navigation_bar.apps": "封鎖的使用者",
+ "navigation_bar.blocks": "被你封鎖的用戶",
+ "navigation_bar.bookmarks": "書籤",
+ "navigation_bar.community_timeline": "本站時間軸",
+ "navigation_bar.compose": "撰寫新嘟文",
+ "navigation_bar.direct": "個人訊息",
+ "navigation_bar.discover": "探索",
+ "navigation_bar.domain_blocks": "隱藏的服務站",
+ "navigation_bar.edit_profile": "修改個人資料",
+ "navigation_bar.favourites": "最愛的內容",
+ "navigation_bar.filters": "靜音詞彙",
+ "navigation_bar.follow_requests": "關注請求",
+ "navigation_bar.follows_and_followers": "關注及關注者",
+ "navigation_bar.info": "關於本服務站",
+ "navigation_bar.keyboard_shortcuts": "鍵盤快速鍵",
+ "navigation_bar.lists": "列表",
+ "navigation_bar.logout": "登出",
+ "navigation_bar.mutes": "被你靜音的用戶",
+ "navigation_bar.personal": "個人",
+ "navigation_bar.pins": "置頂文章",
+ "navigation_bar.preferences": "偏好設定",
+ "navigation_bar.public_timeline": "跨站時間軸",
+ "navigation_bar.security": "安全",
+ "notification.favourite": "{name} 赞藏了你的文章",
+ "notification.follow": "{name} 開始關注你",
+ "notification.follow_request": "{name} 要求關注你",
+ "notification.mention": "{name} 提及你",
+ "notification.own_poll": "您的投票已結束",
+ "notification.poll": "您投過的投票已經結束",
+ "notification.reblog": "{name} 轉推你的文章",
+ "notifications.clear": "清空通知紀錄",
+ "notifications.clear_confirmation": "你確定要清空通知紀錄嗎?",
+ "notifications.column_settings.alert": "顯示桌面通知",
+<<<<<<< HEAD
+ "notifications.column_settings.favourite": "赞藏了你的文章:",
+ "notifications.column_settings.filter_bar.advanced": "Display all categories",
+ "notifications.column_settings.filter_bar.category": "Quick filter bar",
+ "notifications.column_settings.filter_bar.show": "Show",
+=======
+ "notifications.column_settings.favourite": "收藏了你的文章:",
+ "notifications.column_settings.filter_bar.advanced": "顯示所有分類",
+ "notifications.column_settings.filter_bar.category": "快速過濾欄",
+ "notifications.column_settings.filter_bar.show": "顯示",
+>>>>>>> master
+ "notifications.column_settings.follow": "關注你:",
+ "notifications.column_settings.follow_request": "新的關注請求:",
+ "notifications.column_settings.mention": "提及你:",
+ "notifications.column_settings.poll": "投票結果:",
+ "notifications.column_settings.push": "推送通知",
+ "notifications.column_settings.reblog": "轉推你的文章:",
+ "notifications.column_settings.show": "在通知欄顯示",
+ "notifications.column_settings.sound": "播放音效",
+ "notifications.filter.all": "全部",
+ "notifications.filter.boosts": "轉嘟",
+ "notifications.filter.favourites": "最愛",
+ "notifications.filter.follows": "關注的使用者",
+ "notifications.filter.mentions": "提及",
+ "notifications.filter.polls": "投票結果",
+ "notifications.group": "{count} 條通知",
+ "poll.closed": "已關閉",
+ "poll.refresh": "重新整理",
+ "poll.total_people": "{count, plural, one {# 個投票} other {# 個投票}}",
+ "poll.total_votes": "{count, plural, one {# 個投票} other {# 個投票}}",
+ "poll.vote": "投票",
+ "poll.voted": "你已對此問題投票",
+ "poll_button.add_poll": "建立投票",
+ "poll_button.remove_poll": "移除投票",
+ "privacy.change": "調整私隱設定",
+ "privacy.direct.long": "只有提及的用戶能看到",
+ "privacy.direct.short": "私人訊息",
+ "privacy.private.long": "只有關注你用戶能看到",
+ "privacy.private.short": "關注者",
+ "privacy.public.long": "在公共時間軸顯示",
+ "privacy.public.short": "公共",
+ "privacy.unlisted.long": "公開,但不在公共時間軸顯示",
+ "privacy.unlisted.short": "公開",
+ "refresh": "重新整理",
+ "regeneration_indicator.label": "載入中……",
+ "regeneration_indicator.sublabel": "你的主頁時間軸正在準備中!",
+ "relative_time.days": "{number}日",
+ "relative_time.hours": "{number}小時",
+ "relative_time.just_now": "剛剛",
+ "relative_time.minutes": "{number}分鐘",
+ "relative_time.seconds": "{number}秒",
+ "relative_time.today": "今天",
+ "reply_indicator.cancel": "取消",
+ "report.forward": "轉寄到 {target}",
+ "report.forward_hint": "這個帳戶屬於其他服務站。要向該服務站發送匿名的舉報訊息嗎?",
+ "report.hint": "這訊息會發送到你服務站的管理員。你可以提供舉報這個帳戶的理由:",
+ "report.placeholder": "額外訊息",
+ "report.submit": "提交",
+ "report.target": "舉報",
+ "search.placeholder": "搜尋",
+ "search_popout.search_format": "高級搜索格式",
+ "search_popout.tips.full_text": "輸入簡單的文字,搜索由你發放、赞藏、轉推和提及你的文章,以及符合的用戶名稱,帳號名稱和標籤。",
+ "search_popout.tips.hashtag": "標籤",
+ "search_popout.tips.status": "文章",
+ "search_popout.tips.text": "輸入簡單的文字,搜索符合的用戶名稱,帳號名稱和標籤",
+ "search_popout.tips.user": "用戶",
+ "search_results.accounts": "使用者",
+ "search_results.hashtags": "標籤",
+ "search_results.statuses": "文章",
+ "search_results.statuses_fts_disabled": "「依內容搜尋嘟文」未在此 Mastodon 伺服器啟用。",
+ "search_results.total": "{count, number} 項結果",
+ "status.admin_account": "開啟 @{name} 的管理介面",
+ "status.admin_status": "在管理介面開啟此嘟文",
+ "status.block": "封鎖 @{name}",
+ "status.bookmark": "書籤",
+ "status.cancel_reblog_private": "取消轉推",
+ "status.cannot_reblog": "這篇文章無法被轉推",
+ "status.copy": "將連結複製到嘟文中",
+ "status.delete": "刪除",
+ "status.detailed_status": "對話的詳細內容",
+ "status.direct": "私訊 @{name}",
+ "status.embed": "鑲嵌",
+<<<<<<< HEAD
+ "status.favourite": "赞藏",
+ "status.filtered": "Filtered",
+=======
+ "status.favourite": "收藏",
+ "status.filtered": "已過濾",
+>>>>>>> master
+ "status.load_more": "載入更多",
+ "status.media_hidden": "隱藏媒體內容",
+ "status.mention": "提及 @{name}",
+ "status.more": "更多",
+ "status.mute": "把 @{name} 靜音",
+ "status.mute_conversation": "靜音對話",
+ "status.open": "展開文章",
+ "status.pin": "置頂到資料頁",
+ "status.pinned": "置頂文章",
+ "status.read_more": "閱讀更多",
+ "status.reblog": "轉推",
+ "status.reblog_private": "轉推到原讀者",
+ "status.reblogged_by": "{name} 轉推",
+ "status.reblogs.empty": "還沒有人轉嘟。如果有,會顯示在這裡。",
+ "status.redraft": "刪除並編輯",
+ "status.remove_bookmark": "移除書籤",
+ "status.reply": "回應",
+ "status.replyAll": "回應所有人",
+ "status.report": "舉報 @{name}",
+ "status.sensitive_warning": "敏感內容",
+ "status.share": "分享",
+ "status.show_less": "減少顯示",
+ "status.show_less_all": "減少顯示這類文章",
+ "status.show_more": "顯示更多",
+ "status.show_more_all": "顯示更多這類文章",
+ "status.show_thread": "顯示討論串",
+ "status.uncached_media_warning": "無法使用",
+ "status.unmute_conversation": "解禁對話",
+ "status.unpin": "解除置頂",
+ "suggestions.dismiss": "關閉建議",
+ "suggestions.header": "您可能對這些東西有興趣…",
+ "tabs_bar.federated_timeline": "跨站",
+ "tabs_bar.home": "主頁",
+ "tabs_bar.local_timeline": "本站",
+ "tabs_bar.notifications": "通知",
+ "tabs_bar.search": "搜尋",
+ "time_remaining.days": "剩餘{number, plural, one {# 天數} other {# 天數}}",
+ "time_remaining.hours": "剩餘{number, plural, one {# 小時} other {# 小時}}",
+ "time_remaining.minutes": "剩餘{number, plural, one {# 分鐘} other {# 分鐘}}",
+ "time_remaining.moments": "剩餘時間",
+ "time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
+ "trends.count_by_accounts": "{count} 位用戶在討論",
+ "trends.trending_now": "目前趨勢",
+ "ui.beforeunload": "如果你現在離開 Mastodon,你的草稿內容將會被丟棄。",
+ "upload_area.title": "將檔案拖放至此上載",
+ "upload_button.label": "上載媒體檔案",
+ "upload_error.limit": "已達到檔案上傳限制。",
+ "upload_error.poll": "不允許在投票上傳檔案。",
+ "upload_form.audio_description": "簡單描述內容給聽障人士",
+ "upload_form.description": "為視覺障礙人士添加文字說明",
+ "upload_form.edit": "編輯",
+ "upload_form.undo": "刪除",
+ "upload_form.video_description": "簡單描述給聽障或視障人士",
+ "upload_modal.analyzing_picture": "正在分析圖片…",
+ "upload_modal.apply": "套用",
+ "upload_modal.description_placeholder": "A quick brown fox 跳過那隻懶狗",
+ "upload_modal.detect_text": "從圖片偵測文字",
+ "upload_modal.edit_media": "編輯媒體",
+ "upload_modal.hint": "點擊或拖曳圓圈以選擇預覽縮圖。",
+ "upload_modal.preview_label": "預覽 ({ratio})",
+ "upload_progress.label": "上載中……",
+ "video.close": "關閉影片",
+ "video.download": "下載檔案",
+ "video.exit_fullscreen": "退出全熒幕",
+ "video.expand": "展開影片",
+ "video.fullscreen": "全熒幕",
+ "video.hide": "隱藏影片",
+ "video.mute": "靜音",
+ "video.pause": "暫停",
+ "video.play": "播放",
+ "video.unmute": "解除靜音"
+}
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 30c6ae024..cb02a4e03 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -1,9 +1,13 @@
{
+ "account.account_note_header": "Your note for @{name}",
+ "account.add_account_note": "Add note for @{name}",
"account.add_or_remove_from_list": "從名單中新增或移除",
"account.badges.bot": "機器人",
+ "account.badges.group": "群組",
"account.block": "封鎖 @{name}",
"account.block_domain": "隱藏來自 {domain} 的所有內容",
"account.blocked": "已封鎖",
+ "account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "取消關注請求",
"account.direct": "傳私訊給 @{name}",
"account.domain_blocked": "已隱藏網域",
@@ -38,10 +42,15 @@
"account.unfollow": "取消關注",
"account.unmute": "取消靜音 @{name}",
"account.unmute_notifications": "重新接收來自 @{name} 的通知",
+ "account_note.cancel": "Cancel",
+ "account_note.edit": "Edit",
+ "account_note.placeholder": "No comment provided",
+ "account_note.save": "Save",
"alert.rate_limited.message": "請在 {retry_time, time, medium} 過後重試",
"alert.rate_limited.title": "已限速",
"alert.unexpected.message": "發生了非預期的錯誤。",
"alert.unexpected.title": "哎呀!",
+ "announcement.announcement": "公告",
"autosuggest_hashtag.per_week": "{count} / 週",
"boost_modal.combo": "下次您可以按 {combo} 跳過",
"bundle_column_error.body": "載入此元件時發生錯誤。",
@@ -51,6 +60,7 @@
"bundle_modal_error.message": "載入此元件時發生錯誤。",
"bundle_modal_error.retry": "重試",
"column.blocks": "封鎖的使用者",
+ "column.bookmarks": "書籤",
"column.community": "本機時間軸",
"column.direct": "私訊",
"column.directory": "瀏覽個人資料",
@@ -71,7 +81,9 @@
"column_header.show_settings": "顯示設定",
"column_header.unpin": "取消釘選",
"column_subheading.settings": "設定",
+ "community.column_settings.local_only": "只有本地",
"community.column_settings.media_only": "只有媒體",
+ "community.column_settings.remote_only": "只有遠端",
"compose_form.direct_message_warning": "這條嘟文只有被提及的使用者才看得到。",
"compose_form.direct_message_warning_learn_more": "了解更多",
"compose_form.hashtag_warning": "由於這則嘟文被設定成「不公開」,所以它將不會被列在任何主題標籤下。只有公開的嘟文才能藉主題標籤找到。",
@@ -82,6 +94,8 @@
"compose_form.poll.duration": "投票期限",
"compose_form.poll.option_placeholder": "第 {number} 個選擇",
"compose_form.poll.remove_option": "移除此選擇",
+ "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項",
+ "compose_form.poll.switch_to_single": "變更投票為允許單一選項",
"compose_form.publish": "嘟出去",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "標記媒體為敏感內容",
@@ -103,7 +117,7 @@
"confirmations.logout.confirm": "登出",
"confirmations.logout.message": "確定要登出嗎?",
"confirmations.mute.confirm": "靜音",
- "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+ "confirmations.mute.explanation": "這將會隱藏來自他們的貼文與通知,但是他們還是可以查閱你的貼文與關注你。",
"confirmations.mute.message": "確定靜音 {name} ?",
"confirmations.redraft.confirm": "刪除並重新編輯",
"confirmations.redraft.message": "確定刪掉這則嘟文並重新編輯嗎?將會失去這則嘟文的轉嘟及赞藏,且回覆這則的嘟文將會變成獨立的嘟文。",
@@ -138,6 +152,7 @@
"empty_column.account_timeline": "這裡還沒有嘟文!",
"empty_column.account_unavailable": "無法取得個人資料",
"empty_column.blocks": "你還沒有封鎖任何使用者。",
+ "empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。",
"empty_column.community": "本地時間軸是空的。快公開嘟些文搶頭香啊!",
"empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。",
"empty_column.domain_blocks": "尚未隱藏任何網域。",
@@ -152,12 +167,13 @@
"empty_column.mutes": "你尚未靜音任何使用者。",
"empty_column.notifications": "您尚未收到任何通知,和別人互動開啟對話吧。",
"empty_column.public": "這裡什麼都沒有!嘗試寫些公開的嘟文,或著自己關注其他伺服器的使用者後就會有嘟文出現了",
- "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
- "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
- "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
- "errors.unexpected_crash.report_issue": "Report issue",
+ "error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,故無法正常顯示頁面。",
+ "error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有進展,你可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。",
+ "errors.unexpected_crash.copy_stacktrace": "複製到剪貼簿",
+ "errors.unexpected_crash.report_issue": "舉報問題",
"follow_request.authorize": "授權",
"follow_request.reject": "拒絕",
+ "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的員工認為可能想要自己審核這些帳號的追蹤請求。",
"getting_started.developers": "開發者",
"getting_started.directory": "個人資料目錄",
"getting_started.documentation": "文件",
@@ -178,6 +194,8 @@
"home.column_settings.basic": "基本",
"home.column_settings.show_reblogs": "顯示轉嘟",
"home.column_settings.show_replies": "顯示回覆",
+ "home.hide_announcements": "隱藏公告",
+ "home.show_announcements": "顯示公告",
"intervals.full.days": "{number, plural, one {# 天} other {# 天}}",
"intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}",
"intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}",
@@ -219,11 +237,13 @@
"keyboard_shortcuts.muted": "開啟靜音使用者名單",
"keyboard_shortcuts.my_profile": "開啟個人資料頁面",
"keyboard_shortcuts.notifications": "開啟通知欄",
+ "keyboard_shortcuts.open_media": "開啟媒體",
"keyboard_shortcuts.pinned": "開啟釘選的嘟文名單",
"keyboard_shortcuts.profile": "開啟作者的個人資料頁面",
"keyboard_shortcuts.reply": "回覆",
"keyboard_shortcuts.requests": "開啟關注請求名單",
"keyboard_shortcuts.search": "將焦點移至搜尋框",
+ "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "開啟「開始使用」欄位",
"keyboard_shortcuts.toggle_hidden": "顯示/隱藏在內容警告之後的正文",
"keyboard_shortcuts.toggle_sensitivity": "顯示 / 隱藏媒體",
@@ -251,6 +271,7 @@
"mute_modal.hide_notifications": "隱藏來自這位使用者的通知?",
"navigation_bar.apps": "封鎖的使用者",
"navigation_bar.blocks": "封鎖使用者",
+ "navigation_bar.bookmarks": "書籤",
"navigation_bar.community_timeline": "本機時間軸",
"navigation_bar.compose": "撰寫新嘟文",
"navigation_bar.direct": "私訊",
@@ -273,7 +294,9 @@
"navigation_bar.security": "安全性",
"notification.favourite": "{name} 把你的嘟文加入了最愛",
"notification.follow": "{name} 關注了你",
+ "notification.follow_request": "{name} 要求關注你",
"notification.mention": "{name} 提到了你",
+ "notification.own_poll": "您的投票已結束",
"notification.poll": "您投過的投票已經結束",
"notification.reblog": "{name}轉嘟了你的嘟文",
"notifications.clear": "清除通知",
@@ -284,6 +307,7 @@
"notifications.column_settings.filter_bar.category": "快速過濾欄",
"notifications.column_settings.filter_bar.show": "顯示",
"notifications.column_settings.follow": "新關注者:",
+ "notifications.column_settings.follow_request": "新的關注請求:",
"notifications.column_settings.mention": "提及:",
"notifications.column_settings.poll": "投票結果:",
"notifications.column_settings.push": "推送通知",
@@ -299,7 +323,7 @@
"notifications.group": "{count} 條通知",
"poll.closed": "已關閉",
"poll.refresh": "重新整理",
- "poll.total_people": "{count, plural, one {# person} other {# people}}",
+ "poll.total_people": "{count, plural, one {# 個投票} other {# 個投票}}",
"poll.total_votes": "{count, plural, one {# 個投票} other {# 個投票}}",
"poll.vote": "投票",
"poll.voted": "你已對此問題投票",
@@ -314,7 +338,7 @@
"privacy.public.short": "公開",
"privacy.unlisted.long": "公開,但不會顯示在公開時間軸",
"privacy.unlisted.short": "不公開",
- "refresh": "Refresh",
+ "refresh": "重新整理",
"regeneration_indicator.label": "載入中…",
"regeneration_indicator.sublabel": "你的主頁時間軸正在準備中!",
"relative_time.days": "{number} 天",
@@ -322,6 +346,7 @@
"relative_time.just_now": "剛剛",
"relative_time.minutes": "{number} 分",
"relative_time.seconds": "{number} 秒",
+ "relative_time.today": "今天",
"reply_indicator.cancel": "取消",
"report.forward": "轉寄到 {target}",
"report.forward_hint": "這個帳戶屬於其他站點。要像該站點發送匿名的檢舉訊息嗎?",
@@ -344,6 +369,7 @@
"status.admin_account": "開啟 @{name} 的管理介面",
"status.admin_status": "在管理介面開啟此嘟文",
"status.block": "封鎖 @{name}",
+ "status.bookmark": "書籤",
"status.cancel_reblog_private": "取消轉嘟",
"status.cannot_reblog": "這篇嘟文無法被轉嘟",
"status.copy": "將連結複製到嘟文中",
@@ -368,6 +394,7 @@
"status.reblogged_by": "{name} 轉嘟了",
"status.reblogs.empty": "還沒有人轉嘟。如果有,會顯示在這裡。",
"status.redraft": "刪除 & 編輯",
+ "status.remove_bookmark": "移除書籤",
"status.reply": "回覆",
"status.replyAll": "回覆所有人",
"status.report": "檢舉 @{name}",
@@ -393,6 +420,10 @@
"time_remaining.minutes": "剩餘{number, plural, one {# 分鐘} other {# 分鐘}}",
"time_remaining.moments": "剩餘時間",
"time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+ "timeline_hint.resources.followers": "Followers",
+ "timeline_hint.resources.follows": "Follows",
+ "timeline_hint.resources.statuses": "Older toots",
"trends.count_by_accounts": "{count} 位使用者在討論",
"trends.trending_now": "目前趨勢",
"ui.beforeunload": "如果離開 Mastodon,你的草稿將會不見。",
@@ -400,18 +431,21 @@
"upload_button.label": "上傳媒體檔案 (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "已達到檔案上傳限制。",
"upload_error.poll": "不允許在投票上傳檔案。",
+ "upload_form.audio_description": "簡單描述內容給聽障人士",
"upload_form.description": "為視障人士增加文字說明",
"upload_form.edit": "編輯",
"upload_form.undo": "刪除",
+ "upload_form.video_description": "簡單描述給聽障或視障人士",
"upload_modal.analyzing_picture": "正在分析圖片…",
"upload_modal.apply": "套用",
"upload_modal.description_placeholder": "A quick brown fox 跳過那隻懶狗",
"upload_modal.detect_text": "從圖片偵測文字",
"upload_modal.edit_media": "編輯媒體",
- "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+ "upload_modal.hint": "點擊或拖曳圓圈以選擇預覽縮圖。",
"upload_modal.preview_label": "預覽 ({ratio})",
"upload_progress.label": "上傳中...",
"video.close": "關閉影片",
+ "video.download": "下載檔案",
"video.exit_fullscreen": "退出全螢幕",
"video.expand": "展開影片",
"video.fullscreen": "全螢幕",
diff --git a/app/javascript/mastodon/main.js b/app/javascript/mastodon/main.js
index 5d73caa10..da4884fd3 100644
--- a/app/javascript/mastodon/main.js
+++ b/app/javascript/mastodon/main.js
@@ -12,7 +12,7 @@ function main() {
if (window.history && history.replaceState) {
const { pathname, search, hash } = window.location;
const path = pathname + search + hash;
- if (!(/^\/web[$/]/).test(path)) {
+ if (!(/^\/web($|\/)/).test(path)) {
history.replaceState(null, document.title, `/web${path}`);
}
}
diff --git a/app/javascript/mastodon/middleware/errors.js b/app/javascript/mastodon/middleware/errors.js
index 3cebb42e0..0a65fd321 100644
--- a/app/javascript/mastodon/middleware/errors.js
+++ b/app/javascript/mastodon/middleware/errors.js
@@ -8,7 +8,7 @@ export default function errorsMiddleware() {
const isFail = new RegExp(`${defaultFailSuffix}$`, 'g');
if (action.type.match(isFail)) {
- dispatch(showAlertForError(action.error));
+ dispatch(showAlertForError(action.error, action.skipNotFound));
}
}
diff --git a/app/javascript/mastodon/reducers/announcements.js b/app/javascript/mastodon/reducers/announcements.js
new file mode 100644
index 000000000..34e08eac8
--- /dev/null
+++ b/app/javascript/mastodon/reducers/announcements.js
@@ -0,0 +1,102 @@
+import {
+ ANNOUNCEMENTS_FETCH_REQUEST,
+ ANNOUNCEMENTS_FETCH_SUCCESS,
+ ANNOUNCEMENTS_FETCH_FAIL,
+ ANNOUNCEMENTS_UPDATE,
+ ANNOUNCEMENTS_REACTION_UPDATE,
+ ANNOUNCEMENTS_REACTION_ADD_REQUEST,
+ ANNOUNCEMENTS_REACTION_ADD_FAIL,
+ ANNOUNCEMENTS_REACTION_REMOVE_REQUEST,
+ ANNOUNCEMENTS_REACTION_REMOVE_FAIL,
+ ANNOUNCEMENTS_TOGGLE_SHOW,
+ ANNOUNCEMENTS_DELETE,
+ ANNOUNCEMENTS_DISMISS_SUCCESS,
+} from '../actions/announcements';
+import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
+
+const initialState = ImmutableMap({
+ items: ImmutableList(),
+ isLoading: false,
+ show: false,
+});
+
+const updateReaction = (state, id, name, updater) => state.update('items', list => list.map(announcement => {
+ if (announcement.get('id') === id) {
+ return announcement.update('reactions', reactions => {
+ const idx = reactions.findIndex(reaction => reaction.get('name') === name);
+
+ if (idx > -1) {
+ return reactions.update(idx, reaction => updater(reaction));
+ }
+
+ return reactions.push(updater(fromJS({ name, count: 0 })));
+ });
+ }
+
+ return announcement;
+}));
+
+const updateReactionCount = (state, reaction) => updateReaction(state, reaction.announcement_id, reaction.name, x => x.set('count', reaction.count));
+
+const addReaction = (state, id, name) => updateReaction(state, id, name, x => x.set('me', true).update('count', y => y + 1));
+
+const removeReaction = (state, id, name) => updateReaction(state, id, name, x => x.set('me', false).update('count', y => y - 1));
+
+const sortAnnouncements = list => list.sortBy(x => x.get('starts_at') || x.get('published_at'));
+
+const updateAnnouncement = (state, announcement) => {
+ const idx = state.get('items').findIndex(x => x.get('id') === announcement.get('id'));
+
+ if (idx > -1) {
+ // Deep merge is used because announcements from the streaming API do not contain
+ // personalized data about which reactions have been selected by the given user,
+ // and that is information we want to preserve
+ return state.update('items', list => sortAnnouncements(list.update(idx, x => x.mergeDeep(announcement))));
+ }
+
+ return state.update('items', list => sortAnnouncements(list.unshift(announcement)));
+};
+
+export default function announcementsReducer(state = initialState, action) {
+ switch(action.type) {
+ case ANNOUNCEMENTS_TOGGLE_SHOW:
+ return state.withMutations(map => {
+ map.set('show', !map.get('show'));
+ });
+ case ANNOUNCEMENTS_FETCH_REQUEST:
+ return state.set('isLoading', true);
+ case ANNOUNCEMENTS_FETCH_SUCCESS:
+ return state.withMutations(map => {
+ const items = fromJS(action.announcements);
+
+ map.set('items', items);
+ map.set('isLoading', false);
+ });
+ case ANNOUNCEMENTS_FETCH_FAIL:
+ return state.set('isLoading', false);
+ case ANNOUNCEMENTS_UPDATE:
+ return updateAnnouncement(state, fromJS(action.announcement));
+ case ANNOUNCEMENTS_REACTION_UPDATE:
+ return updateReactionCount(state, action.reaction);
+ case ANNOUNCEMENTS_REACTION_ADD_REQUEST:
+ case ANNOUNCEMENTS_REACTION_REMOVE_FAIL:
+ return addReaction(state, action.id, action.name);
+ case ANNOUNCEMENTS_REACTION_REMOVE_REQUEST:
+ case ANNOUNCEMENTS_REACTION_ADD_FAIL:
+ return removeReaction(state, action.id, action.name);
+ case ANNOUNCEMENTS_DISMISS_SUCCESS:
+ return updateAnnouncement(state, fromJS({ 'id': action.id, 'read': true }));
+ case ANNOUNCEMENTS_DELETE:
+ return state.update('items', list => {
+ const idx = list.findIndex(x => x.get('id') === action.id);
+
+ if (idx > -1) {
+ return list.delete(idx);
+ }
+
+ return list;
+ });
+ default:
+ return state;
+ }
+};
diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js
index b5dc81703..4c0ba1c36 100644
--- a/app/javascript/mastodon/reducers/compose.js
+++ b/app/javascript/mastodon/reducers/compose.js
@@ -14,6 +14,10 @@ import {
COMPOSE_UPLOAD_FAIL,
COMPOSE_UPLOAD_UNDO,
COMPOSE_UPLOAD_PROGRESS,
+ THUMBNAIL_UPLOAD_REQUEST,
+ THUMBNAIL_UPLOAD_SUCCESS,
+ THUMBNAIL_UPLOAD_FAIL,
+ THUMBNAIL_UPLOAD_PROGRESS,
COMPOSE_SUGGESTIONS_CLEAR,
COMPOSE_SUGGESTIONS_READY,
COMPOSE_SUGGESTION_SELECT,
@@ -60,7 +64,10 @@ const initialState = ImmutableMap({
is_changing_upload: false,
is_uploading: false,
progress: 0,
+ isUploadingThumbnail: false,
+ thumbnailProgress: 0,
media_attachments: ImmutableList(),
+ pending_media_attachments: 0,
poll: null,
suggestion_token: null,
suggestions: ImmutableList(),
@@ -114,6 +121,7 @@ function appendMedia(state, media, file) {
map.set('is_uploading', false);
map.set('resetFileKey', Math.floor((Math.random() * 0x10000)));
map.set('idempotencyKey', uuid());
+ map.update('pending_media_attachments', n => n - 1);
if (prevSize === 0 && (state.get('default_sensitive') || state.get('spoiler'))) {
map.set('sensitive', true);
@@ -259,7 +267,6 @@ export default function compose(state = initialState, action) {
});
case COMPOSE_SPOILERNESS_CHANGE:
return state.withMutations(map => {
- map.set('spoiler_text', '');
map.set('spoiler', !state.get('spoiler'));
map.set('idempotencyKey', uuid());
@@ -322,15 +329,31 @@ export default function compose(state = initialState, action) {
case COMPOSE_UPLOAD_CHANGE_FAIL:
return state.set('is_changing_upload', false);
case COMPOSE_UPLOAD_REQUEST:
- return state.set('is_uploading', true);
+ return state.set('is_uploading', true).update('pending_media_attachments', n => n + 1);
case COMPOSE_UPLOAD_SUCCESS:
return appendMedia(state, fromJS(action.media), action.file);
case COMPOSE_UPLOAD_FAIL:
- return state.set('is_uploading', false);
+ return state.set('is_uploading', false).update('pending_media_attachments', n => n - 1);
case COMPOSE_UPLOAD_UNDO:
return removeMedia(state, action.media_id);
case COMPOSE_UPLOAD_PROGRESS:
return state.set('progress', Math.round((action.loaded / action.total) * 100));
+ case THUMBNAIL_UPLOAD_REQUEST:
+ return state.set('isUploadingThumbnail', true);
+ case THUMBNAIL_UPLOAD_PROGRESS:
+ return state.set('thumbnailProgress', Math.round((action.loaded / action.total) * 100));
+ case THUMBNAIL_UPLOAD_FAIL:
+ return state.set('isUploadingThumbnail', false);
+ case THUMBNAIL_UPLOAD_SUCCESS:
+ return state
+ .set('isUploadingThumbnail', false)
+ .update('media_attachments', list => list.map(item => {
+ if (item.get('id') === action.media.id) {
+ return fromJS(action.media);
+ }
+
+ return item;
+ }));
case COMPOSE_MENTION:
return state.withMutations(map => {
map.update('text', text => [text.trim(), `@${action.account.get('acct')} `].filter((str) => str.length !== 0).join(' '));
diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js
index b8d608888..3823bb05e 100644
--- a/app/javascript/mastodon/reducers/index.js
+++ b/app/javascript/mastodon/reducers/index.js
@@ -34,8 +34,11 @@ import polls from './polls';
import identity_proofs from './identity_proofs';
import trends from './trends';
import missed_updates from './missed_updates';
+import announcements from './announcements';
+import markers from './markers';
const reducers = {
+ announcements,
dropdown_menu,
timelines,
meta,
@@ -71,6 +74,7 @@ const reducers = {
polls,
trends,
missed_updates,
+ markers,
};
export default combineReducers(reducers);
diff --git a/app/javascript/mastodon/reducers/markers.js b/app/javascript/mastodon/reducers/markers.js
new file mode 100644
index 000000000..fb1572ff5
--- /dev/null
+++ b/app/javascript/mastodon/reducers/markers.js
@@ -0,0 +1,25 @@
+import {
+ MARKERS_SUBMIT_SUCCESS,
+} from '../actions/markers';
+
+const initialState = ImmutableMap({
+ home: '0',
+ notifications: '0',
+});
+
+import { Map as ImmutableMap } from 'immutable';
+
+export default function markers(state = initialState, action) {
+ switch(action.type) {
+ case MARKERS_SUBMIT_SUCCESS:
+ if (action.home) {
+ state = state.set('home', action.home);
+ }
+ if (action.notifications) {
+ state = state.set('notifications', action.notifications);
+ }
+ return state;
+ default:
+ return state;
+ }
+};
diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js
index 6ba80bd6a..ed1ba0272 100644
--- a/app/javascript/mastodon/reducers/notifications.js
+++ b/app/javascript/mastodon/reducers/notifications.js
@@ -13,6 +13,8 @@ import {
import {
ACCOUNT_BLOCK_SUCCESS,
ACCOUNT_MUTE_SUCCESS,
+ FOLLOW_REQUEST_AUTHORIZE_SUCCESS,
+ FOLLOW_REQUEST_REJECT_SUCCESS,
} from '../actions/accounts';
import { DOMAIN_BLOCK_SUCCESS } from 'mastodon/actions/domain_blocks';
import { TIMELINE_DELETE, TIMELINE_DISCONNECT } from '../actions/timelines';
@@ -70,11 +72,11 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece
mutable.update(usePendingItems ? 'pendingItems' : 'items', list => {
const lastIndex = 1 + list.findLastIndex(
- item => item !== null && (compareId(item.get('id'), items.last().get('id')) > 0 || item.get('id') === items.last().get('id'))
+ item => item !== null && (compareId(item.get('id'), items.last().get('id')) > 0 || item.get('id') === items.last().get('id')),
);
const firstIndex = 1 + list.take(lastIndex).findLastIndex(
- item => item !== null && compareId(item.get('id'), items.first().get('id')) > 0
+ item => item !== null && compareId(item.get('id'), items.first().get('id')) > 0,
);
return list.take(firstIndex).concat(items, list.skip(lastIndex));
@@ -89,8 +91,8 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece
});
};
-const filterNotifications = (state, accountIds) => {
- const helper = list => list.filterNot(item => item !== null && accountIds.includes(item.get('account')));
+const filterNotifications = (state, accountIds, type) => {
+ const helper = list => list.filterNot(item => item !== null && accountIds.includes(item.get('account')) && (type === undefined || type === item.get('type')));
return state.update('items', helper).update('pendingItems', helper);
};
@@ -129,6 +131,11 @@ export default function notifications(state = initialState, action) {
return action.relationship.muting_notifications ? filterNotifications(state, [action.relationship.id]) : state;
case DOMAIN_BLOCK_SUCCESS:
return filterNotifications(state, action.accounts);
+ case FOLLOW_REQUEST_AUTHORIZE_SUCCESS:
+ case FOLLOW_REQUEST_REJECT_SUCCESS:
+ return filterNotifications(state, [action.id], 'follow_request');
+ case ACCOUNT_MUTE_SUCCESS:
+ return action.relationship.muting_notifications ? filterNotifications(state, [action.relationship.id]) : state;
case NOTIFICATIONS_CLEAR:
return state.set('items', ImmutableList()).set('pendingItems', ImmutableList()).set('hasMore', false);
case TIMELINE_DELETE:
diff --git a/app/javascript/mastodon/reducers/push_notifications.js b/app/javascript/mastodon/reducers/push_notifications.js
index 317352b79..c48cfb705 100644
--- a/app/javascript/mastodon/reducers/push_notifications.js
+++ b/app/javascript/mastodon/reducers/push_notifications.js
@@ -6,6 +6,7 @@ const initialState = Immutable.Map({
subscription: null,
alerts: new Immutable.Map({
follow: false,
+ follow_request: false,
favourite: false,
reblog: false,
mention: false,
diff --git a/app/javascript/mastodon/reducers/relationships.js b/app/javascript/mastodon/reducers/relationships.js
index 8322780de..1d050cc63 100644
--- a/app/javascript/mastodon/reducers/relationships.js
+++ b/app/javascript/mastodon/reducers/relationships.js
@@ -17,6 +17,9 @@ import {
DOMAIN_BLOCK_SUCCESS,
DOMAIN_UNBLOCK_SUCCESS,
} from '../actions/domain_blocks';
+import {
+ ACCOUNT_NOTE_SUBMIT_SUCCESS,
+} from '../actions/account_notes';
import { Map as ImmutableMap, fromJS } from 'immutable';
const normalizeRelationship = (state, relationship) => state.set(relationship.id, fromJS(relationship));
@@ -57,6 +60,7 @@ export default function relationships(state = initialState, action) {
case ACCOUNT_UNMUTE_SUCCESS:
case ACCOUNT_PIN_SUCCESS:
case ACCOUNT_UNPIN_SUCCESS:
+ case ACCOUNT_NOTE_SUBMIT_SUCCESS:
return normalizeRelationship(state, action.relationship);
case RELATIONSHIPS_FETCH_SUCCESS:
return normalizeRelationships(state, action.relationships);
diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js
index 793a99f8f..efef2ad9a 100644
--- a/app/javascript/mastodon/reducers/settings.js
+++ b/app/javascript/mastodon/reducers/settings.js
@@ -30,6 +30,7 @@ const initialState = ImmutableMap({
notifications: ImmutableMap({
alerts: ImmutableMap({
follow: true,
+ follow_request: false,
favourite: true,
reblog: true,
mention: true,
@@ -44,6 +45,7 @@ const initialState = ImmutableMap({
shows: ImmutableMap({
follow: true,
+ follow_request: false,
favourite: true,
reblog: true,
mention: true,
@@ -52,6 +54,7 @@ const initialState = ImmutableMap({
sounds: ImmutableMap({
follow: true,
+ follow_request: false,
favourite: true,
reblog: true,
mention: true,
diff --git a/app/javascript/mastodon/reducers/status_lists.js b/app/javascript/mastodon/reducers/status_lists.js
index 6c5f33557..9f8f28dee 100644
--- a/app/javascript/mastodon/reducers/status_lists.js
+++ b/app/javascript/mastodon/reducers/status_lists.js
@@ -6,6 +6,14 @@ import {
FAVOURITED_STATUSES_EXPAND_SUCCESS,
FAVOURITED_STATUSES_EXPAND_FAIL,
} from '../actions/favourites';
+import {
+ BOOKMARKED_STATUSES_FETCH_REQUEST,
+ BOOKMARKED_STATUSES_FETCH_SUCCESS,
+ BOOKMARKED_STATUSES_FETCH_FAIL,
+ BOOKMARKED_STATUSES_EXPAND_REQUEST,
+ BOOKMARKED_STATUSES_EXPAND_SUCCESS,
+ BOOKMARKED_STATUSES_EXPAND_FAIL,
+} from '../actions/bookmarks';
import {
PINNED_STATUSES_FETCH_SUCCESS,
} from '../actions/pin_statuses';
@@ -13,6 +21,8 @@ import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
import {
FAVOURITE_SUCCESS,
UNFAVOURITE_SUCCESS,
+ BOOKMARK_SUCCESS,
+ UNBOOKMARK_SUCCESS,
PIN_SUCCESS,
UNPIN_SUCCESS,
} from '../actions/interactions';
@@ -23,6 +33,11 @@ const initialState = ImmutableMap({
loaded: false,
items: ImmutableList(),
}),
+ bookmarks: ImmutableMap({
+ next: null,
+ loaded: false,
+ items: ImmutableList(),
+ }),
pins: ImmutableMap({
next: null,
loaded: false,
@@ -71,10 +86,24 @@ export default function statusLists(state = initialState, action) {
return normalizeList(state, 'favourites', action.statuses, action.next);
case FAVOURITED_STATUSES_EXPAND_SUCCESS:
return appendToList(state, 'favourites', action.statuses, action.next);
+ case BOOKMARKED_STATUSES_FETCH_REQUEST:
+ case BOOKMARKED_STATUSES_EXPAND_REQUEST:
+ return state.setIn(['bookmarks', 'isLoading'], true);
+ case BOOKMARKED_STATUSES_FETCH_FAIL:
+ case BOOKMARKED_STATUSES_EXPAND_FAIL:
+ return state.setIn(['bookmarks', 'isLoading'], false);
+ case BOOKMARKED_STATUSES_FETCH_SUCCESS:
+ return normalizeList(state, 'bookmarks', action.statuses, action.next);
+ case BOOKMARKED_STATUSES_EXPAND_SUCCESS:
+ return appendToList(state, 'bookmarks', action.statuses, action.next);
case FAVOURITE_SUCCESS:
return prependOneToList(state, 'favourites', action.status);
case UNFAVOURITE_SUCCESS:
return removeOneFromList(state, 'favourites', action.status);
+ case BOOKMARK_SUCCESS:
+ return prependOneToList(state, 'bookmarks', action.status);
+ case UNBOOKMARK_SUCCESS:
+ return removeOneFromList(state, 'bookmarks', action.status);
case PINNED_STATUSES_FETCH_SUCCESS:
return normalizeList(state, 'pins', action.statuses, action.next);
case PIN_SUCCESS:
diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js
index 885cc221c..53dec9585 100644
--- a/app/javascript/mastodon/reducers/statuses.js
+++ b/app/javascript/mastodon/reducers/statuses.js
@@ -3,12 +3,16 @@ import {
REBLOG_FAIL,
FAVOURITE_REQUEST,
FAVOURITE_FAIL,
+ UNFAVOURITE_SUCCESS,
+ BOOKMARK_REQUEST,
+ BOOKMARK_FAIL,
} from '../actions/interactions';
import {
STATUS_MUTE_SUCCESS,
STATUS_UNMUTE_SUCCESS,
STATUS_REVEAL,
STATUS_HIDE,
+ STATUS_COLLAPSE,
} from '../actions/statuses';
import { TIMELINE_DELETE } from '../actions/timelines';
import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer';
@@ -21,7 +25,7 @@ const importStatuses = (state, statuses) =>
const deleteStatus = (state, id, references) => {
references.forEach(ref => {
- state = deleteStatus(state, ref[0], []);
+ state = deleteStatus(state, ref, []);
});
return state.delete(id);
@@ -37,8 +41,14 @@ export default function statuses(state = initialState, action) {
return importStatuses(state, action.statuses);
case FAVOURITE_REQUEST:
return state.setIn([action.status.get('id'), 'favourited'], true);
+ case UNFAVOURITE_SUCCESS:
+ return state.updateIn([action.status.get('id'), 'favourites_count'], x => Math.max(0, x - 1));
case FAVOURITE_FAIL:
return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'favourited'], false);
+ case BOOKMARK_REQUEST:
+ return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], true);
+ case BOOKMARK_FAIL:
+ return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], false);
case REBLOG_REQUEST:
return state.setIn([action.status.get('id'), 'reblogged'], true);
case REBLOG_FAIL:
@@ -63,6 +73,8 @@ export default function statuses(state = initialState, action) {
}
});
});
+ case STATUS_COLLAPSE:
+ return state.setIn([action.id, 'collapsed'], action.isCollapsed);
case TIMELINE_DELETE:
return deleteStatus(state, action.id, action.references);
default:
diff --git a/app/javascript/mastodon/reducers/timelines.js b/app/javascript/mastodon/reducers/timelines.js
index 0d7222e10..9156db021 100644
--- a/app/javascript/mastodon/reducers/timelines.js
+++ b/app/javascript/mastodon/reducers/timelines.js
@@ -54,7 +54,7 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is
return oldIds.take(firstIndex + 1).concat(
isPartial && oldIds.get(firstIndex) !== null ? newIds.unshift(null) : newIds,
- oldIds.skip(lastIndex)
+ oldIds.skip(lastIndex),
);
});
}
@@ -89,7 +89,7 @@ const updateTimeline = (state, timeline, status, usePendingItems) => {
}));
};
-const deleteStatus = (state, id, accountId, references, exclude_account = null) => {
+const deleteStatus = (state, id, references, exclude_account = null) => {
state.keySeq().forEach(timeline => {
if (exclude_account === null || (timeline !== `account:${exclude_account}` && !timeline.startsWith(`account:${exclude_account}:`))) {
const helper = list => list.filterNot(item => item === id);
@@ -99,7 +99,7 @@ const deleteStatus = (state, id, accountId, references, exclude_account = null)
// Remove reblogs of deleted status
references.forEach(ref => {
- state = deleteStatus(state, ref[0], ref[1], [], exclude_account);
+ state = deleteStatus(state, ref, [], exclude_account);
});
return state;
@@ -117,8 +117,8 @@ const filterTimelines = (state, relationship, statuses) => {
return;
}
- references = statuses.filter(item => item.get('reblog') === status.get('id')).map(item => [item.get('id'), item.get('account')]);
- state = deleteStatus(state, status.get('id'), status.get('account'), references, relationship.id);
+ references = statuses.filter(item => item.get('reblog') === status.get('id')).map(item => item.get('id'));
+ state = deleteStatus(state, status.get('id'), references, relationship.id);
});
return state;
@@ -150,7 +150,7 @@ export default function timelines(state = initialState, action) {
case TIMELINE_UPDATE:
return updateTimeline(state, action.timeline, fromJS(action.status), action.usePendingItems);
case TIMELINE_DELETE:
- return deleteStatus(state, action.id, action.accountId, action.references, action.reblogOf);
+ return deleteStatus(state, action.id, action.references, action.reblogOf);
case TIMELINE_CLEAR:
return clearTimeline(state, action.timeline);
case ACCOUNT_BLOCK_SUCCESS:
@@ -166,7 +166,7 @@ export default function timelines(state = initialState, action) {
return state.update(
action.timeline,
initialTimeline,
- map => map.set('online', false).update(action.usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items)
+ map => map.set('online', false).update(action.usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items),
);
default:
return state;
diff --git a/app/javascript/mastodon/reducers/user_lists.js b/app/javascript/mastodon/reducers/user_lists.js
index 08e94022f..e7eef2364 100644
--- a/app/javascript/mastodon/reducers/user_lists.js
+++ b/app/javascript/mastodon/reducers/user_lists.js
@@ -1,10 +1,25 @@
import {
+ NOTIFICATIONS_UPDATE,
+} from '../actions/notifications';
+import {
+ FOLLOWERS_FETCH_REQUEST,
FOLLOWERS_FETCH_SUCCESS,
+ FOLLOWERS_FETCH_FAIL,
+ FOLLOWERS_EXPAND_REQUEST,
FOLLOWERS_EXPAND_SUCCESS,
+ FOLLOWERS_EXPAND_FAIL,
+ FOLLOWING_FETCH_REQUEST,
FOLLOWING_FETCH_SUCCESS,
+ FOLLOWING_FETCH_FAIL,
+ FOLLOWING_EXPAND_REQUEST,
FOLLOWING_EXPAND_SUCCESS,
+ FOLLOWING_EXPAND_FAIL,
+ FOLLOW_REQUESTS_FETCH_REQUEST,
FOLLOW_REQUESTS_FETCH_SUCCESS,
+ FOLLOW_REQUESTS_FETCH_FAIL,
+ FOLLOW_REQUESTS_EXPAND_REQUEST,
FOLLOW_REQUESTS_EXPAND_SUCCESS,
+ FOLLOW_REQUESTS_EXPAND_FAIL,
FOLLOW_REQUEST_AUTHORIZE_SUCCESS,
FOLLOW_REQUEST_REJECT_SUCCESS,
} from '../actions/accounts';
@@ -13,12 +28,20 @@ import {
FAVOURITES_FETCH_SUCCESS,
} from '../actions/interactions';
import {
+ BLOCKS_FETCH_REQUEST,
BLOCKS_FETCH_SUCCESS,
+ BLOCKS_FETCH_FAIL,
+ BLOCKS_EXPAND_REQUEST,
BLOCKS_EXPAND_SUCCESS,
+ BLOCKS_EXPAND_FAIL,
} from '../actions/blocks';
import {
+ MUTES_FETCH_REQUEST,
MUTES_FETCH_SUCCESS,
+ MUTES_FETCH_FAIL,
+ MUTES_EXPAND_REQUEST,
MUTES_EXPAND_SUCCESS,
+ MUTES_EXPAND_FAIL,
} from '../actions/mutes';
import {
DIRECTORY_FETCH_REQUEST,
@@ -44,12 +67,19 @@ const normalizeList = (state, type, id, accounts, next) => {
return state.setIn([type, id], ImmutableMap({
next,
items: ImmutableList(accounts.map(item => item.id)),
+ isLoading: false,
}));
};
const appendToList = (state, type, id, accounts, next) => {
return state.updateIn([type, id], map => {
- return map.set('next', next).update('items', list => list.concat(accounts.map(item => item.id)));
+ return map.set('next', next).set('isLoading', false).update('items', list => list.concat(accounts.map(item => item.id)));
+ });
+};
+
+const normalizeFollowRequest = (state, notification) => {
+ return state.updateIn(['follow_requests', 'items'], list => {
+ return list.filterNot(item => item === notification.account.id).unshift(notification.account.id);
});
};
@@ -59,18 +89,38 @@ export default function userLists(state = initialState, action) {
return normalizeList(state, 'followers', action.id, action.accounts, action.next);
case FOLLOWERS_EXPAND_SUCCESS:
return appendToList(state, 'followers', action.id, action.accounts, action.next);
+ case FOLLOWERS_FETCH_REQUEST:
+ case FOLLOWERS_EXPAND_REQUEST:
+ return state.setIn(['followers', action.id, 'isLoading'], true);
+ case FOLLOWERS_FETCH_FAIL:
+ case FOLLOWERS_EXPAND_FAIL:
+ return state.setIn(['followers', action.id, 'isLoading'], false);
case FOLLOWING_FETCH_SUCCESS:
return normalizeList(state, 'following', action.id, action.accounts, action.next);
case FOLLOWING_EXPAND_SUCCESS:
return appendToList(state, 'following', action.id, action.accounts, action.next);
+ case FOLLOWING_FETCH_REQUEST:
+ case FOLLOWING_EXPAND_REQUEST:
+ return state.setIn(['following', action.id, 'isLoading'], true);
+ case FOLLOWING_FETCH_FAIL:
+ case FOLLOWING_EXPAND_FAIL:
+ return state.setIn(['following', action.id, 'isLoading'], false);
case REBLOGS_FETCH_SUCCESS:
return state.setIn(['reblogged_by', action.id], ImmutableList(action.accounts.map(item => item.id)));
case FAVOURITES_FETCH_SUCCESS:
return state.setIn(['favourited_by', action.id], ImmutableList(action.accounts.map(item => item.id)));
+ case NOTIFICATIONS_UPDATE:
+ return action.notification.type === 'follow_request' ? normalizeFollowRequest(state, action.notification) : state;
case FOLLOW_REQUESTS_FETCH_SUCCESS:
- return state.setIn(['follow_requests', 'items'], ImmutableList(action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next);
+ return state.setIn(['follow_requests', 'items'], ImmutableList(action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next).setIn(['follow_requests', 'isLoading'], false);
case FOLLOW_REQUESTS_EXPAND_SUCCESS:
- return state.updateIn(['follow_requests', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next);
+ return state.updateIn(['follow_requests', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next).setIn(['follow_requests', 'isLoading'], false);
+ case FOLLOW_REQUESTS_FETCH_REQUEST:
+ case FOLLOW_REQUESTS_EXPAND_REQUEST:
+ return state.setIn(['follow_requests', 'isLoading'], true);
+ case FOLLOW_REQUESTS_FETCH_FAIL:
+ case FOLLOW_REQUESTS_EXPAND_FAIL:
+ return state.setIn(['follow_requests', 'isLoading'], false);
case FOLLOW_REQUEST_AUTHORIZE_SUCCESS:
case FOLLOW_REQUEST_REJECT_SUCCESS:
return state.updateIn(['follow_requests', 'items'], list => list.filterNot(item => item === action.id));
@@ -78,10 +128,22 @@ export default function userLists(state = initialState, action) {
return state.setIn(['blocks', 'items'], ImmutableList(action.accounts.map(item => item.id))).setIn(['blocks', 'next'], action.next);
case BLOCKS_EXPAND_SUCCESS:
return state.updateIn(['blocks', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['blocks', 'next'], action.next);
+ case BLOCKS_FETCH_REQUEST:
+ case BLOCKS_EXPAND_REQUEST:
+ return state.setIn(['blocks', 'isLoading'], true);
+ case BLOCKS_FETCH_FAIL:
+ case BLOCKS_EXPAND_FAIL:
+ return state.setIn(['blocks', 'isLoading'], false);
case MUTES_FETCH_SUCCESS:
return state.setIn(['mutes', 'items'], ImmutableList(action.accounts.map(item => item.id))).setIn(['mutes', 'next'], action.next);
case MUTES_EXPAND_SUCCESS:
return state.updateIn(['mutes', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['mutes', 'next'], action.next);
+ case MUTES_FETCH_REQUEST:
+ case MUTES_EXPAND_REQUEST:
+ return state.setIn(['mutes', 'isLoading'], true);
+ case MUTES_FETCH_FAIL:
+ case MUTES_EXPAND_FAIL:
+ return state.setIn(['mutes', 'isLoading'], false);
case DIRECTORY_FETCH_SUCCESS:
return state.setIn(['directory', 'items'], ImmutableList(action.accounts.map(item => item.id))).setIn(['directory', 'isLoading'], false);
case DIRECTORY_EXPAND_SUCCESS:
diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js
index 6f1ce9602..673268c5a 100644
--- a/app/javascript/mastodon/selectors/index.js
+++ b/app/javascript/mastodon/selectors/index.js
@@ -26,6 +26,7 @@ const toServerSideType = columnType => {
case 'notifications':
case 'public':
case 'thread':
+ case 'account':
return columnType;
default:
if (columnType.indexOf('list:') > -1) {
@@ -116,7 +117,7 @@ export const makeGetStatus = () => {
map.set('account', accountBase);
map.set('filtered', filtered);
});
- }
+ },
);
};
diff --git a/app/javascript/mastodon/service_worker/web_push_locales.js b/app/javascript/mastodon/service_worker/web_push_locales.js
index 5ce8c7b50..1265f3cfa 100644
--- a/app/javascript/mastodon/service_worker/web_push_locales.js
+++ b/app/javascript/mastodon/service_worker/web_push_locales.js
@@ -16,6 +16,7 @@ filenames.forEach(filename => {
filtered[locale] = {
'notification.favourite': full['notification.favourite'] || '',
'notification.follow': full['notification.follow'] || '',
+ 'notification.follow_request': full['notification.follow_request'] || '',
'notification.mention': full['notification.mention'] || '',
'notification.reblog': full['notification.reblog'] || '',
'notification.poll': full['notification.poll'] || '',
diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js
index 1ab0dc0fa..958e5fc12 100644
--- a/app/javascript/mastodon/service_worker/web_push_notifications.js
+++ b/app/javascript/mastodon/service_worker/web_push_notifications.js
@@ -117,7 +117,7 @@ const handlePush = (event) => {
badge: '/badge.png',
data: { access_token, preferred_locale, url: '/web/notifications' },
});
- })
+ }),
);
};
diff --git a/app/javascript/mastodon/store/configureStore.js b/app/javascript/mastodon/store/configureStore.js
index 7e7472841..e18af842f 100644
--- a/app/javascript/mastodon/store/configureStore.js
+++ b/app/javascript/mastodon/store/configureStore.js
@@ -10,6 +10,6 @@ export default function configureStore() {
thunk,
loadingBarMiddleware({ promiseTypeSuffixes: ['REQUEST', 'SUCCESS', 'FAIL'] }),
errorsMiddleware(),
- soundsMiddleware()
+ soundsMiddleware(),
), window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() : f => f));
};
diff --git a/app/javascript/mastodon/stream.js b/app/javascript/mastodon/stream.js
index c4642344f..0cb2b228f 100644
--- a/app/javascript/mastodon/stream.js
+++ b/app/javascript/mastodon/stream.js
@@ -1,7 +1,15 @@
-import WebSocketClient from 'websocket.js';
+import WebSocketClient from '@gamestdio/websocket';
const randomIntUpTo = max => Math.floor(Math.random() * Math.floor(max));
+const knownEventTypes = [
+ 'update',
+ 'delete',
+ 'notification',
+ 'conversation',
+ 'filters_changed',
+];
+
export function connectStream(path, pollingRefresh = null, callbacks = () => ({ onConnect() {}, onDisconnect() {}, onReceive() {} })) {
return (dispatch, getState) => {
const streamingAPIBaseURL = getState().getIn(['meta', 'streaming_api_base_url']);
@@ -69,14 +77,43 @@ export function connectStream(path, pollingRefresh = null, callbacks = () => ({
export default function getStream(streamingAPIBaseURL, accessToken, stream, { connected, received, disconnected, reconnected }) {
- const params = [ `stream=${stream}` ];
-
- const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`, accessToken);
-
- ws.onopen = connected;
- ws.onmessage = e => received(JSON.parse(e.data));
- ws.onclose = disconnected;
- ws.onreconnect = reconnected;
+ const params = stream.split('&');
+ stream = params.shift();
+
+ if (streamingAPIBaseURL.startsWith('ws')) {
+ params.unshift(`stream=${stream}`);
+ const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`, accessToken);
+
+ ws.onopen = connected;
+ ws.onmessage = e => received(JSON.parse(e.data));
+ ws.onclose = disconnected;
+ ws.onreconnect = reconnected;
+
+ return ws;
+ }
+
+ stream = stream.replace(/:/g, '/');
+ params.push(`access_token=${accessToken}`);
+ const es = new EventSource(`${streamingAPIBaseURL}/api/v1/streaming/${stream}?${params.join('&')}`);
+
+ let firstConnect = true;
+ es.onopen = () => {
+ if (firstConnect) {
+ firstConnect = false;
+ connected();
+ } else {
+ reconnected();
+ }
+ };
+ for (let type of knownEventTypes) {
+ es.addEventListener(type, (e) => {
+ received({
+ event: e.type,
+ payload: e.data,
+ });
+ });
+ }
+ es.onerror = disconnected;
- return ws;
+ return es;
};
diff --git a/app/javascript/mastodon/test_setup.js b/app/javascript/mastodon/test_setup.js
index 80148379b..666127af3 100644
--- a/app/javascript/mastodon/test_setup.js
+++ b/app/javascript/mastodon/test_setup.js
@@ -1,5 +1 @@
-import { configure } from 'enzyme';
-import Adapter from 'enzyme-adapter-react-16';
-
-const adapter = new Adapter();
-configure({ adapter });
+import '@testing-library/jest-dom/extend-expect';
diff --git a/app/javascript/mastodon/utils/log_out.js b/app/javascript/mastodon/utils/log_out.js
index b43417f4b..3a4cc8ecb 100644
--- a/app/javascript/mastodon/utils/log_out.js
+++ b/app/javascript/mastodon/utils/log_out.js
@@ -1,4 +1,4 @@
-import Rails from 'rails-ujs';
+import Rails from '@rails/ujs';
export const logOut = () => {
const form = document.createElement('form');
diff --git a/app/javascript/mastodon/utils/numbers.js b/app/javascript/mastodon/utils/numbers.js
index f7e4ceb93..6f2505cae 100644
--- a/app/javascript/mastodon/utils/numbers.js
+++ b/app/javascript/mastodon/utils/numbers.js
@@ -1,12 +1,71 @@
-import React, { Fragment } from 'react';
-import { FormattedNumber } from 'react-intl';
-
-export const shortNumberFormat = number => {
- if (number < 1000) {
- return
;
- } else if (number < 1000000) {
- return
K;
- } else {
- return
M;
+// @ts-check
+
+export const DECIMAL_UNITS = Object.freeze({
+ ONE: 1,
+ TEN: 10,
+ HUNDRED: Math.pow(10, 2),
+ THOUSAND: Math.pow(10, 3),
+ MILLION: Math.pow(10, 6),
+ BILLION: Math.pow(10, 9),
+ TRILLION: Math.pow(10, 12),
+});
+
+const TEN_THOUSAND = DECIMAL_UNITS.THOUSAND * 10;
+const TEN_MILLIONS = DECIMAL_UNITS.MILLION * 10;
+
+/**
+ * @typedef {[number, number, number]} ShortNumber
+ * Array of: shorten number, unit of shorten number and maximum fraction digits
+ */
+
+/**
+ * @param {number} sourceNumber Number to convert to short number
+ * @returns {ShortNumber} Calculated short number
+ * @example
+ * shortNumber(5936);
+ * // => [5.936, 1000, 1]
+ */
+export function toShortNumber(sourceNumber) {
+ if (sourceNumber < DECIMAL_UNITS.THOUSAND) {
+ return [sourceNumber, DECIMAL_UNITS.ONE, 0];
+ } else if (sourceNumber < DECIMAL_UNITS.MILLION) {
+ return [
+ sourceNumber / DECIMAL_UNITS.THOUSAND,
+ DECIMAL_UNITS.THOUSAND,
+ sourceNumber < TEN_THOUSAND ? 1 : 0,
+ ];
+ } else if (sourceNumber < DECIMAL_UNITS.BILLION) {
+ return [
+ sourceNumber / DECIMAL_UNITS.MILLION,
+ DECIMAL_UNITS.MILLION,
+ sourceNumber < TEN_MILLIONS ? 1 : 0,
+ ];
+ } else if (sourceNumber < DECIMAL_UNITS.TRILLION) {
+ return [
+ sourceNumber / DECIMAL_UNITS.BILLION,
+ DECIMAL_UNITS.BILLION,
+ 0,
+ ];
}
-};
+
+ return [sourceNumber, DECIMAL_UNITS.ONE, 0];
+}
+
+/**
+ * @param {number} sourceNumber Original number that is shortened
+ * @param {number} division The scale in which short number is displayed
+ * @returns {number} Number that can be used for plurals when short form used
+ * @example
+ * pluralReady(1793, DECIMAL_UNITS.THOUSAND)
+ * // => 1790
+ */
+export function pluralReady(sourceNumber, division) {
+ // eslint-disable-next-line eqeqeq
+ if (division == null || division < DECIMAL_UNITS.HUNDRED) {
+ return sourceNumber;
+ }
+
+ let closestScale = division / DECIMAL_UNITS.TEN;
+
+ return Math.trunc(sourceNumber / closestScale) * closestScale;
+}
diff --git a/app/javascript/mastodon/utils/resize_image.js b/app/javascript/mastodon/utils/resize_image.js
index 7196dc96b..6c1cb61a2 100644
--- a/app/javascript/mastodon/utils/resize_image.js
+++ b/app/javascript/mastodon/utils/resize_image.js
@@ -2,6 +2,45 @@ import EXIF from 'exif-js';
const MAX_IMAGE_PIXELS = 1638400; // 1280x1280px
+const _browser_quirks = {};
+
+// Some browsers will automatically draw images respecting their EXIF orientation
+// while others won't, and the safest way to detect that is to examine how it
+// is done on a known image.
+// See https://github.com/w3c/csswg-drafts/issues/4666
+// and https://github.com/blueimp/JavaScript-Load-Image/commit/1e4df707821a0afcc11ea0720ee403b8759f3881
+const dropOrientationIfNeeded = (orientation) => new Promise(resolve => {
+ switch (_browser_quirks['image-orientation-automatic']) {
+ case true:
+ resolve(1);
+ break;
+ case false:
+ resolve(orientation);
+ break;
+ default:
+ // black 2x1 JPEG, with the following meta information set:
+ // - EXIF Orientation: 6 (Rotated 90° CCW)
+ const testImageURL =
+ 'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +
+ 'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +
+ 'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +
+ 'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' +
+ 'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' +
+ 'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==';
+ const img = new Image();
+ img.onload = () => {
+ const automatic = (img.width === 1 && img.height === 2);
+ _browser_quirks['image-orientation-automatic'] = automatic;
+ resolve(automatic ? 1 : orientation);
+ };
+ img.onerror = () => {
+ _browser_quirks['image-orientation-automatic'] = false;
+ resolve(orientation);
+ };
+ img.src = testImageURL;
+ }
+});
+
const getImageUrl = inputFile => new Promise((resolve, reject) => {
if (window.URL && URL.createObjectURL) {
try {
@@ -38,7 +77,11 @@ const getOrientation = (img, type = 'image/png') => new Promise(resolve => {
EXIF.getData(img, () => {
const orientation = EXIF.getTag(img, 'Orientation');
- resolve(orientation);
+ if (orientation !== 1) {
+ dropOrientationIfNeeded(orientation).then(resolve).catch(() => resolve(orientation));
+ } else {
+ resolve(orientation);
+ }
});
});
@@ -95,7 +138,7 @@ const resizeImage = (img, type = 'image/png') => new Promise((resolve, reject) =
.catch(reject);
});
-export default inputFile => new Promise((resolve, reject) => {
+export default inputFile => new Promise((resolve) => {
if (!inputFile.type.match(/image.*/) || inputFile.type === 'image/gif') {
resolve(inputFile);
return;
@@ -110,5 +153,5 @@ export default inputFile => new Promise((resolve, reject) => {
resizeImage(img, inputFile.type)
.then(resolve)
.catch(() => resolve(inputFile));
- }).catch(reject);
+ }).catch(() => resolve(inputFile));
});
diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js
index 42c747d2e..51f92de8a 100644
--- a/app/javascript/packs/admin.js
+++ b/app/javascript/packs/admin.js
@@ -1,4 +1,4 @@
-import { delegate } from 'rails-ujs';
+import { delegate } from '@rails/ujs';
import ready from '../mastodon/ready';
const batchCheckboxClassName = '.batch-checkbox input[type="checkbox"]';
@@ -30,6 +30,10 @@ delegate(document, '.media-spoiler-hide-button', 'click', () => {
});
});
+delegate(document, '.filter-subset--with-select select', 'change', ({ target }) => {
+ target.form.submit();
+});
+
const onDomainBlockSeverityChange = (target) => {
const rejectMediaDiv = document.querySelector('.input.with_label.domain_block_reject_media');
const rejectReportsDiv = document.querySelector('.input.with_label.domain_block_reject_reports');
@@ -45,7 +49,25 @@ const onDomainBlockSeverityChange = (target) => {
delegate(document, '#domain_block_severity', 'change', ({ target }) => onDomainBlockSeverityChange(target));
+const onEnableBootstrapTimelineAccountsChange = (target) => {
+ const bootstrapTimelineAccountsField = document.querySelector('#form_admin_settings_bootstrap_timeline_accounts');
+
+ if (bootstrapTimelineAccountsField) {
+ bootstrapTimelineAccountsField.disabled = !target.checked;
+ if (target.checked) {
+ bootstrapTimelineAccountsField.parentElement.classList.remove('disabled');
+ } else {
+ bootstrapTimelineAccountsField.parentElement.classList.add('disabled');
+ }
+ }
+};
+
+delegate(document, '#form_admin_settings_enable_bootstrap_timeline_accounts', 'change', ({ target }) => onEnableBootstrapTimelineAccountsChange(target));
+
ready(() => {
- const input = document.getElementById('domain_block_severity');
- if (input) onDomainBlockSeverityChange(input);
+ const domainBlockSeverityInput = document.getElementById('domain_block_severity');
+ if (domainBlockSeverityInput) onDomainBlockSeverityChange(domainBlockSeverityInput);
+
+ const enableBootstrapTimelineAccounts = document.getElementById('form_admin_settings_enable_bootstrap_timeline_accounts');
+ if (enableBootstrapTimelineAccounts) onEnableBootstrapTimelineAccountsChange(enableBootstrapTimelineAccounts);
});
diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js
index ed713f335..08cc662e6 100644
--- a/app/javascript/packs/public.js
+++ b/app/javascript/packs/public.js
@@ -2,6 +2,7 @@ import escapeTextContentForBrowser from 'escape-html';
import loadPolyfills from '../mastodon/load_polyfills';
import ready from '../mastodon/ready';
import { start } from '../mastodon/common';
+import loadKeyboardExtensions from '../mastodon/load_keyboard_extensions';
start();
@@ -24,7 +25,7 @@ window.addEventListener('message', e => {
function main() {
const IntlMessageFormat = require('intl-messageformat').default;
const { timeAgoString } = require('../mastodon/components/relative_timestamp');
- const { delegate } = require('rails-ujs');
+ const { delegate } = require('@rails/ujs');
const emojify = require('../mastodon/features/emoji/emoji').default;
const { getLocale } = require('../mastodon/locales');
const { messages } = getLocale();
@@ -81,7 +82,7 @@ function main() {
content.textContent = timeAgoString({
formatMessage: ({ id, defaultMessage }, values) => (new IntlMessageFormat(messages[id] || defaultMessage, locale)).format(values),
formatDate: (date, options) => (new Intl.DateTimeFormat(locale, options)).format(date),
- }, datetime, now, now.getFullYear());
+ }, datetime, now, now.getFullYear(), content.getAttribute('datetime').includes('T'));
});
const reactComponents = document.querySelectorAll('[data-component]');
@@ -117,6 +118,26 @@ function main() {
delegate(document, '.custom-emoji', 'mouseover', getEmojiAnimationHandler('data-original'));
delegate(document, '.custom-emoji', 'mouseout', getEmojiAnimationHandler('data-static'));
+
+ delegate(document, '.status__content__spoiler-link', 'click', function() {
+ const statusEl = this.parentNode.parentNode;
+
+ if (statusEl.dataset.spoiler === 'expanded') {
+ statusEl.dataset.spoiler = 'folded';
+ this.textContent = (new IntlMessageFormat(messages['status.show_more'] || 'Show more', locale)).format();
+ } else {
+ statusEl.dataset.spoiler = 'expanded';
+ this.textContent = (new IntlMessageFormat(messages['status.show_less'] || 'Show less', locale)).format();
+ }
+
+ return false;
+ });
+
+ [].forEach.call(document.querySelectorAll('.status__content__spoiler-link'), (spoilerLink) => {
+ const statusEl = spoilerLink.parentNode.parentNode;
+ const message = (statusEl.dataset.spoiler === 'expanded') ? (messages['status.show_less'] || 'Show less') : (messages['status.show_more'] || 'Show more');
+ spoilerLink.textContent = (new IntlMessageFormat(message, locale)).format();
+ });
});
delegate(document, '.webapp-btn', 'click', ({ target, button }) => {
@@ -127,29 +148,6 @@ function main() {
return false;
});
- delegate(document, '.status__content__spoiler-link', 'click', function() {
- const contentEl = this.parentNode.parentNode.querySelector('.e-content');
-
- if (contentEl.style.display === 'block') {
- contentEl.style.display = 'none';
- this.parentNode.style.marginBottom = 0;
- } else {
- contentEl.style.display = 'block';
- this.parentNode.style.marginBottom = null;
- }
-
- return false;
- });
-
- delegate(document, '.blocks-table button.icon-button', 'click', function(e) {
- e.preventDefault();
-
- const classList = this.firstElementChild.classList;
- classList.toggle('fa-chevron-down');
- classList.toggle('fa-chevron-up');
- this.parentElement.parentElement.nextElementSibling.classList.toggle('hidden');
- });
-
delegate(document, '.modal-button', 'click', e => {
e.preventDefault();
@@ -170,7 +168,7 @@ function main() {
if (target.value) {
name.innerHTML = emojify(escapeTextContentForBrowser(target.value));
} else {
- name.textContent = document.querySelector('#default_account_display_name').textContent;
+ name.textContent = target.dataset.default;
}
}
});
@@ -209,10 +207,12 @@ function main() {
delegate(document, '#account_locked', 'change', ({ target }) => {
const lock = document.querySelector('.card .display-name i');
- if (target.checked) {
- lock.style.display = 'inline';
- } else {
- lock.style.display = 'none';
+ if (lock) {
+ if (target.checked) {
+ delete lock.dataset.hidden;
+ } else {
+ lock.dataset.hidden = 'true';
+ }
}
});
@@ -259,6 +259,9 @@ function main() {
});
}
-loadPolyfills().then(main).catch(error => {
- console.error(error);
-});
+loadPolyfills()
+ .then(main)
+ .then(loadKeyboardExtensions)
+ .catch(error => {
+ console.error(error);
+ });
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index 05e52966b..7a846bcc6 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -142,7 +142,7 @@ html {
}
.compose-form__autosuggest-wrapper,
-.poll__text input[type="text"],
+.poll__option input[type="text"],
.compose-form .spoiler-input__input,
.compose-form__poll-wrapper select,
.search__input,
diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss
index 4fb1f4bcd..3ceab9458 100644
--- a/app/javascript/styles/mastodon-light/variables.scss
+++ b/app/javascript/styles/mastodon-light/variables.scss
@@ -40,3 +40,5 @@ $account-background-color: $white !default;
@function lighten($color, $amount) {
@return hsl(hue($color), saturation($color), lightness($color) - $amount);
}
+
+$emojis-requiring-inversion: 'chains';
diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss
index 19b79c4d4..d932bff7c 100644
--- a/app/javascript/styles/mastodon/about.scss
+++ b/app/javascript/styles/mastodon/about.scss
@@ -543,12 +543,6 @@ $small-breakpoint: 960px;
flex: 0 0 auto;
}
- &__avatar {
- width: 44px;
- height: 44px;
- background-size: 44px 44px;
- }
-
.display-name {
font-size: 15px;
@@ -749,16 +743,15 @@ $small-breakpoint: 960px;
display: flex;
align-items: center;
}
+ }
- .account__avatar {
- width: 44px;
- height: 44px;
- background-size: 44px 44px;
- }
+ &__counters__wrapper {
+ display: flex;
}
&__counter {
padding: 10px;
+ width: 50%;
strong {
font-family: $font-display, sans-serif;
diff --git a/app/javascript/styles/mastodon/accessibility.scss b/app/javascript/styles/mastodon/accessibility.scss
index d33806c84..c5bcb5941 100644
--- a/app/javascript/styles/mastodon/accessibility.scss
+++ b/app/javascript/styles/mastodon/accessibility.scss
@@ -1,14 +1,13 @@
-$black-emojis: '8ball' 'ant' 'back' 'black_circle' 'black_heart' 'black_large_square' 'black_medium_small_square' 'black_medium_square' 'black_nib' 'black_small_square' 'bomb' 'bowling' 'bust_in_silhouette' 'busts_in_silhouette' 'camera' 'camera_with_flash' 'clubs' 'copyright' 'curly_loop' 'currency_exchange' 'dark_sunglasses' 'eight_pointed_black_star' 'electric_plug' 'end' 'female-guard' 'film_projector' 'fried_egg' 'gorilla' 'guardsman' 'heavy_check_mark' 'heavy_division_sign' 'heavy_dollar_sign' 'heavy_minus_sign' 'heavy_multiplication_x' 'heavy_plus_sign' 'hocho' 'hole' 'joystick' 'kaaba' 'lower_left_ballpoint_pen' 'lower_left_fountain_pen' 'male-guard' 'microphone' 'mortar_board' 'movie_camera' 'musical_score' 'on' 'registered' 'soon' 'spades' 'speaking_head_in_silhouette' 'spider' 'telephone_receiver' 'tm' 'top' 'tophat' 'turkey' 'vhs' 'video_camera' 'video_game' 'water_buffalo' 'waving_black_flag' 'wavy_dash';
+$emojis-requiring-inversion: 'back' 'copyright' 'curly_loop' 'currency_exchange' 'end' 'heavy_check_mark' 'heavy_division_sign' 'heavy_dollar_sign' 'heavy_minus_sign' 'heavy_multiplication_x' 'heavy_plus_sign' 'on' 'registered' 'soon' 'spider' 'telephone_receiver' 'tm' 'top' 'wavy_dash' !default;
-%white-emoji-outline {
- filter: drop-shadow(1px 1px 0 $white) drop-shadow(-1px 1px 0 $white) drop-shadow(1px -1px 0 $white) drop-shadow(-1px -1px 0 $white);
- transform: scale(.71);
+%emoji-color-inversion {
+ filter: invert(1);
}
.emojione {
- @each $emoji in $black-emojis {
+ @each $emoji in $emojis-requiring-inversion {
&[title=':#{$emoji}:'] {
- @extend %white-emoji-outline;
+ @extend %emoji-color-inversion;
}
}
}
diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss
index 5dc067f0e..2c78e81be 100644
--- a/app/javascript/styles/mastodon/accounts.scss
+++ b/app/javascript/styles/mastodon/accounts.scss
@@ -76,6 +76,10 @@
margin-left: 15px;
text-align: left;
+ i[data-hidden] {
+ display: none;
+ }
+
strong {
font-size: 15px;
color: $primary-text-color;
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index dde1d69ba..25ebc19b0 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -171,9 +171,7 @@ $content-width: 840px;
}
.content {
- padding: 20px 15px;
- padding-top: 60px;
- padding-left: 25px;
+ padding: 55px 15px 20px 25px;
@media screen and (max-width: $no-columns-breakpoint) {
max-width: none;
@@ -181,18 +179,44 @@ $content-width: 840px;
padding-top: 30px;
}
+ &-heading {
+ display: flex;
+
+ padding-bottom: 36px;
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
+
+ margin: -15px -15px 40px 0;
+
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+
+ & > * {
+ margin-top: 15px;
+ margin-right: 15px;
+ }
+
+ &-actions {
+ display: inline-flex;
+
+ & > :not(:first-child) {
+ margin-left: 5px;
+ }
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ border-bottom: 0;
+ padding-bottom: 0;
+ }
+ }
+
h2 {
color: $secondary-text-color;
font-size: 24px;
- line-height: 28px;
+ line-height: 36px;
font-weight: 400;
- padding-bottom: 40px;
- border-bottom: 1px solid lighten($ui-base-color, 8%);
- margin-bottom: 40px;
@media screen and (max-width: $no-columns-breakpoint) {
- border-bottom: 0;
- padding-bottom: 0;
font-weight: 700;
}
}
@@ -392,6 +416,11 @@ body,
}
}
+ &--with-select strong {
+ display: block;
+ margin-bottom: 10px;
+ }
+
a {
display: inline-block;
color: $darker-text-color;
@@ -481,6 +510,16 @@ body,
max-width: 100%;
}
+.simple_form {
+ .actions {
+ margin-top: 15px;
+ }
+
+ .button {
+ font-size: 15px;
+ }
+}
+
.batch-form-box {
display: flex;
flex-wrap: wrap;
@@ -520,24 +559,39 @@ body,
}
}
+.special-action-button,
+.back-link {
+ text-align: right;
+ flex: 1 1 auto;
+}
+
+.action-buttons {
+ display: flex;
+ overflow: hidden;
+ justify-content: space-between;
+}
+
.spacer {
flex: 1 1 auto;
}
.log-entry {
- margin-bottom: 20px;
line-height: 20px;
+ padding: 15px 0;
+ background: $ui-base-color;
+ border-bottom: 1px solid lighten($ui-base-color, 4%);
+
+ &:last-child {
+ border-bottom: 0;
+ }
&__header {
display: flex;
justify-content: flex-start;
align-items: center;
- padding: 10px;
- background: $ui-base-color;
color: $darker-text-color;
- border-radius: 4px 4px 0 0;
font-size: 14px;
- position: relative;
+ padding: 0 10px;
}
&__avatar {
@@ -564,44 +618,6 @@ body,
color: $dark-text-color;
}
- &__extras {
- background: lighten($ui-base-color, 6%);
- border-radius: 0 0 4px 4px;
- padding: 10px;
- color: $darker-text-color;
- font-family: $font-monospace, monospace;
- font-size: 12px;
- word-wrap: break-word;
- min-height: 20px;
- }
-
- &__icon {
- font-size: 28px;
- margin-right: 10px;
- color: $dark-text-color;
- }
-
- &__icon__overlay {
- position: absolute;
- top: 10px;
- right: 10px;
- width: 10px;
- height: 10px;
- border-radius: 50%;
-
- &.positive {
- background: $success-green;
- }
-
- &.negative {
- background: lighten($error-red, 12%);
- }
-
- &.neutral {
- background: $ui-highlight-color;
- }
- }
-
a,
.username,
.target {
@@ -609,18 +625,6 @@ body,
text-decoration: none;
font-weight: 500;
}
-
- .diff-old {
- color: lighten($error-red, 12%);
- }
-
- .diff-neutral {
- color: $secondary-text-color;
- }
-
- .diff-new {
- color: $success-green;
- }
}
a.name-tag,
@@ -857,3 +861,58 @@ a.name-tag,
color: $primary-text-color;
}
}
+
+.center-text {
+ text-align: center;
+}
+
+.announcements-list {
+ border: 1px solid lighten($ui-base-color, 4%);
+ border-radius: 4px;
+
+ &__item {
+ padding: 15px 0;
+ background: $ui-base-color;
+ border-bottom: 1px solid lighten($ui-base-color, 4%);
+
+ &__title {
+ padding: 0 15px;
+ display: block;
+ font-weight: 500;
+ font-size: 18px;
+ line-height: 1.5;
+ color: $secondary-text-color;
+ text-decoration: none;
+ margin-bottom: 10px;
+
+ &:hover,
+ &:focus,
+ &:active {
+ color: $primary-text-color;
+ }
+ }
+
+ &__meta {
+ padding: 0 15px;
+ color: $dark-text-color;
+ }
+
+ &__action-bar {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ &:last-child {
+ border-bottom: 0;
+ }
+ }
+}
+
+.account-badges {
+ margin: -2px 0;
+}
+
+.dashboard__counters.admin-account-counters {
+ margin-top: 10px;
+}
diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss
index 2b10b5ad3..9e63b1d31 100644
--- a/app/javascript/styles/mastodon/basics.scss
+++ b/app/javascript/styles/mastodon/basics.scss
@@ -68,7 +68,32 @@ body {
}
&.player {
- text-align: center;
+ padding: 0;
+ margin: 0;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+
+ & > div {
+ height: 100%;
+ }
+
+ .video-player video {
+ width: 100%;
+ height: 100%;
+ max-height: 100vh;
+ }
+
+ .media-gallery {
+ margin-top: 0;
+ height: 100% !important;
+ border-radius: 0;
+ }
+
+ .media-gallery__item {
+ border-radius: 0;
+ }
}
&.embed {
@@ -229,3 +254,19 @@ button {
}
}
}
+
+.logo-resources {
+ display: none;
+}
+
+// NoScript adds a __ns__pop2top class to the full ancestry of blocked elements,
+// to set the z-index to a high value, which messes with modals and dropdowns.
+// Blocked elements can in theory only be media and frames/embeds, so they
+// should only appear in statuses, under divs and articles.
+body,
+div,
+article {
+ .__ns__pop2top {
+ z-index: unset !important;
+ }
+}
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 86425c47c..deaca7f3b 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -3,6 +3,23 @@
-ms-overflow-style: -ms-autohiding-scrollbar;
}
+.animated-number {
+ display: inline-flex;
+ flex-direction: column;
+ align-items: stretch;
+ overflow: hidden;
+ position: relative;
+}
+
+.inline-alert {
+ color: $valid-value-color;
+ font-weight: 400;
+
+ .no-reduce-motion & {
+ transition: opacity 200ms ease;
+ }
+}
+
.link-button {
display: block;
font-size: 15px;
@@ -380,8 +397,8 @@
.emoji-picker-dropdown {
position: absolute;
- top: 5px;
- right: 5px;
+ top: 0;
+ right: 0;
}
.compose-form__autosuggest-wrapper {
@@ -392,6 +409,7 @@
.autosuggest-input,
.spoiler-input {
position: relative;
+ width: 100%;
}
.spoiler-input {
@@ -859,6 +877,49 @@
}
}
+.announcements__item__content {
+ word-wrap: break-word;
+ overflow-y: auto;
+
+ .emojione {
+ width: 20px;
+ height: 20px;
+ margin: -3px 0 0;
+ }
+
+ p {
+ margin-bottom: 10px;
+ white-space: pre-wrap;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ a {
+ color: $secondary-text-color;
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+
+ &.mention {
+ &:hover {
+ text-decoration: none;
+
+ span {
+ text-decoration: underline;
+ }
+ }
+ }
+
+ &.unhandled-link {
+ color: lighten($ui-highlight-color, 8%);
+ }
+ }
+}
+
.status__content.status__content--collapsed {
max-height: 20px * 15; // 15 lines is roughly above 500 characters
}
@@ -872,6 +933,7 @@
background: transparent;
padding: 0;
padding-top: 8px;
+ text-decoration: none;
&:hover,
&:active {
@@ -939,7 +1001,7 @@
position: relative;
min-height: 54px;
border-bottom: 1px solid lighten($ui-base-color, 8%);
- cursor: default;
+ cursor: auto;
@supports (-ms-overflow-style: -ms-autohiding-scrollbar) {
// Add margin to avoid Edge auto-hiding scrollbar appearing over content.
@@ -966,7 +1028,8 @@
}
&.light {
- .status__relative-time {
+ .status__relative-time,
+ .status__visibility-icon {
color: $light-text-color;
}
@@ -975,13 +1038,11 @@
}
.display-name {
+ color: $light-text-color;
+
strong {
color: $inverted-text-color;
}
-
- span {
- color: $light-text-color;
- }
}
.status__content {
@@ -1014,12 +1075,18 @@
}
.status__relative-time,
+.status__visibility-icon,
.notification__relative_time {
color: $dark-text-color;
float: right;
font-size: 14px;
}
+.status__visibility-icon {
+ margin-left: 4px;
+ margin-right: 4px;
+}
+
.status__display-name {
color: $dark-text-color;
}
@@ -1041,6 +1108,7 @@
.status-check-box__status {
margin: 10px 0 10px 10px;
flex: 1;
+ overflow: hidden;
.media-gallery {
max-width: 250px;
@@ -1266,8 +1334,13 @@
.account__avatar {
@include avatar-radius;
+ display: block;
position: relative;
+ width: 36px;
+ height: 36px;
+ background-size: 36px 36px;
+
&-inline {
display: inline-block;
vertical-align: middle;
@@ -1279,7 +1352,6 @@
border-radius: 50%;
overflow: hidden;
position: relative;
- cursor: default;
& > div {
float: left;
@@ -1311,6 +1383,12 @@ a .account__avatar {
&-base {
@include avatar-radius;
@include avatar-size(36px);
+
+ img {
+ @include avatar-radius;
+ width: 100%;
+ height: 100%;
+ }
}
&-overlay {
@@ -1321,6 +1399,12 @@ a .account__avatar {
bottom: 0;
right: 0;
z-index: 1;
+
+ img {
+ @include avatar-radius;
+ width: 100%;
+ height: 100%;
+ }
}
}
@@ -1591,6 +1675,24 @@ a.account__display-name {
color: $gold-star;
}
+.bookmark-icon.active {
+ color: $red-bookmark;
+}
+
+.no-reduce-motion .icon-button.star-icon {
+ &.activate {
+ & > .fa-star {
+ animation: spring-rotate-in 1s linear;
+ }
+ }
+
+ &.deactivate {
+ & > .fa-star {
+ animation: spring-rotate-out 1s linear;
+ }
+ }
+}
+
.notification__display-name {
color: inherit;
font-weight: 500;
@@ -2452,7 +2554,7 @@ a.account__display-name {
display: block;
object-fit: contain;
object-position: bottom left;
- width: 100%;
+ width: 85%;
height: 100%;
pointer-events: none;
user-drag: none;
@@ -2493,7 +2595,6 @@ a.account__display-name {
overflow-x: hidden;
flex: 1 1 auto;
-webkit-overflow-scrolling: touch;
- will-change: transform; // improves perf in mobile Chrome
&.optionally-scrollable {
overflow-y: auto;
@@ -2918,6 +3019,7 @@ a.account__display-name {
}
.status-card {
+ position: relative;
display: flex;
font-size: 14px;
border: 1px solid lighten($ui-base-color, 8%);
@@ -3049,7 +3151,8 @@ a.status-card {
width: 100%;
}
- .status-card__image-image {
+ .status-card__image-image,
+ .status-card__image-preview {
border-radius: 4px 4px 0 0;
}
@@ -3094,6 +3197,24 @@ a.status-card.compact:hover {
background-position: center center;
}
+.status-card__image-preview {
+ border-radius: 4px 0 0 4px;
+ display: block;
+ margin: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: fill;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 0;
+ background: $base-overlay-background;
+
+ &--hidden {
+ display: none;
+ }
+}
+
.load-more {
display: block;
color: $dark-text-color;
@@ -3118,6 +3239,31 @@ a.status-card.compact:hover {
border-bottom: 1px solid lighten($ui-base-color, 8%);
}
+.timeline-hint {
+ text-align: center;
+ color: $darker-text-color;
+ padding: 15px;
+ box-sizing: border-box;
+ width: 100%;
+ cursor: default;
+
+ strong {
+ font-weight: 500;
+ }
+
+ a {
+ color: lighten($ui-highlight-color, 8%);
+ text-decoration: none;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: underline;
+ color: lighten($ui-highlight-color, 12%);
+ }
+ }
+}
+
.regeneration-indicator {
text-align: center;
font-size: 16px;
@@ -3165,13 +3311,16 @@ a.status-card.compact:hover {
.column-header__wrapper {
position: relative;
flex: 0 0 auto;
+ z-index: 1;
&.active {
+ box-shadow: 0 1px 0 rgba($highlight-text-color, 0.3);
+
&::before {
display: block;
content: "";
position: absolute;
- top: 35px;
+ bottom: -13px;
left: 0;
right: 0;
margin: 0 auto;
@@ -3182,6 +3331,11 @@ a.status-card.compact:hover {
background: radial-gradient(ellipse, rgba($ui-highlight-color, 0.23) 0%, rgba($ui-highlight-color, 0) 60%);
}
}
+
+ .announcements {
+ z-index: 1;
+ position: relative;
+ }
}
.column-header {
@@ -3214,8 +3368,6 @@ a.status-card.compact:hover {
}
&.active {
- box-shadow: 0 1px 0 rgba($highlight-text-color, 0.3);
-
.column-header__icon {
color: $highlight-text-color;
text-shadow: 0 0 10px rgba($highlight-text-color, 0.4);
@@ -3271,6 +3423,8 @@ a.status-card.compact:hover {
color: $darker-text-color;
transition: max-height 150ms ease-in-out, opacity 300ms linear;
opacity: 1;
+ z-index: 1;
+ position: relative;
&.collapsed {
max-height: 0;
@@ -3373,6 +3527,50 @@ a.status-card.compact:hover {
animation: loader-figure 1.15s infinite cubic-bezier(0.215, 0.61, 0.355, 1);
}
+@keyframes spring-rotate-in {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 30% {
+ transform: rotate(-484.8deg);
+ }
+
+ 60% {
+ transform: rotate(-316.7deg);
+ }
+
+ 90% {
+ transform: rotate(-375deg);
+ }
+
+ 100% {
+ transform: rotate(-360deg);
+ }
+}
+
+@keyframes spring-rotate-out {
+ 0% {
+ transform: rotate(-360deg);
+ }
+
+ 30% {
+ transform: rotate(124.8deg);
+ }
+
+ 60% {
+ transform: rotate(-43.27deg);
+ }
+
+ 90% {
+ transform: rotate(15deg);
+ }
+
+ 100% {
+ transform: rotate(0deg);
+ }
+}
+
@keyframes loader-figure {
0% {
width: 0;
@@ -3652,7 +3850,6 @@ a.status-card.compact:hover {
color: $primary-text-color;
margin-bottom: 4px;
display: block;
- vertical-align: top;
background-color: $base-overlay-background;
text-transform: uppercase;
font-size: 11px;
@@ -3680,7 +3877,8 @@ a.status-card.compact:hover {
}
.empty-column-indicator,
-.error-column {
+.error-column,
+.follow_requests-unlocked_explanation {
color: $dark-text-color;
background: $ui-base-color;
text-align: center;
@@ -3711,6 +3909,11 @@ a.status-card.compact:hover {
}
}
+.follow_requests-unlocked_explanation {
+ background: darken($ui-base-color, 4%);
+ contain: initial;
+}
+
.error-column {
flex-direction: column;
}
@@ -3938,10 +4141,7 @@ a.status-card.compact:hover {
.emoji-button {
display: block;
- font-size: 24px;
- line-height: 24px;
- margin-left: 2px;
- width: 24px;
+ padding: 5px 5px 2px 2px;
outline: 0;
cursor: pointer;
@@ -3957,7 +4157,6 @@ a.status-card.compact:hover {
margin: 0;
width: 22px;
height: 22px;
- margin-top: 2px;
}
&:hover,
@@ -4678,6 +4877,15 @@ a.status-card.compact:hover {
}
}
+.setting-divider {
+ background: transparent;
+ border: 0;
+ margin: 0;
+ width: 100%;
+ height: 1px;
+ margin-bottom: 29px;
+}
+
.report-modal__comment {
padding: 20px;
border-right: 1px solid $ui-secondary-color;
@@ -4936,12 +5144,6 @@ a.status-card.compact:hover {
}
.media-gallery__gifv {
- &.autoplay {
- .media-gallery__gifv__label {
- display: none;
- }
- }
-
&:hover {
.media-gallery__gifv__label {
opacity: 1;
@@ -5021,6 +5223,7 @@ a.status-card.compact:hover {
border-radius: 4px;
position: relative;
width: 100%;
+ min-height: 64px;
}
.media-gallery__item {
@@ -5114,6 +5317,7 @@ a.status-card.compact:hover {
}
.audio-player {
+ overflow: hidden;
box-sizing: border-box;
position: relative;
background: darken($ui-base-color, 8%);
@@ -5126,37 +5330,49 @@ a.status-card.compact:hover {
height: 100%;
}
- &__waveform {
- padding: 15px 0;
- position: relative;
- overflow: hidden;
+ .video-player__volume::before,
+ .video-player__seek::before {
+ background: currentColor;
+ opacity: 0.15;
+ }
- &::before {
- content: "";
- display: block;
- position: absolute;
- border-top: 1px solid lighten($ui-base-color, 4%);
- width: 100%;
- height: 0;
- left: 0;
- top: calc(50% + 1px);
+ .video-player__seek__buffer {
+ background: currentColor;
+ opacity: 0.2;
+ }
+
+ .video-player__buttons button {
+ color: currentColor;
+ opacity: 0.75;
+
+ &:active,
+ &:hover,
+ &:focus {
+ color: currentColor;
+ opacity: 1;
}
}
- &__progress-placeholder {
- background-color: rgba(lighten($ui-highlight-color, 8%), 0.5);
+ .video-player__time-sep,
+ .video-player__time-total,
+ .video-player__time-current {
+ color: currentColor;
+ }
+
+ .video-player__seek::before,
+ .video-player__seek__buffer,
+ .video-player__seek__progress {
+ top: 0;
}
- &__wave-placeholder {
- background-color: lighten($ui-base-color, 16%);
+ .video-player__seek__handle {
+ top: -4px;
}
.video-player__controls {
padding: 0 15px;
padding-top: 10px;
- background: darken($ui-base-color, 8%);
- border-top: 1px solid lighten($ui-base-color, 4%);
- border-radius: 0 0 4px 4px;
+ background: transparent;
}
}
@@ -5168,6 +5384,7 @@ a.status-card.compact:hover {
border-radius: 4px;
box-sizing: border-box;
direction: ltr;
+ color: $white;
&.editable {
border-radius: 0;
@@ -5179,6 +5396,7 @@ a.status-card.compact:hover {
}
video {
+ display: block;
max-width: 100vw;
max-height: 80vh;
z-index: 1;
@@ -5194,6 +5412,7 @@ a.status-card.compact:hover {
max-height: 100% !important;
width: 100% !important;
height: 100% !important;
+ outline: 0;
}
}
@@ -5271,9 +5490,17 @@ a.status-card.compact:hover {
display: flex;
justify-content: space-between;
padding-bottom: 10px;
+
+ .video-player__download__icon {
+ color: inherit;
+ }
}
&__buttons {
+ display: flex;
+ flex: 0 1 auto;
+ min-width: 30px;
+ align-items: center;
font-size: 16px;
white-space: nowrap;
overflow: hidden;
@@ -5292,6 +5519,7 @@ a.status-card.compact:hover {
}
button {
+ flex: 0 0 auto;
background: transparent;
padding: 2px 10px;
font-size: 16px;
@@ -5306,6 +5534,13 @@ a.status-card.compact:hover {
}
}
+ &__time {
+ display: inline;
+ flex: 0 1 auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
&__time-sep,
&__time-total,
&__time-current {
@@ -5315,7 +5550,6 @@ a.status-card.compact:hover {
&__time-current {
color: $white;
- margin-left: 60px;
}
&__time-sep {
@@ -5329,9 +5563,22 @@ a.status-card.compact:hover {
}
&__volume {
+ flex: 0 0 auto;
+ display: inline-flex;
cursor: pointer;
height: 24px;
- display: inline;
+ position: relative;
+ overflow: hidden;
+
+ .no-reduce-motion & {
+ transition: all 100ms linear;
+ }
+
+ &.active {
+ overflow: visible;
+ width: 50px;
+ margin-right: 16px;
+ }
&::before {
content: "";
@@ -5341,8 +5588,9 @@ a.status-card.compact:hover {
display: block;
position: absolute;
height: 4px;
- left: 70px;
- bottom: 20px;
+ left: 0;
+ top: 50%;
+ transform: translate(0, -50%);
}
&__current {
@@ -5350,8 +5598,9 @@ a.status-card.compact:hover {
position: absolute;
height: 4px;
border-radius: 4px;
- left: 70px;
- bottom: 20px;
+ left: 0;
+ top: 50%;
+ transform: translate(0, -50%);
background: lighten($ui-highlight-color, 8%);
}
@@ -5361,12 +5610,21 @@ a.status-card.compact:hover {
border-radius: 50%;
width: 12px;
height: 12px;
- bottom: 16px;
- left: 70px;
- transition: opacity .1s ease;
+ top: 50%;
+ left: 0;
+ margin-left: -6px;
+ transform: translate(0, -50%);
background: lighten($ui-highlight-color, 8%);
box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2);
- pointer-events: none;
+ opacity: 0;
+
+ .no-reduce-motion & {
+ transition: opacity 100ms linear;
+ }
+ }
+
+ &.active &__handle {
+ opacity: 1;
}
}
@@ -5426,10 +5684,12 @@ a.status-card.compact:hover {
height: 12px;
top: 6px;
margin-left: -6px;
- transition: opacity .1s ease;
background: lighten($ui-highlight-color, 8%);
box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2);
- pointer-events: none;
+
+ .no-reduce-motion & {
+ transition: opacity .1s ease;
+ }
&.active {
opacity: 1;
@@ -5454,6 +5714,13 @@ a.status-card.compact:hover {
}
}
+.gifv {
+ video {
+ max-width: 100vw;
+ max-height: 80vh;
+ }
+}
+
.directory {
&__list {
width: 100%;
@@ -5635,6 +5902,8 @@ a.status-card.compact:hover {
text-align: center;
text-decoration: none;
position: relative;
+ width: 100%;
+ white-space: nowrap;
&.active {
color: $secondary-text-color;
@@ -6240,7 +6509,7 @@ noscript {
&__tabs {
display: flex;
align-items: flex-start;
- padding: 7px 5px;
+ padding: 7px 10px;
margin-top: -55px;
&__buttons {
@@ -6262,7 +6531,7 @@ noscript {
}
&__name {
- padding: 5px;
+ padding: 5px 10px;
.account-role {
vertical-align: top;
@@ -6306,6 +6575,11 @@ noscript {
padding: 20px 15px;
padding-bottom: 5px;
color: $primary-text-color;
+
+ .columns-area--mobile & {
+ padding-left: 20px;
+ padding-right: 20px;
+ }
}
.account__header__fields {
@@ -6332,13 +6606,13 @@ noscript {
&__links {
font-size: 14px;
color: $darker-text-color;
+ padding: 10px 0;
a {
display: inline-block;
color: $darker-text-color;
text-decoration: none;
- padding: 10px;
- padding-top: 20px;
+ padding: 5px 10px;
font-weight: 500;
strong {
@@ -6348,6 +6622,55 @@ noscript {
}
}
}
+
+ &__account-note {
+ padding: 15px;
+ padding-bottom: 10px;
+ color: $primary-text-color;
+ border-radius: 4px;
+ font-size: 14px;
+ font-weight: 400;
+ border-bottom: 1px solid lighten($ui-base-color, 12%);
+
+ .columns-area--mobile & {
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+
+ label {
+ display: block;
+ font-size: 12px;
+ font-weight: 500;
+ color: $darker-text-color;
+ text-transform: uppercase;
+ margin-bottom: 5px;
+ }
+
+ textarea {
+ display: block;
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ color: $secondary-text-color;
+ background: transparent;
+ padding: 10px;
+ margin: 0 -10px;
+ font-family: inherit;
+ font-size: 14px;
+ resize: none;
+ border: 0;
+ outline: 0;
+ border-radius: 4px;
+
+ &::placeholder {
+ color: $dark-text-color;
+ opacity: 1;
+ }
+
+ &:focus {
+ background: $ui-base-color;
+ }
+ }
+ }
}
.trends {
@@ -6429,6 +6752,7 @@ noscript {
path:last-child {
stroke: lighten($highlight-text-color, 6%) !important;
+ fill: none !important;
}
}
}
@@ -6449,6 +6773,17 @@ noscript {
flex: 0 0 auto;
padding: 10px;
padding-top: 12px;
+ position: relative;
+ cursor: pointer;
+ }
+
+ &__unread {
+ display: inline-block;
+ background: $highlight-text-color;
+ border-radius: 50%;
+ width: 0.625rem;
+ height: 0.625rem;
+ margin: -.1ex .15em .1ex;
}
&__content {
@@ -6496,4 +6831,207 @@ noscript {
word-break: break-word;
}
}
+
+ &--unread {
+ background: lighten($ui-base-color, 2%);
+
+ &:focus {
+ background: lighten($ui-base-color, 4%);
+ }
+
+ .conversation__content__info {
+ font-weight: 700;
+ }
+
+ .conversation__content__relative-time {
+ color: $primary-text-color;
+ }
+ }
+}
+
+.announcements {
+ background: lighten($ui-base-color, 8%);
+ font-size: 13px;
+ display: flex;
+ align-items: flex-end;
+
+ &__mastodon {
+ width: 124px;
+ flex: 0 0 auto;
+
+ @media screen and (max-width: 124px + 300px) {
+ display: none;
+ }
+ }
+
+ &__container {
+ width: calc(100% - 124px);
+ flex: 0 0 auto;
+ position: relative;
+
+ @media screen and (max-width: 124px + 300px) {
+ width: 100%;
+ }
+ }
+
+ &__item {
+ box-sizing: border-box;
+ width: 100%;
+ padding: 15px;
+ position: relative;
+ font-size: 15px;
+ line-height: 20px;
+ word-wrap: break-word;
+ font-weight: 400;
+ max-height: 50vh;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+
+ &__range {
+ display: block;
+ font-weight: 500;
+ margin-bottom: 10px;
+ padding-right: 18px;
+ }
+
+ &__unread {
+ position: absolute;
+ top: 19px;
+ right: 19px;
+ display: block;
+ background: $highlight-text-color;
+ border-radius: 50%;
+ width: 0.625rem;
+ height: 0.625rem;
+ }
+ }
+
+ &__pagination {
+ padding: 15px;
+ color: $darker-text-color;
+ position: absolute;
+ bottom: 3px;
+ right: 0;
+ }
+}
+
+.layout-multiple-columns .announcements__mastodon {
+ display: none;
+}
+
+.layout-multiple-columns .announcements__container {
+ width: 100%;
+}
+
+.reactions-bar {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ margin-top: 15px;
+ margin-left: -2px;
+ width: calc(100% - (90px - 33px));
+
+ &__item {
+ flex-shrink: 0;
+ background: lighten($ui-base-color, 12%);
+ border: 0;
+ border-radius: 3px;
+ margin: 2px;
+ cursor: pointer;
+ user-select: none;
+ padding: 0 6px;
+ display: flex;
+ align-items: center;
+ transition: all 100ms ease-in;
+ transition-property: background-color, color;
+
+ &__emoji {
+ display: block;
+ margin: 3px 0;
+ width: 16px;
+ height: 16px;
+
+ img {
+ display: block;
+ margin: 0;
+ width: 100%;
+ height: 100%;
+ min-width: auto;
+ min-height: auto;
+ vertical-align: bottom;
+ object-fit: contain;
+ }
+ }
+
+ &__count {
+ display: block;
+ min-width: 9px;
+ font-size: 13px;
+ font-weight: 500;
+ text-align: center;
+ margin-left: 6px;
+ color: $darker-text-color;
+ }
+
+ &:hover,
+ &:focus,
+ &:active {
+ background: lighten($ui-base-color, 16%);
+ transition: all 200ms ease-out;
+ transition-property: background-color, color;
+
+ &__count {
+ color: lighten($darker-text-color, 4%);
+ }
+ }
+
+ &.active {
+ transition: all 100ms ease-in;
+ transition-property: background-color, color;
+ background-color: mix(lighten($ui-base-color, 12%), $ui-highlight-color, 80%);
+
+ .reactions-bar__item__count {
+ color: lighten($highlight-text-color, 8%);
+ }
+ }
+ }
+
+ .emoji-picker-dropdown {
+ margin: 2px;
+ }
+
+ &:hover .emoji-button {
+ opacity: 0.85;
+ }
+
+ .emoji-button {
+ color: $darker-text-color;
+ margin: 0;
+ font-size: 16px;
+ width: auto;
+ flex-shrink: 0;
+ padding: 0 6px;
+ height: 22px;
+ display: flex;
+ align-items: center;
+ opacity: 0.5;
+ transition: all 100ms ease-in;
+ transition-property: background-color, color;
+
+ &:hover,
+ &:active,
+ &:focus {
+ opacity: 1;
+ color: lighten($darker-text-color, 4%);
+ transition: all 200ms ease-out;
+ transition-property: background-color, color;
+ }
+ }
+
+ &--empty {
+ .emoji-button {
+ padding: 0;
+ }
+ }
}
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index 319f8c94d..51d9b46b0 100644
--- a/app/javascript/styles/mastodon/containers.scss
+++ b/app/javascript/styles/mastodon/containers.scss
@@ -646,7 +646,7 @@
}
.counter {
- width: 33.3%;
+ min-width: 33.3%;
box-sizing: border-box;
flex: 0 0 auto;
color: $darker-text-color;
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index 1fd8f7e15..67fd5ee97 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -142,6 +142,10 @@ code {
}
}
+ .otp-hint {
+ margin-bottom: 25px;
+ }
+
.card {
margin-bottom: 15px;
}
@@ -222,6 +226,12 @@ code {
}
}
+ .input.datetime .label_input select {
+ display: inline-block;
+ width: auto;
+ flex: 0;
+ }
+
.required abbr {
text-decoration: none;
color: lighten($error-value-color, 12%);
@@ -279,6 +289,14 @@ code {
margin-bottom: 25px;
}
}
+
+ .fields-group.invited-by {
+ margin-bottom: 30px;
+
+ .hint {
+ text-align: center;
+ }
+ }
}
.input.radio_buttons .radio label {
@@ -513,6 +531,10 @@ code {
&__overlay-area {
position: relative;
+ &__blurred form {
+ filter: blur(2px);
+ }
+
&__overlay {
position: absolute;
top: 0;
@@ -523,8 +545,10 @@ code {
justify-content: center;
align-items: center;
background: rgba($ui-base-color, 0.65);
- backdrop-filter: blur(2px);
border-radius: 4px;
+ margin-left: -4px;
+ margin-top: -4px;
+ padding: 4px;
&__content {
text-align: center;
@@ -563,7 +587,7 @@ code {
&.alert {
border: 1px solid rgba($error-value-color, 0.5);
- background: rgba($error-value-color, 0.25);
+ background: rgba($error-value-color, 0.1);
color: $error-value-color;
}
@@ -623,6 +647,15 @@ code {
@media screen and (max-width: 740px) and (min-width: 441px) {
margin-top: 40px;
}
+
+ &.translation-prompt {
+ text-align: unset;
+ color: unset;
+
+ a {
+ text-decoration: underline;
+ }
+ }
}
.form-footer {
diff --git a/app/javascript/styles/mastodon/polls.scss b/app/javascript/styles/mastodon/polls.scss
index f59a9d693..ad7088982 100644
--- a/app/javascript/styles/mastodon/polls.scss
+++ b/app/javascript/styles/mastodon/polls.scss
@@ -8,20 +8,48 @@
}
&__chart {
- position: absolute;
- top: 0;
- left: 0;
- height: 100%;
- display: inline-block;
border-radius: 4px;
- background: darken($ui-primary-color, 14%);
+ display: block;
+ background: darken($ui-primary-color, 5%);
+ height: 5px;
+ min-width: 1%;
&.leading {
background: $ui-highlight-color;
}
}
- &__text {
+ progress {
+ border: 0;
+ display: block;
+ width: 100%;
+ height: 5px;
+ appearance: none;
+ background: transparent;
+
+ &::-webkit-progress-bar {
+ background: transparent;
+ }
+
+ // Those rules need to be entirely separate or they won't work, hence the
+ // duplication
+ &::-moz-progress-bar {
+ border-radius: 4px;
+ background: darken($ui-primary-color, 5%);
+ }
+
+ &::-ms-fill {
+ border-radius: 4px;
+ background: darken($ui-primary-color, 5%);
+ }
+
+ &::-webkit-progress-value {
+ border-radius: 4px;
+ background: darken($ui-primary-color, 5%);
+ }
+ }
+
+ &__option {
position: relative;
display: flex;
padding: 6px 0;
@@ -29,6 +57,13 @@
cursor: default;
overflow: hidden;
+ &__text {
+ display: inline-block;
+ word-wrap: break-word;
+ overflow-wrap: break-word;
+ max-width: calc(100% - 45px - 25px);
+ }
+
input[type=radio],
input[type=checkbox] {
display: none;
@@ -91,23 +126,39 @@
border-color: $valid-value-color;
background: $valid-value-color;
}
+
+ &:active,
+ &:focus,
+ &:hover {
+ border-color: lighten($valid-value-color, 15%);
+ border-width: 4px;
+ }
+
+ &::-moz-focus-inner {
+ outline: 0 !important;
+ border: 0;
+ }
+
+ &:focus,
+ &:active {
+ outline: 0 !important;
+ }
}
&__number {
display: inline-block;
- width: 52px;
+ width: 45px;
font-weight: 700;
- padding: 0 10px;
- padding-left: 8px;
- text-align: right;
- margin-top: auto;
- margin-bottom: auto;
- flex: 0 0 52px;
+ flex: 0 0 45px;
}
- &__vote__mark {
- float: left;
- line-height: 18px;
+ &__voted {
+ padding: 0 5px;
+ display: inline-block;
+
+ &__mark {
+ font-size: 18px;
+ }
}
&__footer {
@@ -160,6 +211,10 @@
button,
select {
flex: 1 1 50%;
+
+ &:focus {
+ border-color: $highlight-text-color;
+ }
}
}
@@ -178,7 +233,7 @@
display: flex;
align-items: center;
- .poll__text {
+ .poll__option {
flex: 0 0 auto;
width: calc(100% - (23px + 6px));
margin-right: 6px;
diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss
index ecd166253..fbf26e30b 100644
--- a/app/javascript/styles/mastodon/rtl.scss
+++ b/app/javascript/styles/mastodon/rtl.scss
@@ -158,6 +158,7 @@ body.rtl {
}
.status__relative-time,
+ .status__visibility-icon,
.activity-stream .status.light .status__header .status__meta {
float: left;
}
diff --git a/app/javascript/styles/mastodon/statuses.scss b/app/javascript/styles/mastodon/statuses.scss
index 19ce0ab8f..7ae1c5a24 100644
--- a/app/javascript/styles/mastodon/statuses.scss
+++ b/app/javascript/styles/mastodon/statuses.scss
@@ -128,8 +128,23 @@
.embed,
.public-layout {
+ .status__content[data-spoiler=folded] {
+ .e-content {
+ display: none;
+ }
+
+ p:first-child {
+ margin-bottom: 0;
+ }
+ }
+
.detailed-status {
padding: 15px;
+
+ .detailed-status__display-avatar .account__avatar {
+ width: 48px;
+ height: 48px;
+ }
}
.status {
@@ -139,6 +154,11 @@
&__avatar {
left: 15px;
top: 17px;
+
+ .account__avatar {
+ width: 48px;
+ height: 48px;
+ }
}
&__content {
@@ -159,5 +179,12 @@
.video-player {
margin-top: 10px;
}
+
+ &__action-bar-button {
+ font-size: 18px;
+ width: 23.1429px;
+ height: 23.1429px;
+ line-height: 23.15px;
+ }
}
}
diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss
index 5a6e10aa4..62f5554ff 100644
--- a/app/javascript/styles/mastodon/tables.scss
+++ b/app/javascript/styles/mastodon/tables.scss
@@ -149,10 +149,6 @@ a.table-action-link {
margin-top: 0;
}
}
-
- @media screen and (max-width: $no-gap-breakpoint) {
- display: none;
- }
}
&__actions,
@@ -174,10 +170,6 @@ a.table-action-link {
text-align: right;
padding-right: 16px - 5px;
}
-
- @media screen and (max-width: $no-gap-breakpoint) {
- display: none;
- }
}
&__form {
@@ -198,7 +190,7 @@ a.table-action-link {
background: darken($ui-base-color, 4%);
@media screen and (max-width: $no-gap-breakpoint) {
- &:first-child {
+ .optional &:first-child {
border-top: 1px solid darken($ui-base-color, 8%);
}
}
@@ -264,6 +256,13 @@ a.table-action-link {
}
}
+ &.optional .batch-table__toolbar,
+ &.optional .batch-table__row__select {
+ @media screen and (max-width: $no-gap-breakpoint) {
+ display: none;
+ }
+ }
+
.status__content {
padding-top: 0;
diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss
index 44a3c52df..cc1abc59b 100644
--- a/app/javascript/styles/mastodon/variables.scss
+++ b/app/javascript/styles/mastodon/variables.scss
@@ -6,6 +6,8 @@ $error-red: #df405a !default; // Cerise
$warning-red: #ff5050 !default; // Sunset Orange
$gold-star: #e04040 !default; // ::Change star to heart
+$red-bookmark: $warning-red;
+
// Values from the classic Mastodon UI
$classic-base-color: #282c37; // Midnight Express
$classic-primary-color: #9baec8; // Echo Blue
diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss
index ca050a8d9..5b97d1ec4 100644
--- a/app/javascript/styles/mastodon/widgets.scss
+++ b/app/javascript/styles/mastodon/widgets.scss
@@ -93,12 +93,6 @@
display: flex;
align-items: center;
}
-
- .account__avatar {
- width: 44px;
- height: 44px;
- background-size: 44px 44px;
- }
}
.trends__item {
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index a4a9baaee..58cec7ac4 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -5,7 +5,7 @@ class ActivityPub::Activity
include Redisable
SUPPORTED_TYPES = %w(Note Question).freeze
- CONVERTED_TYPES = %w(Image Audio Video Article Page).freeze
+ CONVERTED_TYPES = %w(Image Audio Video Article Page Event).freeze
def initialize(json, account, **options)
@json = json
@@ -21,7 +21,7 @@ class ActivityPub::Activity
class << self
def factory(json, account, **options)
@json = json
- klass&.new(json, account, options)
+ klass&.new(json, account, **options)
end
private
@@ -89,7 +89,7 @@ class ActivityPub::Activity
def distribute(status)
crawl_links(status)
- notify_about_reblog(status) if reblog_of_local_account?(status)
+ notify_about_reblog(status) if reblog_of_local_account?(status) && !reblog_by_following_group_account?(status)
notify_about_mentions(status)
# Only continue if the status is supposed to have arrived in real-time.
@@ -105,6 +105,10 @@ class ActivityPub::Activity
status.reblog? && status.reblog.account.local?
end
+ def reblog_by_following_group_account?(status)
+ status.reblog? && status.account.group? && status.reblog.account.following?(status.account)
+ end
+
def notify_about_reblog(status)
NotifyService.new.call(status.reblog.account, status)
end
@@ -128,7 +132,7 @@ class ActivityPub::Activity
end
def delete_arrived_first?(uri)
- redis.exists("delete_upon_arrival:#{@account.id}:#{uri}")
+ redis.exists?("delete_upon_arrival:#{@account.id}:#{uri}")
end
def delete_later!(uri)
@@ -153,6 +157,14 @@ class ActivityPub::Activity
fetch_remote_original_status
end
+ def follow_request_from_object
+ @follow_request ||= FollowRequest.find_by(target_account: @account, uri: object_uri) unless object_uri.nil?
+ end
+
+ def follow_from_object
+ @follow ||= ::Follow.find_by(target_account: @account, uri: object_uri) unless object_uri.nil?
+ end
+
def fetch_remote_original_status
if object_uri.start_with?('http')
return if ActivityPub::TagManager.instance.local_uri?(object_uri)
diff --git a/app/lib/activitypub/activity/accept.rb b/app/lib/activitypub/activity/accept.rb
index 348ee0d1c..7010ff43e 100644
--- a/app/lib/activitypub/activity/accept.rb
+++ b/app/lib/activitypub/activity/accept.rb
@@ -2,17 +2,18 @@
class ActivityPub::Activity::Accept < ActivityPub::Activity
def perform
+ return accept_follow_for_relay if relay_follow?
+ return follow_request_from_object.authorize! unless follow_request_from_object.nil?
+
case @object['type']
when 'Follow'
- accept_follow
+ accept_embedded_follow
end
end
private
- def accept_follow
- return accept_follow_for_relay if relay_follow?
-
+ def accept_embedded_follow
target_account = account_from_uri(target_uri)
return if target_account.nil? || !target_account.local?
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 76bf9b2e5..d3d460551 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -2,6 +2,45 @@
class ActivityPub::Activity::Create < ActivityPub::Activity
def perform
+ case @object['type']
+ when 'EncryptedMessage'
+ create_encrypted_message
+ else
+ create_status
+ end
+ end
+
+ private
+
+ def create_encrypted_message
+ return reject_payload! if invalid_origin?(@object['id']) || @options[:delivered_to_account_id].blank?
+
+ target_account = Account.find(@options[:delivered_to_account_id])
+ target_device = target_account.devices.find_by(device_id: @object.dig('to', 'deviceId'))
+
+ return if target_device.nil?
+
+ target_device.encrypted_messages.create!(
+ from_account: @account,
+ from_device_id: @object.dig('attributedTo', 'deviceId'),
+ type: @object['messageType'],
+ body: @object['cipherText'],
+ digest: @object.dig('digest', 'digestValue'),
+ message_franking: message_franking.to_token
+ )
+ end
+
+ def message_franking
+ MessageFranking.new(
+ hmac: @object.dig('digest', 'digestValue'),
+ original_franking: @object['messageFranking'],
+ source_account_id: @account.id,
+ target_account_id: @options[:delivered_to_account_id],
+ timestamp: Time.now.utc
+ )
+ end
+
+ def create_status
return reject_payload! if unsupported_object_type? || invalid_origin?(@object['id']) || Tombstone.exists?(uri: @object['id']) || !related_to_local_activity?
RedisLock.acquire(lock_options) do |lock|
@@ -23,7 +62,13 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
@status
end
- private
+ def audience_to
+ @object['to'] || @json['to']
+ end
+
+ def audience_cc
+ @object['cc'] || @json['cc']
+ end
def process_status
@tags = []
@@ -75,7 +120,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
def process_audience
- (as_array(@object['to']) + as_array(@object['cc'])).uniq.each do |audience|
+ (as_array(audience_to) + as_array(audience_cc)).uniq.each do |audience|
next if audience == ActivityPub::TagManager::COLLECTIONS[:public]
# Unlike with tags, there is no point in resolving accounts we don't already
@@ -149,7 +194,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
return if tag['name'].blank?
Tag.find_or_create_by_names(tag['name']) do |hashtag|
- @tags << hashtag unless @tags.include?(hashtag)
+ @tags << hashtag unless @tags.include?(hashtag) || !hashtag.valid?
end
rescue ActiveRecord::RecordInvalid
nil
@@ -159,7 +204,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
return if tag['href'].blank?
account = account_from_uri(tag['href'])
- account = ::FetchRemoteAccountService.new.call(tag['href']) if account.nil?
+ account = ActivityPub::FetchRemoteAccountService.new.call(tag['href']) if account.nil?
return if account.nil?
@@ -193,12 +238,13 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
begin
href = Addressable::URI.parse(attachment['url']).normalize.to_s
- media_attachment = MediaAttachment.create(account: @account, remote_url: href, description: attachment['name'].presence, focus: attachment['focalPoint'], blurhash: supported_blurhash?(attachment['blurhash']) ? attachment['blurhash'] : nil)
+ media_attachment = MediaAttachment.create(account: @account, remote_url: href, thumbnail_remote_url: icon_url_from_attachment(attachment), description: attachment['summary'].presence || attachment['name'].presence, focus: attachment['focalPoint'], blurhash: supported_blurhash?(attachment['blurhash']) ? attachment['blurhash'] : nil)
media_attachments << media_attachment
next if unsupported_media_type?(attachment['mediaType']) || skip_download?
- media_attachment.file_remote_url = href
+ media_attachment.download_file!
+ media_attachment.download_thumbnail!
media_attachment.save
rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError
RedownloadMediaWorker.perform_in(rand(30..600).seconds, media_attachment.id)
@@ -211,6 +257,13 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
media_attachments
end
+ def icon_url_from_attachment(attachment)
+ url = attachment['icon'].is_a?(Hash) ? attachment['icon']['url'] : attachment['icon']
+ Addressable::URI.parse(url).normalize.to_s if url.present?
+ rescue Addressable::URI::InvalidURIError
+ nil
+ end
+
def process_poll
return unless @object['type'] == 'Question' && (@object['anyOf'].is_a?(Array) || @object['oneOf'].is_a?(Array))
@@ -254,6 +307,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def poll_vote!
poll = replied_to_status.preloadable_poll
already_voted = true
+
RedisLock.acquire(poll_lock_options) do |lock|
if lock.acquired?
already_voted = poll.votes.where(account: @account).exists?
@@ -262,20 +316,24 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
raise Mastodon::RaceConditionError
end
end
+
increment_voters_count! unless already_voted
ActivityPub::DistributePollUpdateWorker.perform_in(3.minutes, replied_to_status.id) unless replied_to_status.preloadable_poll.hide_totals?
end
def resolve_thread(status)
return unless status.reply? && status.thread.nil? && Request.valid_url?(in_reply_to_uri)
+
ThreadResolveWorker.perform_async(status.id, in_reply_to_uri)
end
def fetch_replies(status)
collection = @object['replies']
return if collection.nil?
+
replies = ActivityPub::FetchRepliesService.new.call(status, collection, false)
return unless replies.nil?
+
uri = value_or_id(collection)
ActivityPub::FetchRepliesWorker.perform_async(status.id, uri) unless uri.nil?
end
@@ -283,6 +341,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def conversation_from_uri(uri)
return nil if uri.nil?
return Conversation.find_by(id: OStatus::TagManager.instance.unique_tag_to_local_id(uri, 'Conversation')) if OStatus::TagManager.instance.local_id?(uri)
+
begin
Conversation.find_or_create_by!(uri: uri)
rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotUnique
@@ -291,11 +350,11 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
def visibility_from_audience
- if equals_or_includes?(@object['to'], ActivityPub::TagManager::COLLECTIONS[:public])
+ if equals_or_includes?(audience_to, ActivityPub::TagManager::COLLECTIONS[:public])
:public
- elsif equals_or_includes?(@object['cc'], ActivityPub::TagManager::COLLECTIONS[:public])
+ elsif equals_or_includes?(audience_cc, ActivityPub::TagManager::COLLECTIONS[:public])
:unlisted
- elsif equals_or_includes?(@object['to'], @account.followers_url)
+ elsif equals_or_includes?(audience_to, @account.followers_url)
:private
else
:direct
@@ -304,7 +363,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def audience_includes?(account)
uri = ActivityPub::TagManager.instance.uri_for(account)
- equals_or_includes?(@object['to'], uri) || equals_or_includes?(@object['cc'], uri)
+ equals_or_includes?(audience_to, uri) || equals_or_includes?(audience_cc, uri)
end
def replied_to_status
@@ -396,6 +455,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def skip_download?
return @skip_download if defined?(@skip_download)
+
@skip_download ||= DomainBlock.reject_media?(@account.domain)
end
@@ -415,7 +475,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def addresses_local_accounts?
return true if @options[:delivered_to_account_id]
- local_usernames = (as_array(@object['to']) + as_array(@object['cc'])).uniq.select { |uri| ActivityPub::TagManager.instance.local_uri?(uri) }.map { |uri| ActivityPub::TagManager.instance.uri_to_local_id(uri, :username) }
+ local_usernames = (as_array(audience_to) + as_array(audience_cc)).uniq.select { |uri| ActivityPub::TagManager.instance.local_uri?(uri) }.map { |uri| ActivityPub::TagManager.instance.uri_to_local_id(uri, :username) }
return false if local_usernames.empty?
@@ -428,11 +488,13 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def forward_for_reply
return unless @json['signature'].present? && reply_to_local?
+
ActivityPub::RawDistributionWorker.perform_async(Oj.dump(@json), replied_to_status.account_id, [@account.preferred_inbox_url])
end
def increment_voters_count!
poll = replied_to_status.preloadable_poll
+
unless poll.voters_count.nil?
poll.voters_count = poll.voters_count + 1
poll.save
diff --git a/app/lib/activitypub/activity/move.rb b/app/lib/activitypub/activity/move.rb
index 12bb82d25..2103f503f 100644
--- a/app/lib/activitypub/activity/move.rb
+++ b/app/lib/activitypub/activity/move.rb
@@ -33,7 +33,7 @@ class ActivityPub::Activity::Move < ActivityPub::Activity
end
def processed?
- redis.exists("move_in_progress:#{@account.id}")
+ redis.exists?("move_in_progress:#{@account.id}")
end
def mark_as_processing!
diff --git a/app/lib/activitypub/activity/reject.rb b/app/lib/activitypub/activity/reject.rb
index dba21fb9a..8d771ed81 100644
--- a/app/lib/activitypub/activity/reject.rb
+++ b/app/lib/activitypub/activity/reject.rb
@@ -2,17 +2,19 @@
class ActivityPub::Activity::Reject < ActivityPub::Activity
def perform
+ return reject_follow_for_relay if relay_follow?
+ return follow_request_from_object.reject! unless follow_request_from_object.nil?
+ return UnfollowService.new.call(follow_from_object.target_account, @account) unless follow_from_object.nil?
+
case @object['type']
when 'Follow'
- reject_follow
+ reject_embedded_follow
end
end
private
- def reject_follow
- return reject_follow_for_relay if relay_follow?
-
+ def reject_embedded_follow
target_account = account_from_uri(target_uri)
return if target_account.nil? || !target_account.local?
diff --git a/app/lib/activitypub/adapter.rb b/app/lib/activitypub/adapter.rb
index 2a8f72333..634ed29fa 100644
--- a/app/lib/activitypub/adapter.rb
+++ b/app/lib/activitypub/adapter.rb
@@ -22,6 +22,7 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base
blurhash: { 'toot' => 'http://joinmastodon.org/ns#', 'blurhash' => 'toot:blurhash' },
discoverable: { 'toot' => 'http://joinmastodon.org/ns#', 'discoverable' => 'toot:discoverable' },
voters_count: { 'toot' => 'http://joinmastodon.org/ns#', 'votersCount' => 'toot:votersCount' },
+ olm: { 'toot' => 'http://joinmastodon.org/ns#', 'Device' => 'toot:Device', 'Ed25519Signature' => 'toot:Ed25519Signature', 'Ed25519Key' => 'toot:Ed25519Key', 'Curve25519Key' => 'toot:Curve25519Key', 'EncryptedMessage' => 'toot:EncryptedMessage', 'publicKeyBase64' => 'toot:publicKeyBase64', 'deviceId' => 'toot:deviceId', 'claim' => { '@type' => '@id', '@id' => 'toot:claim' }, 'fingerprintKey' => { '@type' => '@id', '@id' => 'toot:fingerprintKey' }, 'identityKey' => { '@type' => '@id', '@id' => 'toot:identityKey' }, 'devices' => { '@type' => '@id', '@id' => 'toot:devices' }, 'messageFranking' => 'toot:messageFranking', 'messageType' => 'toot:messageType', 'cipherText' => 'toot:cipherText' },
}.freeze
def self.default_key_transform
@@ -35,6 +36,7 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base
def serializable_hash(options = nil)
named_contexts = {}
context_extensions = {}
+
options = serialization_options(options)
serialized_hash = serializer.serializable_hash(options.merge(named_contexts: named_contexts, context_extensions: context_extensions))
serialized_hash = serialized_hash.select { |k, _| options[:fields].include?(k) } if options[:fields]
diff --git a/app/lib/activitypub/tag_manager.rb b/app/lib/activitypub/tag_manager.rb
index 512272dbe..1523f86d4 100644
--- a/app/lib/activitypub/tag_manager.rb
+++ b/app/lib/activitypub/tag_manager.rb
@@ -15,6 +15,8 @@ class ActivityPub::TagManager
def url_for(target)
return target.url if target.respond_to?(:local?) && !target.local?
+ return unless target.respond_to?(:object_type)
+
case target.object_type
when :person
target.instance_actor? ? about_more_url(instance_actor: true) : short_account_url(target)
@@ -68,10 +70,19 @@ class ActivityPub::TagManager
if status.account.silenced?
# Only notify followers if the account is locally silenced
account_ids = status.active_mentions.pluck(:account_id)
- to = status.account.followers.where(id: account_ids).map { |account| uri_for(account) }
- to.concat(FollowRequest.where(target_account_id: status.account_id, account_id: account_ids).map { |request| uri_for(request.account) })
+ to = status.account.followers.where(id: account_ids).each_with_object([]) do |account, result|
+ result << uri_for(account)
+ result << account.followers_url if account.group?
+ end
+ to.concat(FollowRequest.where(target_account_id: status.account_id, account_id: account_ids).each_with_object([]) do |request, result|
+ result << uri_for(request.account)
+ result << request.account.followers_url if request.account.group?
+ end)
else
- status.active_mentions.map { |mention| uri_for(mention.account) }
+ status.active_mentions.each_with_object([]) do |mention, result|
+ result << uri_for(mention.account)
+ result << mention.account.followers_url if mention.account.group?
+ end
end
end
end
@@ -97,10 +108,19 @@ class ActivityPub::TagManager
if status.account.silenced?
# Only notify followers if the account is locally silenced
account_ids = status.active_mentions.pluck(:account_id)
- cc.concat(status.account.followers.where(id: account_ids).map { |account| uri_for(account) })
- cc.concat(FollowRequest.where(target_account_id: status.account_id, account_id: account_ids).map { |request| uri_for(request.account) })
+ cc.concat(status.account.followers.where(id: account_ids).each_with_object([]) do |account, result|
+ result << uri_for(account)
+ result << account.followers_url if account.group?
+ end)
+ cc.concat(FollowRequest.where(target_account_id: status.account_id, account_id: account_ids).each_with_object([]) do |request, result|
+ result << uri_for(request.account)
+ result << request.account.followers_url if request.account.group?
+ end)
else
- cc.concat(status.active_mentions.map { |mention| uri_for(mention.account) })
+ cc.concat(status.active_mentions.each_with_object([]) do |mention, result|
+ result << uri_for(mention.account)
+ result << mention.account.followers_url if mention.account.group?
+ end)
end
end
diff --git a/app/lib/delivery_failure_tracker.rb b/app/lib/delivery_failure_tracker.rb
index 8d3be35de..25fa694d2 100644
--- a/app/lib/delivery_failure_tracker.rb
+++ b/app/lib/delivery_failure_tracker.rb
@@ -3,47 +3,53 @@
class DeliveryFailureTracker
FAILURE_DAYS_THRESHOLD = 7
- def initialize(inbox_url)
- @inbox_url = inbox_url
+ def initialize(url_or_host)
+ @host = url_or_host.start_with?('https://') || url_or_host.start_with?('http://') ? Addressable::URI.parse(url_or_host).normalized_host : url_or_host
end
def track_failure!
Redis.current.sadd(exhausted_deliveries_key, today)
- Redis.current.sadd('unavailable_inboxes', @inbox_url) if reached_failure_threshold?
+ UnavailableDomain.create(domain: @host) if reached_failure_threshold?
end
def track_success!
Redis.current.del(exhausted_deliveries_key)
- Redis.current.srem('unavailable_inboxes', @inbox_url)
+ UnavailableDomain.find_by(domain: @host)&.destroy
end
def days
Redis.current.scard(exhausted_deliveries_key) || 0
end
+ def available?
+ !UnavailableDomain.where(domain: @host).exists?
+ end
+
+ alias reset! track_success!
+
class << self
- def filter(arr)
- arr.reject(&method(:unavailable?))
- end
+ def without_unavailable(urls)
+ unavailable_domains_map = Rails.cache.fetch('unavailable_domains') { UnavailableDomain.pluck(:domain).each_with_object({}) { |domain, hash| hash[domain] = true } }
- def unavailable?(url)
- Redis.current.sismember('unavailable_inboxes', url)
+ urls.reject do |url|
+ host = Addressable::URI.parse(url).normalized_host
+ unavailable_domains_map[host]
+ end
end
def available?(url)
- !unavailable?(url)
+ new(url).available?
end
- def track_inverse_success!(from_account)
- new(from_account.inbox_url).track_success! if from_account.inbox_url.present?
- new(from_account.shared_inbox_url).track_success! if from_account.shared_inbox_url.present?
+ def reset!(url)
+ new(url).reset!
end
end
private
def exhausted_deliveries_key
- "exhausted_deliveries:#{@inbox_url}"
+ "exhausted_deliveries:#{@host}"
end
def today
diff --git a/app/lib/entity_cache.rb b/app/lib/entity_cache.rb
index 8fff544a0..afdbd70f2 100644
--- a/app/lib/entity_cache.rb
+++ b/app/lib/entity_cache.rb
@@ -7,8 +7,12 @@ class EntityCache
MAX_EXPIRATION = 7.days.freeze
+ def status(url)
+ Rails.cache.fetch(to_key(:status, url), expires_in: MAX_EXPIRATION) { FetchRemoteStatusService.new.call(url) }
+ end
+
def mention(username, domain)
- Rails.cache.fetch(to_key(:mention, username, domain), expires_in: MAX_EXPIRATION) { Account.select(:username, :domain, :url).find_remote(username, domain) }
+ Rails.cache.fetch(to_key(:mention, username, domain), expires_in: MAX_EXPIRATION) { Account.select(:id, :username, :domain, :url).find_remote(username, domain) }
end
def emoji(shortcodes, domain)
diff --git a/app/lib/exceptions.rb b/app/lib/exceptions.rb
index 01346bfe5..3362576b0 100644
--- a/app/lib/exceptions.rb
+++ b/app/lib/exceptions.rb
@@ -8,6 +8,7 @@ module Mastodon
class LengthValidationError < ValidationError; end
class DimensionsValidationError < ValidationError; end
class RaceConditionError < Error; end
+ class RateLimitExceededError < Error; end
class UnexpectedResponseError < Error
def initialize(response = nil)
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index d8b486b60..53ff31f5e 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -11,6 +11,10 @@ class FeedManager
# Must be <= MAX_ITEMS or the tracking sets will grow forever
REBLOG_FALLOFF = 40
+ def with_active_accounts(&block)
+ Account.joins(:user).where('users.current_sign_in_at > ?', User::ACTIVE_DURATION.ago).find_each(&block)
+ end
+
def key(type, id, subtype = nil)
return "feed:#{type}:#{id}" unless subtype
@@ -102,7 +106,7 @@ class FeedManager
crutches = build_crutches(into_account.id, statuses)
statuses.each do |status|
- next if filter_from_home?(status, into_account, crutches)
+ next if filter_from_home?(status, into_account.id, crutches)
add_to_feed(:home, into_account.id, status, aggregate)
end
@@ -153,7 +157,7 @@ class FeedManager
crutches = build_crutches(account.id, statuses)
statuses.each do |status|
- next if filter_from_home?(status, account, crutches)
+ next if filter_from_home?(status, account.id, crutches)
add_to_feed(:home, account.id, status, aggregate)
end
@@ -165,7 +169,7 @@ class FeedManager
private
def push_update_required?(timeline_id)
- redis.exists("subscribed:#{timeline_id}")
+ redis.exists?("subscribed:#{timeline_id}")
end
def blocks_or_mutes?(receiver_id, account_ids, context)
@@ -242,9 +246,14 @@ class FeedManager
combined_regex = active_filters.reduce { |memo, obj| Regexp.union(memo, obj) }
status = status.reblog if status.reblog?
- !combined_regex.match(Formatter.instance.plaintext(status)).nil? ||
- (status.spoiler_text.present? && !combined_regex.match(status.spoiler_text).nil?) ||
- (status.preloadable_poll && !combined_regex.match(status.preloadable_poll.options.join("\n\n")).nil?)
+ combined_text = [
+ Formatter.instance.plaintext(status),
+ status.spoiler_text,
+ status.preloadable_poll ? status.preloadable_poll.options.join("\n\n") : nil,
+ status.media_attachments.map(&:description).join("\n\n"),
+ ].compact.join("\n\n")
+
+ !combined_regex.match(combined_text).nil?
end
# Adds a status to an account's feed, returning true if a status was
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index 990b9f63e..e6f5d7a63 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -46,6 +46,8 @@ class Formatter
def reformat(html)
sanitize(html, Sanitize::Config::MASTODON_STRICT)
+ rescue ArgumentError
+ ''
end
def plaintext(status)
@@ -245,13 +247,14 @@ class Formatter
end
standard = Extractor.extract_entities_with_indices(text, options)
+ extra = Extractor.extract_extra_uris_with_indices(text, options)
- Extractor.remove_overlapping_entities(special + standard)
+ Extractor.remove_overlapping_entities(special + standard + extra)
end
def link_to_url(entity, options = {})
url = Addressable::URI.parse(entity[:url])
- html_attrs = { target: '_blank', rel: 'nofollow noopener' }
+ html_attrs = { target: '_blank', rel: 'nofollow noopener noreferrer' }
html_attrs[:rel] = "me #{html_attrs[:rel]}" if options[:me]
@@ -284,7 +287,7 @@ class Formatter
def link_html(url)
url = Addressable::URI.parse(url).to_s
- prefix = url.match(/\Ahttps?:\/\/(www\.)?/).to_s
+ prefix = url.match(/\A(https?:\/\/(www\.)?|xmpp:)/).to_s
text = url[prefix.length, 30]
suffix = url[prefix.length + 30..-1]
cutoff = url[prefix.length..-1].length > 30
diff --git a/app/lib/inline_renderer.rb b/app/lib/inline_renderer.rb
index 761a8822d..b70814748 100644
--- a/app/lib/inline_renderer.rb
+++ b/app/lib/inline_renderer.rb
@@ -15,6 +15,12 @@ class InlineRenderer
serializer = REST::NotificationSerializer
when :conversation
serializer = REST::ConversationSerializer
+ when :announcement
+ serializer = REST::AnnouncementSerializer
+ when :reaction
+ serializer = REST::ReactionSerializer
+ when :encrypted_message
+ serializer = REST::EncryptedMessageSerializer
else
return
end
diff --git a/app/lib/language_detector.rb b/app/lib/language_detector.rb
index 6f9511a54..2cc8ac615 100644
--- a/app/lib/language_detector.rb
+++ b/app/lib/language_detector.rb
@@ -4,7 +4,7 @@ class LanguageDetector
include Singleton
WORDS_THRESHOLD = 4
- RELIABLE_CHARACTERS_RE = /[\p{Hebrew}\p{Arabic}\p{Syriac}\p{Thaana}\p{Nko}\p{Han}\p{Katakana}\p{Hiragana}\p{Hangul}]+/m
+ RELIABLE_CHARACTERS_RE = /[\p{Hebrew}\p{Arabic}\p{Syriac}\p{Thaana}\p{Nko}\p{Han}\p{Katakana}\p{Hiragana}\p{Hangul}\p{Thai}]+/m
def initialize
@identifier = CLD3::NNetLanguageIdentifier.new(1, 2048)
@@ -44,7 +44,7 @@ class LanguageDetector
words = text.scan(RELIABLE_CHARACTERS_RE)
if words.present?
- words.reduce(0) { |acc, elem| acc + elem.size }.to_f / text.size.to_f > 0.3
+ words.reduce(0) { |acc, elem| acc + elem.size }.to_f / text.size > 0.3
else
false
end
@@ -52,8 +52,10 @@ class LanguageDetector
def detect_language_code(text)
return if unreliable_input?(text)
+
result = @identifier.find_language(text)
- iso6391(result.language.to_s).to_sym if result.reliable?
+
+ iso6391(result.language.to_s).to_sym if result&.reliable?
end
def iso6391(bcp47)
diff --git a/app/lib/proof_provider/keybase/config_serializer.rb b/app/lib/proof_provider/keybase/config_serializer.rb
index 2840f1823..fbce7aeee 100644
--- a/app/lib/proof_provider/keybase/config_serializer.rb
+++ b/app/lib/proof_provider/keybase/config_serializer.rb
@@ -22,7 +22,12 @@ class ProofProvider::Keybase::ConfigSerializer < ActiveModel::Serializer
end
def logo
- { svg_black: full_asset_url(asset_pack_path('media/images/logo_transparent_black.svg')), svg_full: full_asset_url(asset_pack_path('media/images/logo.svg')) }
+ {
+ svg_black: full_asset_url(asset_pack_path('media/images/logo_transparent_black.svg')),
+ svg_white: full_asset_url(asset_pack_path('media/images/logo_transparent_white.svg')),
+ svg_full: full_asset_url(asset_pack_path('media/images/logo.svg')),
+ svg_full_darkmode: full_asset_url(asset_pack_path('media/images/logo.svg')),
+ }
end
def brand_color
diff --git a/app/lib/rate_limiter.rb b/app/lib/rate_limiter.rb
new file mode 100644
index 000000000..0e2c9a894
--- /dev/null
+++ b/app/lib/rate_limiter.rb
@@ -0,0 +1,64 @@
+# frozen_string_literal: true
+
+class RateLimiter
+ include Redisable
+
+ FAMILIES = {
+ follows: {
+ limit: 400,
+ period: 24.hours.freeze,
+ }.freeze,
+
+ statuses: {
+ limit: 300,
+ period: 3.hours.freeze,
+ }.freeze,
+
+ reports: {
+ limit: 400,
+ period: 24.hours.freeze,
+ }.freeze,
+ }.freeze
+
+ def initialize(by, options = {})
+ @by = by
+ @family = options[:family]
+ @limit = FAMILIES[@family][:limit]
+ @period = FAMILIES[@family][:period].to_i
+ end
+
+ def record!
+ count = redis.get(key)
+
+ if count.nil?
+ redis.set(key, 0)
+ redis.expire(key, (@period - (last_epoch_time % @period) + 1).to_i)
+ end
+
+ raise Mastodon::RateLimitExceededError if count.present? && count.to_i >= @limit
+
+ redis.incr(key)
+ end
+
+ def rollback!
+ redis.decr(key)
+ end
+
+ def to_headers(now = Time.now.utc)
+ {
+ 'X-RateLimit-Limit' => @limit.to_s,
+ 'X-RateLimit-Remaining' => (@limit - (redis.get(key) || 0).to_i).to_s,
+ 'X-RateLimit-Reset' => (now + (@period - now.to_i % @period)).iso8601(6),
+ }
+ end
+
+ private
+
+ def key
+ @key ||= "rate_limit:#{@by.id}:#{@family}:#{(last_epoch_time / @period).to_i}"
+ end
+
+ def last_epoch_time
+ @last_epoch_time ||= Time.now.to_i
+ end
+end
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 77fc21418..2693dd734 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -61,7 +61,7 @@ class Request
begin
response = http_client.public_send(@verb, @url.to_s, @options.merge(headers: headers))
rescue => e
- raise e.class, "#{e.message} on #{@url}", e.backtrace
+ raise e.class, "#{e.message} on #{@url}", e.backtrace[0]
end
begin
@@ -96,7 +96,7 @@ class Request
end
def http_client
- HTTP.use(:auto_inflate).timeout(:per_operation, TIMEOUT.dup).follow(max_hops: 2)
+ HTTP.use(:auto_inflate).timeout(TIMEOUT.dup).follow(max_hops: 2)
end
end
diff --git a/app/lib/response_with_limit.rb b/app/lib/response_with_limit.rb
new file mode 100644
index 000000000..2cc17bc5f
--- /dev/null
+++ b/app/lib/response_with_limit.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+class ResponseWithLimit
+ def initialize(response, limit)
+ @response = response
+ @limit = limit
+ end
+
+ attr_reader :response, :limit
+end
diff --git a/app/lib/rss/serializer.rb b/app/lib/rss/serializer.rb
new file mode 100644
index 000000000..fd56c568c
--- /dev/null
+++ b/app/lib/rss/serializer.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+class RSS::Serializer
+ private
+
+ def render_statuses(builder, statuses)
+ statuses.each do |status|
+ builder.item do |item|
+ item.title(status_title(status))
+ .link(ActivityPub::TagManager.instance.url_for(status))
+ .pub_date(status.created_at)
+ .description(status.spoiler_text.presence || Formatter.instance.format(status, inline_poll_options: true).to_str)
+
+ status.media_attachments.each do |media|
+ item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size)
+ end
+ end
+ end
+ end
+
+ def status_title(status)
+ return "#{status.account.acct} deleted status" if status.destroyed?
+
+ preview = status.proper.spoiler_text.presence || status.proper.text
+ if preview.length > 30 || preview[0, 30].include?("\n")
+ preview = preview[0, 30]
+ preview = preview[0, preview.index("\n").presence || 30] + '…'
+ end
+
+ preview = "#{status.proper.spoiler_text.present? ? 'CW ' : ''}“#{preview}”#{status.proper.sensitive? ? ' (sensitive)' : ''}"
+
+ if status.reblog?
+ "#{status.account.acct} boosted #{status.reblog.account.acct}: #{preview}"
+ else
+ "#{status.account.acct}: #{preview}"
+ end
+ end
+end
diff --git a/app/lib/sanitize_config.rb b/app/lib/sanitize_config.rb
index aba8ce9f6..4ad1199a6 100644
--- a/app/lib/sanitize_config.rb
+++ b/app/lib/sanitize_config.rb
@@ -2,7 +2,23 @@
class Sanitize
module Config
- HTTP_PROTOCOLS ||= ['http', 'https', 'dat', 'dweb', 'ipfs', 'ipns', 'ssb', 'gopher', :relative].freeze
+ HTTP_PROTOCOLS = %w(
+ http
+ https
+ ).freeze
+
+ LINK_PROTOCOLS = %w(
+ http
+ https
+ dat
+ dweb
+ ipfs
+ ipns
+ ssb
+ gopher
+ xmpp
+ magnet
+ ).freeze
CLASS_WHITELIST_TRANSFORMER = lambda do |env|
node = env[:node]
@@ -19,19 +35,37 @@ class Sanitize
node['class'] = class_list.join(' ')
end
+ UNSUPPORTED_HREF_TRANSFORMER = lambda do |env|
+ return unless env[:node_name] == 'a'
+
+ current_node = env[:node]
+
+ scheme = begin
+ if current_node['href'] =~ Sanitize::REGEX_PROTOCOL
+ Regexp.last_match(1).downcase
+ else
+ :relative
+ end
+ end
+
+ current_node.replace(current_node.text) unless LINK_PROTOCOLS.include?(scheme)
+ end
+
UNSUPPORTED_ELEMENTS_TRANSFORMER = lambda do |env|
return unless %w(h1 h2 h3 h4 h5 h6 blockquote pre ul ol li).include?(env[:node_name])
+ current_node = env[:node]
+
case env[:node_name]
when 'li'
- env[:node].traverse do |node|
+ current_node.traverse do |node|
next unless %w(p ul ol li).include?(node.name)
node.add_next_sibling('
') if node.next_sibling
node.replace(node.children) unless node.text?
end
else
- env[:node].name = 'p'
+ current_node.name = 'p'
end
end
@@ -45,18 +79,17 @@ class Sanitize
add_attributes: {
'a' => {
- 'rel' => 'nofollow noopener',
+ 'rel' => 'nofollow noopener noreferrer',
'target' => '_blank',
},
},
- protocols: {
- 'a' => { 'href' => HTTP_PROTOCOLS },
- },
+ protocols: {},
transformers: [
CLASS_WHITELIST_TRANSFORMER,
UNSUPPORTED_ELEMENTS_TRANSFORMER,
+ UNSUPPORTED_HREF_TRANSFORMER,
]
)
diff --git a/app/lib/search_query_transformer.rb b/app/lib/search_query_transformer.rb
index 6a299f59d..e07ebfffe 100644
--- a/app/lib/search_query_transformer.rb
+++ b/app/lib/search_query_transformer.rb
@@ -78,7 +78,7 @@ class SearchQueryTransformer < Parslet::Transform
elsif clause[:shortcode]
TermClause.new(prefix, operator, ":#{clause[:term]}:")
elsif clause[:phrase]
- PhraseClause.new(prefix, operator, clause[:phrase].map { |p| p[:term].to_s }.join(' '))
+ PhraseClause.new(prefix, operator, clause[:phrase].is_a?(Array) ? clause[:phrase].map { |p| p[:term].to_s }.join(' ') : clause[:phrase].to_s)
else
raise "Unexpected clause type: #{clause}"
end
diff --git a/app/lib/sidekiq_error_handler.rb b/app/lib/sidekiq_error_handler.rb
index 8eb6b942d..b07817d45 100644
--- a/app/lib/sidekiq_error_handler.rb
+++ b/app/lib/sidekiq_error_handler.rb
@@ -1,13 +1,24 @@
# frozen_string_literal: true
class SidekiqErrorHandler
+ BACKTRACE_LIMIT = 3
+
def call(*)
yield
rescue Mastodon::HostValidationError
# Do not retry
+ rescue => e
+ limit_backtrace_and_raise(e)
ensure
socket = Thread.current[:statsd_socket]
socket&.close
Thread.current[:statsd_socket] = nil
end
+
+ private
+
+ def limit_backtrace_and_raise(e)
+ e.set_backtrace(e.backtrace.first(BACKTRACE_LIMIT))
+ raise e
+ end
end
diff --git a/app/lib/spam_check.rb b/app/lib/spam_check.rb
index 5b40514fd..652d03615 100644
--- a/app/lib/spam_check.rb
+++ b/app/lib/spam_check.rb
@@ -143,7 +143,7 @@ class SpamCheck
end
def trusted?
- @account.trust_level > Account::TRUST_LEVELS[:untrusted]
+ @account.trust_level > Account::TRUST_LEVELS[:untrusted] || (@account.local? && @account.user_staff?)
end
def no_unsolicited_mentions?
diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb
index 3568a3e11..fa8255faa 100644
--- a/app/lib/user_settings_decorator.rb
+++ b/app/lib/user_settings_decorator.rb
@@ -37,6 +37,7 @@ class UserSettingsDecorator
user.settings['use_blurhash'] = use_blurhash_preference if change?('setting_use_blurhash')
user.settings['use_pending_items'] = use_pending_items_preference if change?('setting_use_pending_items')
user.settings['trends'] = trends_preference if change?('setting_trends')
+ user.settings['crop_images'] = crop_images_preference if change?('setting_crop_images')
end
def merged_notification_emails
@@ -127,6 +128,10 @@ class UserSettingsDecorator
boolean_cast_setting 'setting_trends'
end
+ def crop_images_preference
+ boolean_cast_setting 'setting_crop_images'
+ end
+
def boolean_cast_setting(key)
ActiveModel::Type::Boolean.new.cast(settings[key])
end
diff --git a/app/lib/webfinger_resource.rb b/app/lib/webfinger_resource.rb
index 22d78874a..420945485 100644
--- a/app/lib/webfinger_resource.rb
+++ b/app/lib/webfinger_resource.rb
@@ -3,6 +3,8 @@
class WebfingerResource
attr_reader :resource
+ class InvalidRequest < StandardError; end
+
def initialize(resource)
@resource = resource
end
@@ -14,7 +16,7 @@ class WebfingerResource
when /\@/
username_from_acct
else
- raise(ActiveRecord::RecordNotFound)
+ raise InvalidRequest
end
end
diff --git a/app/mailers/admin_mailer.rb b/app/mailers/admin_mailer.rb
index 8abce5f05..11fd09e30 100644
--- a/app/mailers/admin_mailer.rb
+++ b/app/mailers/admin_mailer.rb
@@ -3,7 +3,7 @@
class AdminMailer < ApplicationMailer
layout 'plain_mailer'
- helper :statuses
+ helper :accounts
def new_report(recipient, report)
@report = report
diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb
index 723d901fc..9d8a7886c 100644
--- a/app/mailers/notification_mailer.rb
+++ b/app/mailers/notification_mailer.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: true
class NotificationMailer < ApplicationMailer
+ helper :accounts
helper :statuses
add_template_helper RoutingHelper
diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb
index 6b81f6873..2cd58e60a 100644
--- a/app/mailers/user_mailer.rb
+++ b/app/mailers/user_mailer.rb
@@ -3,6 +3,7 @@
class UserMailer < Devise::Mailer
layout 'mailer'
+ helper :accounts
helper :application
helper :instance
helper :statuses
@@ -125,4 +126,21 @@ class UserMailer < Devise::Mailer
reply_to: Setting.site_contact_email
end
end
+
+ def sign_in_token(user, remote_ip, user_agent, timestamp)
+ @resource = user
+ @instance = Rails.configuration.x.local_domain
+ @remote_ip = remote_ip
+ @user_agent = user_agent
+ @detection = Browser.new(user_agent)
+ @timestamp = timestamp.to_time.utc
+
+ return if @resource.disabled?
+
+ I18n.with_locale(@resource.locale || I18n.default_locale) do
+ mail to: @resource.email,
+ subject: I18n.t('user_mailer.sign_in_token.subject'),
+ reply_to: Setting.site_contact_email
+ end
+ end
end
diff --git a/app/models/account.rb b/app/models/account.rb
index 05936def3..6b7ebda9e 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -3,54 +3,58 @@
#
# Table name: accounts
#
-# id :bigint(8) not null, primary key
-# username :string default(""), not null
-# domain :string
-# secret :string default(""), not null
-# private_key :text
-# public_key :text default(""), not null
-# remote_url :string default(""), not null
-# salmon_url :string default(""), not null
-# hub_url :string default(""), not null
-# created_at :datetime not null
-# updated_at :datetime not null
-# note :text default(""), not null
-# display_name :string default(""), not null
-# uri :string default(""), not null
-# url :string
-# avatar_file_name :string
-# avatar_content_type :string
-# avatar_file_size :integer
-# avatar_updated_at :datetime
-# header_file_name :string
-# header_content_type :string
-# header_file_size :integer
-# header_updated_at :datetime
-# avatar_remote_url :string
-# subscription_expires_at :datetime
-# locked :boolean default(FALSE), not null
-# header_remote_url :string default(""), not null
-# last_webfingered_at :datetime
-# inbox_url :string default(""), not null
-# outbox_url :string default(""), not null
-# shared_inbox_url :string default(""), not null
-# followers_url :string default(""), not null
-# protocol :integer default("ostatus"), not null
-# memorial :boolean default(FALSE), not null
-# moved_to_account_id :bigint(8)
-# featured_collection_url :string
-# fields :jsonb
-# actor_type :string
-# discoverable :boolean
-# also_known_as :string is an Array
-# silenced_at :datetime
-# suspended_at :datetime
-# trust_level :integer
+# id :bigint(8) not null, primary key
+# username :string default(""), not null
+# domain :string
+# secret :string default(""), not null
+# private_key :text
+# public_key :text default(""), not null
+# remote_url :string default(""), not null
+# salmon_url :string default(""), not null
+# hub_url :string default(""), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# note :text default(""), not null
+# display_name :string default(""), not null
+# uri :string default(""), not null
+# url :string
+# avatar_file_name :string
+# avatar_content_type :string
+# avatar_file_size :integer
+# avatar_updated_at :datetime
+# header_file_name :string
+# header_content_type :string
+# header_file_size :integer
+# header_updated_at :datetime
+# avatar_remote_url :string
+# subscription_expires_at :datetime
+# locked :boolean default(FALSE), not null
+# header_remote_url :string default(""), not null
+# last_webfingered_at :datetime
+# inbox_url :string default(""), not null
+# outbox_url :string default(""), not null
+# shared_inbox_url :string default(""), not null
+# followers_url :string default(""), not null
+# protocol :integer default("ostatus"), not null
+# memorial :boolean default(FALSE), not null
+# moved_to_account_id :bigint(8)
+# featured_collection_url :string
+# fields :jsonb
+# actor_type :string
+# discoverable :boolean
+# also_known_as :string is an Array
+# silenced_at :datetime
+# suspended_at :datetime
+# trust_level :integer
+# hide_collections :boolean
+# avatar_storage_schema_version :integer
+# header_storage_schema_version :integer
+# devices_url :string
#
class Account < ApplicationRecord
USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i
- MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[a-z0-9\.\-]+[a-z0-9]+)?)/i
+ MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:word:]\.\-]+[a-z0-9]+)?)/i
include AccountAssociations
include AccountAvatar
@@ -70,14 +74,13 @@ class Account < ApplicationRecord
enum protocol: [:ostatus, :activitypub]
validates :username, presence: true
+ validates_with UniqueUsernameValidator, if: -> { will_save_change_to_username? }
# Remote user validations
- validates :username, uniqueness: { scope: :domain, case_sensitive: true }, if: -> { !local? && will_save_change_to_username? }
validates :username, format: { with: /\A#{USERNAME_RE}\z/i }, if: -> { !local? && will_save_change_to_username? }
# Local user validations
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
- validates_with UniqueUsernameValidator, if: -> { local? && will_save_change_to_username? }
validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? }
validates :display_name, length: { maximum: 30 }, if: -> { local? && will_save_change_to_display_name? }
validates :note, note_length: { maximum: 500 }, if: -> { local? && will_save_change_to_note? }
@@ -93,6 +96,7 @@ class Account < ApplicationRecord
scope :without_silenced, -> { where(silenced_at: nil) }
scope :recent, -> { reorder(id: :desc) }
scope :bots, -> { where(actor_type: %w(Application Service)) }
+ scope :groups, -> { where(actor_type: 'Group') }
scope :alphabetic, -> { order(domain: :asc, username: :asc) }
scope :by_domain_accounts, -> { group(:domain).select(:domain, 'COUNT(*) AS accounts_count').order('accounts_count desc') }
scope :matches_username, ->(value) { where(arel_table[:username].matches("#{value}%")) }
@@ -102,6 +106,7 @@ class Account < ApplicationRecord
scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).left_outer_joins(:account_stat) }
scope :tagged_with, ->(tag) { joins(:accounts_tags).where(accounts_tags: { tag_id: tag }) }
scope :by_recent_status, -> { order(Arel.sql('(case when account_stats.last_status_at is null then 1 else 0 end) asc, account_stats.last_status_at desc, accounts.id desc')) }
+ scope :by_recent_sign_in, -> { order(Arel.sql('(case when users.current_sign_in_at is null then 1 else 0 end) asc, users.current_sign_in_at desc, accounts.id desc')) }
scope :popular, -> { order('account_stats.followers_count desc') }
scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches('%.' + domain))) }
scope :not_excluded_by_account, ->(account) { where.not(id: account.excluded_from_timeline_account_ids) }
@@ -153,10 +158,20 @@ class Account < ApplicationRecord
self.actor_type = ActiveModel::Type::Boolean.new.cast(val) ? 'Service' : 'Person'
end
+ def group?
+ actor_type == 'Group'
+ end
+
+ alias group group?
+
def acct
local? ? username : "#{username}@#{domain}"
end
+ def pretty_acct
+ local? ? username : "#{username}@#{Addressable::IDNA.to_unicode(domain)}"
+ end
+
def local_username_and_domain
"#{username}@#{Rails.configuration.x.local_domain}"
end
@@ -303,10 +318,6 @@ class Account < ApplicationRecord
self.fields = tmp
end
- def subscription(webhook_url)
- @subscription ||= OStatus2::Subscription.new(remote_url, secret: secret, webhook: webhook_url, hub: hub_url)
- end
-
def save_with_optional_media!
save!
rescue ActiveRecord::RecordInvalid
@@ -316,6 +327,14 @@ class Account < ApplicationRecord
save!
end
+ def hides_followers?
+ hide_collections? || user_hides_network?
+ end
+
+ def hides_following?
+ hide_collections? || user_hides_network?
+ end
+
def object_type
:person
end
@@ -397,7 +416,7 @@ class Account < ApplicationRecord
def inboxes
urls = reorder(nil).where(protocol: :activitypub).pluck(Arel.sql("distinct coalesce(nullif(accounts.shared_inbox_url, ''), accounts.inbox_url)"))
- DeliveryFailureTracker.filter(urls)
+ DeliveryFailureTracker.without_unavailable(urls)
end
def search_for(terms, limit = 10, offset = 0)
@@ -429,12 +448,14 @@ class Account < ApplicationRecord
SELECT target_account_id
FROM follows
WHERE account_id = ?
+ UNION ALL
+ SELECT ?
)
SELECT
accounts.*,
(count(f.id) + 1) * ts_rank_cd(#{textsearch}, #{query}, 32) AS rank
FROM accounts
- LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = ?) OR (accounts.id = f.target_account_id AND f.account_id = ?)
+ LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = ?)
WHERE accounts.id IN (SELECT * FROM first_degree)
AND #{query} @@ #{textsearch}
AND accounts.suspended_at IS NULL
@@ -467,6 +488,21 @@ class Account < ApplicationRecord
records
end
+ def from_text(text)
+ return [] if text.blank?
+
+ text.scan(MENTION_RE).map { |match| match.first.split('@', 2) }.uniq.map do |(username, domain)|
+ domain = begin
+ if TagManager.instance.local_domain?(domain)
+ nil
+ else
+ TagManager.instance.normalize_domain(domain)
+ end
+ end
+ EntityCache.instance.mention(username, domain)
+ end.compact
+ end
+
private
def generate_query_for_search(terms)
diff --git a/app/models/account_alias.rb b/app/models/account_alias.rb
index 66f8ce409..792e9e8d4 100644
--- a/app/models/account_alias.rb
+++ b/app/models/account_alias.rb
@@ -16,8 +16,8 @@ class AccountAlias < ApplicationRecord
belongs_to :account
validates :acct, presence: true, domain: { acct: true }
- validates :uri, presence: true
validates :uri, uniqueness: { scope: :account_id }
+ validate :validate_target_account
before_validation :set_uri
after_create :add_to_account
@@ -44,4 +44,12 @@ class AccountAlias < ApplicationRecord
def remove_from_account
account.update(also_known_as: account.also_known_as.reject { |x| x == uri })
end
+
+ def validate_target_account
+ if uri.blank?
+ errors.add(:acct, I18n.t('migrations.errors.not_found'))
+ elsif ActivityPub::TagManager.instance.uri_for(account) == uri
+ errors.add(:acct, I18n.t('migrations.errors.move_to_self'))
+ end
+ end
end
diff --git a/app/models/account_conversation.rb b/app/models/account_conversation.rb
index 0c03747e2..b43816588 100644
--- a/app/models/account_conversation.rb
+++ b/app/models/account_conversation.rb
@@ -108,7 +108,7 @@ class AccountConversation < ApplicationRecord
end
def subscribed_to_timeline?
- Redis.current.exists("subscribed:#{streaming_channel}")
+ Redis.current.exists?("subscribed:#{streaming_channel}")
end
def streaming_channel
diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb
index c3b1fe08d..7b6012e0f 100644
--- a/app/models/account_filter.rb
+++ b/app/models/account_filter.rb
@@ -1,6 +1,22 @@
# frozen_string_literal: true
class AccountFilter
+ KEYS = %i(
+ local
+ remote
+ by_domain
+ active
+ pending
+ silenced
+ suspended
+ username
+ display_name
+ email
+ ip
+ staff
+ order
+ ).freeze
+
attr_reader :params
def initialize(params)
@@ -9,7 +25,7 @@ class AccountFilter
end
def results
- scope = Account.recent.includes(:user)
+ scope = Account.includes(:user).reorder(nil)
params.each do |key, value|
scope.merge!(scope_for(key, value.to_s.strip)) if value.present?
@@ -23,6 +39,7 @@ class AccountFilter
def set_defaults!
params['local'] = '1' if params['remote'].blank?
params['active'] = '1' if params['suspended'].blank? && params['silenced'].blank? && params['pending'].blank?
+ params['order'] = 'recent' if params['order'].blank?
end
def scope_for(key, value)
@@ -36,9 +53,9 @@ class AccountFilter
when 'active'
Account.without_suspended
when 'pending'
- accounts_with_users.merge User.pending
+ accounts_with_users.merge(User.pending)
when 'disabled'
- accounts_with_users.merge User.disabled
+ accounts_with_users.merge(User.disabled)
when 'silenced'
Account.silenced
when 'suspended'
@@ -48,16 +65,31 @@ class AccountFilter
when 'display_name'
Account.matches_display_name(value)
when 'email'
- accounts_with_users.merge User.matches_email(value)
+ accounts_with_users.merge(User.matches_email(value))
when 'ip'
- valid_ip?(value) ? accounts_with_users.where('users.current_sign_in_ip <<= ?', value) : Account.none
+ valid_ip?(value) ? accounts_with_users.merge(User.matches_ip(value)) : Account.none
when 'staff'
- accounts_with_users.merge User.staff
+ accounts_with_users.merge(User.staff)
+ when 'order'
+ order_scope(value)
else
raise "Unknown filter: #{key}"
end
end
+ def order_scope(value)
+ case value
+ when 'active'
+ params['remote'] ? Account.joins(:account_stat).by_recent_status : Account.joins(:user).by_recent_sign_in
+ when 'recent'
+ Account.recent
+ when 'alphabetic'
+ Account.alphabetic
+ else
+ raise "Unknown order: #{value}"
+ end
+ end
+
def accounts_with_users
Account.joins(:user)
end
diff --git a/app/models/account_note.rb b/app/models/account_note.rb
new file mode 100644
index 000000000..bf61df923
--- /dev/null
+++ b/app/models/account_note.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: account_notes
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8)
+# target_account_id :bigint(8)
+# comment :text not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+class AccountNote < ApplicationRecord
+ include RelationshipCacheable
+
+ belongs_to :account
+ belongs_to :target_account, class_name: 'Account'
+
+ validates :account_id, uniqueness: { scope: :target_account_id }
+end
diff --git a/app/models/account_warning_preset.rb b/app/models/account_warning_preset.rb
index ba8ceabb3..c20f683cf 100644
--- a/app/models/account_warning_preset.rb
+++ b/app/models/account_warning_preset.rb
@@ -8,8 +8,11 @@
# text :text default(""), not null
# created_at :datetime not null
# updated_at :datetime not null
+# title :string default(""), not null
#
class AccountWarningPreset < ApplicationRecord
validates :text, presence: true
+
+ scope :alphabetic, -> { order(title: :asc, text: :asc) }
end
diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb
index e9da003a3..b30a82369 100644
--- a/app/models/admin/account_action.rb
+++ b/app/models/admin/account_action.rb
@@ -62,8 +62,6 @@ class Admin::AccountAction
def process_action!
case type
- when 'none'
- handle_resolve!
when 'disable'
handle_disable!
when 'silence'
@@ -105,16 +103,6 @@ class Admin::AccountAction
end
end
- def handle_resolve!
- if with_report? && report.account_id == -99 && target_account.trust_level == Account::TRUST_LEVELS[:untrusted]
- # This is an automated report and it is being dismissed, so it's
- # a false positive, in which case update the account's trust level
- # to prevent further spam checks
-
- target_account.update(trust_level: Account::TRUST_LEVELS[:trusted])
- end
- end
-
def handle_disable!
authorize(target_account.user, :disable?)
log_action(:disable, target_account.user)
diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb
new file mode 100644
index 000000000..0ba7e1609
--- /dev/null
+++ b/app/models/admin/action_log_filter.rb
@@ -0,0 +1,81 @@
+# frozen_string_literal: true
+
+class Admin::ActionLogFilter
+ KEYS = %i(
+ action_type
+ account_id
+ target_account_id
+ ).freeze
+
+ ACTION_TYPE_MAP = {
+ assigned_to_self_report: { target_type: 'Report', action: 'assigned_to_self' }.freeze,
+ change_email_user: { target_type: 'User', action: 'change_email' }.freeze,
+ confirm_user: { target_type: 'User', action: 'confirm' }.freeze,
+ create_account_warning: { target_type: 'AccountWarning', action: 'create' }.freeze,
+ create_announcement: { target_type: 'Announcement', action: 'create' }.freeze,
+ create_custom_emoji: { target_type: 'CustomEmoji', action: 'create' }.freeze,
+ create_domain_allow: { target_type: 'DomainAllow', action: 'create' }.freeze,
+ create_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze,
+ create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze,
+ demote_user: { target_type: 'User', action: 'demote' }.freeze,
+ destroy_announcement: { target_type: 'Announcement', action: 'destroy' }.freeze,
+ destroy_custom_emoji: { target_type: 'CustomEmoji', action: 'destroy' }.freeze,
+ destroy_domain_allow: { target_type: 'DomainAllow', action: 'destroy' }.freeze,
+ destroy_domain_block: { target_type: 'DomainBlock', action: 'destroy' }.freeze,
+ destroy_email_domain_block: { target_type: 'EmailDomainBlock', action: 'destroy' }.freeze,
+ destroy_status: { target_type: 'Status', action: 'destroy' }.freeze,
+ disable_2fa_user: { target_type: 'User', action: 'disable' }.freeze,
+ disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze,
+ disable_user: { target_type: 'User', action: 'disable' }.freeze,
+ enable_custom_emoji: { target_type: 'CustomEmoji', action: 'enable' }.freeze,
+ enable_user: { target_type: 'User', action: 'enable' }.freeze,
+ memorialize_account: { target_type: 'Account', action: 'memorialize' }.freeze,
+ promote_user: { target_type: 'User', action: 'promote' }.freeze,
+ remove_avatar_user: { target_type: 'User', action: 'remove_avatar' }.freeze,
+ reopen_report: { target_type: 'Report', action: 'reopen' }.freeze,
+ reset_password_user: { target_type: 'User', action: 'reset_password' }.freeze,
+ resolve_report: { target_type: 'Report', action: 'resolve' }.freeze,
+ silence_account: { target_type: 'Account', action: 'silence' }.freeze,
+ suspend_account: { target_type: 'Account', action: 'suspend' }.freeze,
+ unassigned_report: { target_type: 'Report', action: 'unassigned' }.freeze,
+ unsilence_account: { target_type: 'Account', action: 'unsilence' }.freeze,
+ unsuspend_account: { target_type: 'Account', action: 'unsuspend' }.freeze,
+ update_announcement: { target_type: 'Announcement', action: 'update' }.freeze,
+ update_custom_emoji: { target_type: 'CustomEmoji', action: 'update' }.freeze,
+ update_status: { target_type: 'Status', action: 'update' }.freeze,
+ }.freeze
+
+ attr_reader :params
+
+ def initialize(params)
+ @params = params
+ end
+
+ def results
+ scope = Admin::ActionLog.includes(:target)
+
+ params.each do |key, value|
+ next if key.to_s == 'page'
+
+ scope.merge!(scope_for(key.to_s, value.to_s.strip)) if value.present?
+ end
+
+ scope
+ end
+
+ private
+
+ def scope_for(key, value)
+ case key
+ when 'action_type'
+ Admin::ActionLog.where(ACTION_TYPE_MAP[value.to_sym])
+ when 'account_id'
+ Admin::ActionLog.where(account_id: value)
+ when 'target_account_id'
+ account = Account.find(value)
+ Admin::ActionLog.where(target: [account, account.user].compact)
+ else
+ raise "Unknown filter: #{key}"
+ end
+ end
+end
diff --git a/app/models/announcement.rb b/app/models/announcement.rb
new file mode 100644
index 000000000..c493604c2
--- /dev/null
+++ b/app/models/announcement.rb
@@ -0,0 +1,97 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: announcements
+#
+# id :bigint(8) not null, primary key
+# text :text default(""), not null
+# published :boolean default(FALSE), not null
+# all_day :boolean default(FALSE), not null
+# scheduled_at :datetime
+# starts_at :datetime
+# ends_at :datetime
+# created_at :datetime not null
+# updated_at :datetime not null
+# published_at :datetime
+# status_ids :bigint(8) is an Array
+#
+
+class Announcement < ApplicationRecord
+ scope :unpublished, -> { where(published: false) }
+ scope :published, -> { where(published: true) }
+ scope :without_muted, ->(account) { joins("LEFT OUTER JOIN announcement_mutes ON announcement_mutes.announcement_id = announcements.id AND announcement_mutes.account_id = #{account.id}").where('announcement_mutes.id IS NULL') }
+ scope :chronological, -> { order(Arel.sql('COALESCE(announcements.starts_at, announcements.scheduled_at, announcements.published_at, announcements.created_at) ASC')) }
+
+ has_many :announcement_mutes, dependent: :destroy
+ has_many :announcement_reactions, dependent: :destroy
+
+ validates :text, presence: true
+ validates :starts_at, presence: true, if: -> { ends_at.present? }
+ validates :ends_at, presence: true, if: -> { starts_at.present? }
+
+ before_validation :set_all_day
+ before_validation :set_published, on: :create
+
+ def publish!
+ update!(published: true, published_at: Time.now.utc, scheduled_at: nil)
+ end
+
+ def unpublish!
+ update!(published: false, scheduled_at: nil)
+ end
+
+ def time_range?
+ starts_at.present? && ends_at.present?
+ end
+
+ def mentions
+ @mentions ||= Account.from_text(text)
+ end
+
+ def statuses
+ @statuses ||= begin
+ if status_ids.nil?
+ []
+ else
+ Status.where(id: status_ids, visibility: [:public, :unlisted])
+ end
+ end
+ end
+
+ def tags
+ @tags ||= Tag.find_or_create_by_names(Extractor.extract_hashtags(text))
+ end
+
+ def emojis
+ @emojis ||= CustomEmoji.from_text(text)
+ end
+
+ def reactions(account = nil)
+ records = begin
+ scope = announcement_reactions.group(:announcement_id, :name, :custom_emoji_id).order(Arel.sql('MIN(created_at) ASC'))
+
+ if account.nil?
+ scope.select('name, custom_emoji_id, count(*) as count, false as me')
+ else
+ scope.select("name, custom_emoji_id, count(*) as count, exists(select 1 from announcement_reactions r where r.account_id = #{account.id} and r.announcement_id = announcement_reactions.announcement_id and r.name = announcement_reactions.name) as me")
+ end
+ end
+
+ ActiveRecord::Associations::Preloader.new.preload(records, :custom_emoji)
+ records
+ end
+
+ private
+
+ def set_all_day
+ self.all_day = false if starts_at.blank? || ends_at.blank?
+ end
+
+ def set_published
+ return unless scheduled_at.blank? || scheduled_at.past?
+
+ self.published = true
+ self.published_at = Time.now.utc
+ end
+end
diff --git a/app/models/announcement_filter.rb b/app/models/announcement_filter.rb
new file mode 100644
index 000000000..950852460
--- /dev/null
+++ b/app/models/announcement_filter.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+class AnnouncementFilter
+ KEYS = %i(
+ published
+ unpublished
+ ).freeze
+
+ attr_reader :params
+
+ def initialize(params)
+ @params = params
+ end
+
+ def results
+ scope = Announcement.unscoped
+
+ params.each do |key, value|
+ next if key.to_s == 'page'
+
+ scope.merge!(scope_for(key, value.to_s.strip)) if value.present?
+ end
+
+ scope.chronological
+ end
+
+ private
+
+ def scope_for(key, _value)
+ case key.to_s
+ when 'published'
+ Announcement.published
+ when 'unpublished'
+ Announcement.unpublished
+ else
+ raise "Unknown filter: #{key}"
+ end
+ end
+end
diff --git a/app/models/announcement_mute.rb b/app/models/announcement_mute.rb
new file mode 100644
index 000000000..46fda2f5d
--- /dev/null
+++ b/app/models/announcement_mute.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: announcement_mutes
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8)
+# announcement_id :bigint(8)
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class AnnouncementMute < ApplicationRecord
+ belongs_to :account
+ belongs_to :announcement, inverse_of: :announcement_mutes
+
+ validates :account_id, uniqueness: { scope: :announcement_id }
+end
diff --git a/app/models/announcement_reaction.rb b/app/models/announcement_reaction.rb
new file mode 100644
index 000000000..d22771034
--- /dev/null
+++ b/app/models/announcement_reaction.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: announcement_reactions
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8)
+# announcement_id :bigint(8)
+# name :string default(""), not null
+# custom_emoji_id :bigint(8)
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class AnnouncementReaction < ApplicationRecord
+ after_commit :queue_publish
+
+ belongs_to :account
+ belongs_to :announcement, inverse_of: :announcement_reactions
+ belongs_to :custom_emoji, optional: true
+
+ validates :name, presence: true
+ validates_with ReactionValidator
+
+ before_validation :set_custom_emoji
+
+ private
+
+ def set_custom_emoji
+ self.custom_emoji = CustomEmoji.local.find_by(disabled: false, shortcode: name) if name.present?
+ end
+
+ def queue_publish
+ PublishAnnouncementReactionWorker.perform_async(announcement_id, name) unless announcement.destroyed?
+ end
+end
diff --git a/app/models/backup.rb b/app/models/backup.rb
index c2651313b..d242fd62c 100644
--- a/app/models/backup.rb
+++ b/app/models/backup.rb
@@ -7,11 +7,11 @@
# user_id :bigint(8)
# dump_file_name :string
# dump_content_type :string
-# dump_file_size :integer
# dump_updated_at :datetime
# processed :boolean default(FALSE), not null
# created_at :datetime not null
# updated_at :datetime not null
+# dump_file_size :bigint(8)
#
class Backup < ApplicationRecord
diff --git a/app/models/bookmark.rb b/app/models/bookmark.rb
new file mode 100644
index 000000000..916261a17
--- /dev/null
+++ b/app/models/bookmark.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: bookmarks
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8) not null
+# status_id :bigint(8) not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class Bookmark < ApplicationRecord
+ include Paginable
+
+ update_index('statuses#status', :status) if Chewy.enabled?
+
+ belongs_to :account, inverse_of: :bookmarks
+ belongs_to :status, inverse_of: :bookmarks
+
+ validates :status_id, uniqueness: { scope: :account_id }
+
+ before_validation do
+ self.status = status.reblog if status&.reblog?
+ end
+end
diff --git a/app/models/concerns/account_associations.rb b/app/models/concerns/account_associations.rb
index c9cc5c610..cca3a17fa 100644
--- a/app/models/concerns/account_associations.rb
+++ b/app/models/concerns/account_associations.rb
@@ -9,10 +9,12 @@ module AccountAssociations
# Identity proofs
has_many :identity_proofs, class_name: 'AccountIdentityProof', dependent: :destroy, inverse_of: :account
+ has_many :devices, dependent: :destroy, inverse_of: :account
# Timelines
has_many :statuses, inverse_of: :account, dependent: :destroy
has_many :favourites, inverse_of: :account, dependent: :destroy
+ has_many :bookmarks, inverse_of: :account, dependent: :destroy
has_many :mentions, inverse_of: :account, dependent: :destroy
has_many :notifications, inverse_of: :account, dependent: :destroy
has_many :conversations, class_name: 'AccountConversation', dependent: :destroy, inverse_of: :account
diff --git a/app/models/concerns/account_finder_concern.rb b/app/models/concerns/account_finder_concern.rb
index a54c2174d..04b2c981b 100644
--- a/app/models/concerns/account_finder_concern.rb
+++ b/app/models/concerns/account_finder_concern.rb
@@ -48,7 +48,7 @@ module AccountFinderConcern
end
def with_usernames
- Account.where.not(username: '')
+ Account.where.not(Account.arel_table[:username].lower.eq '')
end
def matching_username
@@ -56,11 +56,7 @@ module AccountFinderConcern
end
def matching_domain
- if domain.nil?
- Account.where(domain: nil)
- else
- Account.where(Account.arel_table[:domain].lower.eq domain.to_s.downcase)
- end
+ Account.where(Account.arel_table[:domain].lower.eq(domain.nil? ? nil : domain.to_s.downcase))
end
end
end
diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb
index ad2909d91..be7211f2c 100644
--- a/app/models/concerns/account_interactions.rb
+++ b/app/models/concerns/account_interactions.rb
@@ -44,6 +44,14 @@ module AccountInteractions
follow_mapping(AccountPin.where(account_id: account_id, target_account_id: target_account_ids), :target_account_id)
end
+ def account_note_map(target_account_ids, account_id)
+ AccountNote.where(target_account_id: target_account_ids, account_id: account_id).each_with_object({}) do |note, mapping|
+ mapping[note.target_account_id] = {
+ comment: note.comment,
+ }
+ end
+ end
+
def domain_blocking_map(target_account_ids, account_id)
accounts_map = Account.where(id: target_account_ids).select('id, domain').each_with_object({}) { |a, h| h[a.id] = a.domain }
blocked_domains = domain_blocking_map_by_domain(accounts_map.values.compact, account_id)
@@ -84,12 +92,13 @@ module AccountInteractions
has_many :muted_by, -> { order('mutes.id desc') }, through: :muted_by_relationships, source: :account
has_many :conversation_mutes, dependent: :destroy
has_many :domain_blocks, class_name: 'AccountDomainBlock', dependent: :destroy
+ has_many :announcement_mutes, dependent: :destroy
end
- def follow!(other_account, reblogs: nil, uri: nil)
+ def follow!(other_account, reblogs: nil, uri: nil, rate_limit: false)
reblogs = true if reblogs.nil?
- rel = active_relationships.create_with(show_reblogs: reblogs, uri: uri)
+ rel = active_relationships.create_with(show_reblogs: reblogs, uri: uri, rate_limit: rate_limit)
.find_or_create_by!(target_account: other_account)
rel.update!(show_reblogs: reblogs)
@@ -98,6 +107,18 @@ module AccountInteractions
rel
end
+ def request_follow!(other_account, reblogs: nil, uri: nil, rate_limit: false)
+ reblogs = true if reblogs.nil?
+
+ rel = follow_requests.create_with(show_reblogs: reblogs, uri: uri, rate_limit: rate_limit)
+ .find_or_create_by!(target_account: other_account)
+
+ rel.update!(show_reblogs: reblogs)
+ remove_potential_friendship(other_account)
+
+ rel
+ end
+
def block!(other_account, uri: nil)
remove_potential_friendship(other_account)
block_relationships.create_with(uri: uri)
@@ -186,6 +207,10 @@ module AccountInteractions
status.proper.favourites.where(account: self).exists?
end
+ def bookmarked?(status)
+ status.proper.bookmarks.where(account: self).exists?
+ end
+
def reblogged?(status)
status.proper.reblogs.where(account: self).exists?
end
diff --git a/app/models/concerns/attachmentable.rb b/app/models/concerns/attachmentable.rb
index 3bbc6453c..c5febb828 100644
--- a/app/models/concerns/attachmentable.rb
+++ b/app/models/concerns/attachmentable.rb
@@ -8,7 +8,19 @@ module Attachmentable
MAX_MATRIX_LIMIT = 16_777_216 # 4096x4096px or approx. 16MB
GIF_MATRIX_LIMIT = 921_600 # 1280x720px
+ # For some file extensions, there exist different content
+ # type variants, and browsers often send the wrong one,
+ # for example, sending an audio .ogg file as video/ogg,
+ # likewise, MimeMagic also misreports them as such. For
+ # those files, it is necessary to use the output of the
+ # `file` utility instead
+ INCORRECT_CONTENT_TYPES = %w(
+ video/ogg
+ video/webm
+ ).freeze
+
included do
+ before_post_process :obfuscate_file_name
before_post_process :set_file_extensions
before_post_process :check_image_dimensions
before_post_process :set_file_content_type
@@ -20,7 +32,7 @@ module Attachmentable
self.class.attachment_definitions.each_key do |attachment_name|
attachment = send(attachment_name)
- next if attachment.blank? || attachment.queued_for_write[:original].blank?
+ next if attachment.blank? || attachment.queued_for_write[:original].blank? || !INCORRECT_CONTENT_TYPES.include?(attachment.instance_read(:content_type))
attachment.instance_write :content_type, calculated_content_type(attachment)
end
@@ -62,10 +74,18 @@ module Attachmentable
end
def calculated_content_type(attachment)
- content_type = Paperclip.run('file', '-b --mime :file', file: attachment.queued_for_write[:original].path).split(/[:;\s]+/).first.chomp
- content_type = 'video/mp4' if content_type == 'video/x-m4v'
- content_type
+ Paperclip.run('file', '-b --mime :file', file: attachment.queued_for_write[:original].path).split(/[:;\s]+/).first.chomp
rescue Terrapin::CommandLineError
''
end
+
+ def obfuscate_file_name
+ self.class.attachment_definitions.each_key do |attachment_name|
+ attachment = send(attachment_name)
+
+ next if attachment.blank? || attachment.queued_for_write[:original].blank? || attachment.options[:preserve_files]
+
+ attachment.instance_write :file_name, SecureRandom.hex(8) + File.extname(attachment.instance_read(:file_name))
+ end
+ end
end
diff --git a/app/models/concerns/domain_normalizable.rb b/app/models/concerns/domain_normalizable.rb
index c00b3142f..fb84058fc 100644
--- a/app/models/concerns/domain_normalizable.rb
+++ b/app/models/concerns/domain_normalizable.rb
@@ -4,7 +4,7 @@ module DomainNormalizable
extend ActiveSupport::Concern
included do
- before_save :normalize_domain
+ before_validation :normalize_domain
end
private
diff --git a/app/models/concerns/ldap_authenticable.rb b/app/models/concerns/ldap_authenticable.rb
index 117993947..e3f94bb6c 100644
--- a/app/models/concerns/ldap_authenticable.rb
+++ b/app/models/concerns/ldap_authenticable.rb
@@ -6,7 +6,7 @@ module LdapAuthenticable
class_methods do
def authenticate_with_ldap(params = {})
ldap = Net::LDAP.new(ldap_options)
- filter = format(Devise.ldap_search_filter, uid: Devise.ldap_uid, email: params[:email])
+ filter = format(Devise.ldap_search_filter, uid: Devise.ldap_uid, mail: Devise.ldap_mail, email: params[:email])
if (user_info = ldap.bind_as(base: Devise.ldap_base, filter: filter, password: params[:password]))
ldap_get_user(user_info.first)
@@ -14,10 +14,18 @@ module LdapAuthenticable
end
def ldap_get_user(attributes = {})
- resource = joins(:account).find_by(accounts: { username: attributes[Devise.ldap_uid.to_sym].first })
+ safe_username = attributes[Devise.ldap_uid.to_sym].first
+ if Devise.ldap_uid_conversion_enabled
+ keys = Regexp.union(Devise.ldap_uid_conversion_search.chars)
+ replacement = Devise.ldap_uid_conversion_replace
+
+ safe_username = safe_username.gsub(keys, replacement)
+ end
+
+ resource = joins(:account).find_by(accounts: { username: safe_username })
if resource.blank?
- resource = new(email: attributes[:mail].first, agreement: true, account_attributes: { username: attributes[Devise.ldap_uid.to_sym].first }, admin: false, external: true, confirmed_at: Time.now.utc)
+ resource = new(email: attributes[Devise.ldap_mail.to_sym].first, agreement: true, account_attributes: { username: safe_username }, admin: false, external: true, confirmed_at: Time.now.utc)
resource.save!
end
diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/omniauthable.rb
index 960784222..736da6c1d 100644
--- a/app/models/concerns/omniauthable.rb
+++ b/app/models/concerns/omniauthable.rb
@@ -82,7 +82,7 @@ module Omniauthable
username = starting_username
i = 0
- while Account.exists?(username: username)
+ while Account.exists?(username: username, domain: nil)
i += 1
username = "#{starting_username}_#{i}"
end
diff --git a/app/models/concerns/rate_limitable.rb b/app/models/concerns/rate_limitable.rb
new file mode 100644
index 000000000..ad1b5e44e
--- /dev/null
+++ b/app/models/concerns/rate_limitable.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module RateLimitable
+ extend ActiveSupport::Concern
+
+ def rate_limit=(value)
+ @rate_limit = value
+ end
+
+ def rate_limit?
+ @rate_limit
+ end
+
+ def rate_limiter(by, options = {})
+ return @rate_limiter if defined?(@rate_limiter)
+
+ @rate_limiter = RateLimiter.new(by, options)
+ end
+
+ class_methods do
+ def rate_limit(options = {})
+ after_create do
+ by = public_send(options[:by])
+
+ if rate_limit? && by&.local?
+ rate_limiter(by, options).record!
+ @rate_limit_recorded = true
+ end
+ end
+
+ after_rollback do
+ rate_limiter(public_send(options[:by]), options).rollback! if @rate_limit_recorded
+ end
+ end
+ end
+end
diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb
index b7a476c87..c6d0c7f1f 100644
--- a/app/models/concerns/remotable.rb
+++ b/app/models/concerns/remotable.rb
@@ -4,12 +4,12 @@ module Remotable
extend ActiveSupport::Concern
class_methods do
- def remotable_attachment(attachment_name, limit, suppress_errors: true)
- attribute_name = "#{attachment_name}_remote_url".to_sym
- method_name = "#{attribute_name}=".to_sym
- alt_method_name = "reset_#{attachment_name}!".to_sym
+ def remotable_attachment(attachment_name, limit, suppress_errors: true, download_on_assign: true, attribute_name: nil)
+ attribute_name ||= "#{attachment_name}_remote_url".to_sym
+
+ define_method("download_#{attachment_name}!") do |url = nil|
+ url ||= self[attribute_name]
- define_method method_name do |url|
return if url.blank?
begin
@@ -18,68 +18,33 @@ module Remotable
return
end
- return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.blank? || (self[attribute_name] == url && send("#{attachment_name}_file_name").present?)
+ return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.blank?
begin
Request.new(:get, url).perform do |response|
raise Mastodon::UnexpectedResponseError, response unless (200...300).cover?(response.code)
- content_type = parse_content_type(response.headers.get('content-type').last)
- extname = detect_extname_from_content_type(content_type)
-
- if extname.nil?
- disposition = response.headers.get('content-disposition').last
- matches = disposition&.match(/filename="([^"]*)"/)
- filename = matches.nil? ? parsed_url.path.split('/').last : matches[1]
- extname = filename.nil? ? '' : File.extname(filename)
- end
-
- basename = SecureRandom.hex(8)
-
- send("#{attachment_name}=", StringIO.new(response.body_with_limit(limit)))
- send("#{attachment_name}_file_name=", basename + extname)
-
- self[attribute_name] = url if has_attribute?(attribute_name)
+ public_send("#{attachment_name}=", ResponseWithLimit.new(response, limit))
end
rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError => e
Rails.logger.debug "Error fetching remote #{attachment_name}: #{e}"
raise e unless suppress_errors
rescue Paperclip::Errors::NotIdentifiedByImageMagickError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Paperclip::Error, Mastodon::DimensionsValidationError => e
Rails.logger.debug "Error fetching remote #{attachment_name}: #{e}"
- nil
end
- end
-
- define_method alt_method_name do
- url = self[attribute_name]
- return if url.blank?
-
- self[attribute_name] = ''
- send(method_name, url)
+ nil
end
- end
- end
-
- private
-
- def detect_extname_from_content_type(content_type)
- return if content_type.nil?
-
- type = MIME::Types[content_type].first
-
- return if type.nil?
- extname = type.extensions.first
+ define_method("#{attribute_name}=") do |url|
+ return if self[attribute_name] == url && public_send("#{attachment_name}_file_name").present?
- return if extname.nil?
+ self[attribute_name] = url if has_attribute?(attribute_name)
- ".#{extname}"
- end
-
- def parse_content_type(content_type)
- return if content_type.nil?
+ public_send("download_#{attachment_name}!", url) if download_on_assign
+ end
- content_type.split(/\s*;\s*/).first
+ alias_method("reset_#{attachment_name}!", "download_#{attachment_name}!")
+ end
end
end
diff --git a/app/models/concerns/status_threading_concern.rb b/app/models/concerns/status_threading_concern.rb
index 15eb695cd..a0ead1995 100644
--- a/app/models/concerns/status_threading_concern.rb
+++ b/app/models/concerns/status_threading_concern.rb
@@ -81,12 +81,12 @@ module StatusThreadingConcern
end
def find_statuses_from_tree_path(ids, account, promote: false)
- statuses = statuses_with_accounts(ids).to_a
+ statuses = Status.with_accounts(ids).to_a
account_ids = statuses.map(&:account_id).uniq
domains = statuses.map(&:account_domain).compact.uniq
relations = relations_map_for_account(account, account_ids, domains)
- statuses.reject! { |status| filter_from_context?(status, account, relations) }
+ statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? }
# Order ancestors/descendants by tree path
statuses.sort_by! { |status| ids.index(status.id) }
@@ -125,12 +125,4 @@ module StatusThreadingConcern
domain_blocking_by_domain: Account.domain_blocking_map_by_domain(domains, account.id),
}
end
-
- def statuses_with_accounts(ids)
- Status.where(id: ids).includes(:account)
- end
-
- def filter_from_context?(status, account, relations)
- StatusFilter.new(status, account, relations).filtered?
- end
end
diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb
index 0dacaf654..7cb03b819 100644
--- a/app/models/custom_emoji.rb
+++ b/app/models/custom_emoji.rb
@@ -3,20 +3,21 @@
#
# Table name: custom_emojis
#
-# id :bigint(8) not null, primary key
-# shortcode :string default(""), not null
-# domain :string
-# image_file_name :string
-# image_content_type :string
-# image_file_size :integer
-# image_updated_at :datetime
-# created_at :datetime not null
-# updated_at :datetime not null
-# disabled :boolean default(FALSE), not null
-# uri :string
-# image_remote_url :string
-# visible_in_picker :boolean default(TRUE), not null
-# category_id :bigint(8)
+# id :bigint(8) not null, primary key
+# shortcode :string default(""), not null
+# domain :string
+# image_file_name :string
+# image_content_type :string
+# image_file_size :integer
+# image_updated_at :datetime
+# created_at :datetime not null
+# updated_at :datetime not null
+# disabled :boolean default(FALSE), not null
+# uri :string
+# image_remote_url :string
+# visible_in_picker :boolean default(TRUE), not null
+# category_id :bigint(8)
+# image_storage_schema_version :integer
#
class CustomEmoji < ApplicationRecord
@@ -67,7 +68,7 @@ class CustomEmoji < ApplicationRecord
end
class << self
- def from_text(text, domain)
+ def from_text(text, domain = nil)
return [] if text.blank?
shortcodes = text.scan(SCAN_RE).map(&:first).uniq
diff --git a/app/models/custom_emoji_filter.rb b/app/models/custom_emoji_filter.rb
index 15b8da1d1..414e1fcdd 100644
--- a/app/models/custom_emoji_filter.rb
+++ b/app/models/custom_emoji_filter.rb
@@ -1,6 +1,13 @@
# frozen_string_literal: true
class CustomEmojiFilter
+ KEYS = %i(
+ local
+ remote
+ by_domain
+ shortcode
+ ).freeze
+
attr_reader :params
def initialize(params)
diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb
index 382562fb8..8df8a4fbf 100644
--- a/app/models/custom_filter.rb
+++ b/app/models/custom_filter.rb
@@ -20,6 +20,7 @@ class CustomFilter < ApplicationRecord
notifications
public
thread
+ account
).freeze
include Expireable
diff --git a/app/models/device.rb b/app/models/device.rb
new file mode 100644
index 000000000..97d0d2774
--- /dev/null
+++ b/app/models/device.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: devices
+#
+# id :bigint(8) not null, primary key
+# access_token_id :bigint(8)
+# account_id :bigint(8)
+# device_id :string default(""), not null
+# name :string default(""), not null
+# fingerprint_key :text default(""), not null
+# identity_key :text default(""), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class Device < ApplicationRecord
+ belongs_to :access_token, class_name: 'Doorkeeper::AccessToken'
+ belongs_to :account
+
+ has_many :one_time_keys, dependent: :destroy, inverse_of: :device
+ has_many :encrypted_messages, dependent: :destroy, inverse_of: :device
+
+ validates :name, :fingerprint_key, :identity_key, presence: true
+ validates :fingerprint_key, :identity_key, ed25519_key: true
+
+ before_save :invalidate_associations, if: -> { device_id_changed? || fingerprint_key_changed? || identity_key_changed? }
+
+ private
+
+ def invalidate_associations
+ one_time_keys.destroy_all
+ encrypted_messages.destroy_all
+ end
+end
diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb
index 4e865b850..2b18e01fa 100644
--- a/app/models/domain_block.rb
+++ b/app/models/domain_block.rb
@@ -50,11 +50,13 @@ class DomainBlock < ApplicationRecord
def rule_for(domain)
return if domain.blank?
- uri = Addressable::URI.new.tap { |u| u.host = domain.gsub(/[\/]/, '') }
+ uri = Addressable::URI.new.tap { |u| u.host = domain.strip.gsub(/[\/]/, '') }
segments = uri.normalized_host.split('.')
variants = segments.map.with_index { |_, i| segments[i..-1].join('.') }
- where(domain: variants[0..-2]).order(Arel.sql('char_length(domain) desc')).first
+ where(domain: variants).order(Arel.sql('char_length(domain) desc')).first
+ rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError
+ nil
end
end
diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb
index bc70dea25..f50fa46ba 100644
--- a/app/models/email_domain_block.rb
+++ b/app/models/email_domain_block.rb
@@ -7,13 +7,27 @@
# domain :string default(""), not null
# created_at :datetime not null
# updated_at :datetime not null
+# parent_id :bigint(8)
#
class EmailDomainBlock < ApplicationRecord
include DomainNormalizable
+ belongs_to :parent, class_name: 'EmailDomainBlock', optional: true
+ has_many :children, class_name: 'EmailDomainBlock', foreign_key: :parent_id, inverse_of: :parent, dependent: :destroy
+
validates :domain, presence: true, uniqueness: true, domain: true
+ def with_dns_records=(val)
+ @with_dns_records = ActiveModel::Type::Boolean.new.cast(val)
+ end
+
+ def with_dns_records?
+ @with_dns_records
+ end
+
+ alias with_dns_records with_dns_records?
+
def self.block?(email)
_, domain = email.split('@', 2)
diff --git a/app/models/encrypted_message.rb b/app/models/encrypted_message.rb
new file mode 100644
index 000000000..aa4182b4e
--- /dev/null
+++ b/app/models/encrypted_message.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: encrypted_messages
+#
+# id :bigint(8) not null, primary key
+# device_id :bigint(8)
+# from_account_id :bigint(8)
+# from_device_id :string default(""), not null
+# type :integer default(0), not null
+# body :text default(""), not null
+# digest :text default(""), not null
+# message_franking :text default(""), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class EncryptedMessage < ApplicationRecord
+ self.inheritance_column = nil
+
+ include Paginable
+
+ scope :up_to, ->(id) { where(arel_table[:id].lteq(id)) }
+
+ belongs_to :device
+ belongs_to :from_account, class_name: 'Account'
+
+ around_create Mastodon::Snowflake::Callbacks
+
+ after_commit :push_to_streaming_api
+
+ private
+
+ def push_to_streaming_api
+ return if destroyed? || !subscribed_to_timeline?
+
+ PushEncryptedMessageWorker.perform_async(id)
+ end
+
+ def subscribed_to_timeline?
+ Redis.current.exists?("subscribed:#{streaming_channel}")
+ end
+
+ def streaming_channel
+ "timeline:#{device.account_id}:#{device.device_id}"
+ end
+end
diff --git a/app/models/follow.rb b/app/models/follow.rb
index 87fa11425..f3e48a2ed 100644
--- a/app/models/follow.rb
+++ b/app/models/follow.rb
@@ -15,6 +15,9 @@
class Follow < ApplicationRecord
include Paginable
include RelationshipCacheable
+ include RateLimitable
+
+ rate_limit by: :account, family: :follows
belongs_to :account
belongs_to :target_account, class_name: 'Account'
diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb
index 96ac7eaa5..3325e264c 100644
--- a/app/models/follow_request.rb
+++ b/app/models/follow_request.rb
@@ -15,6 +15,9 @@
class FollowRequest < ApplicationRecord
include Paginable
include RelationshipCacheable
+ include RateLimitable
+
+ rate_limit by: :account, family: :follows
belongs_to :account
belongs_to :target_account, class_name: 'Account'
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 70e9c21f1..390836f28 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -16,6 +16,7 @@ class Form::AdminSettings
open_deletion
timeline_preview
show_staff_badge
+ enable_bootstrap_timeline_accounts
bootstrap_timeline_accounts
theme
min_invite_role
@@ -40,6 +41,7 @@ class Form::AdminSettings
open_deletion
timeline_preview
show_staff_badge
+ enable_bootstrap_timeline_accounts
activity_api_enabled
peers_api_enabled
show_known_fediverse_at_about_page
diff --git a/app/models/form/custom_emoji_batch.rb b/app/models/form/custom_emoji_batch.rb
index 076e8c9e3..6b7ea5355 100644
--- a/app/models/form/custom_emoji_batch.rb
+++ b/app/models/form/custom_emoji_batch.rb
@@ -40,7 +40,7 @@ class Form::CustomEmojiBatch
if category_id.present?
CustomEmojiCategory.find(category_id)
elsif category_name.present?
- CustomEmojiCategory.create!(name: category_name)
+ CustomEmojiCategory.find_or_create_by!(name: category_name)
end
end
diff --git a/app/models/home_feed.rb b/app/models/home_feed.rb
index 1fd506138..0fe9dae46 100644
--- a/app/models/home_feed.rb
+++ b/app/models/home_feed.rb
@@ -8,6 +8,6 @@ class HomeFeed < Feed
end
def regenerating?
- redis.exists("account:#{@id}:regeneration")
+ redis.exists?("account:#{@id}:regeneration")
end
end
diff --git a/app/models/import.rb b/app/models/import.rb
index a7a0d8065..c78a04d07 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -17,7 +17,7 @@
#
class Import < ApplicationRecord
- FILE_TYPES = %w(text/plain text/csv).freeze
+ FILE_TYPES = %w(text/plain text/csv application/csv).freeze
MODES = %i(merge overwrite).freeze
self.inheritance_column = false
diff --git a/app/models/instance_filter.rb b/app/models/instance_filter.rb
index 8bfab826d..9c467bc27 100644
--- a/app/models/instance_filter.rb
+++ b/app/models/instance_filter.rb
@@ -1,6 +1,11 @@
# frozen_string_literal: true
class InstanceFilter
+ KEYS = %i(
+ limited
+ by_domain
+ ).freeze
+
attr_reader :params
def initialize(params)
diff --git a/app/models/invite_filter.rb b/app/models/invite_filter.rb
index 7d89bad4a..9685d4abb 100644
--- a/app/models/invite_filter.rb
+++ b/app/models/invite_filter.rb
@@ -1,6 +1,11 @@
# frozen_string_literal: true
class InviteFilter
+ KEYS = %i(
+ available
+ expired
+ ).freeze
+
attr_reader :params
def initialize(params)
diff --git a/app/models/list_account.rb b/app/models/list_account.rb
index 87b498224..785923c4c 100644
--- a/app/models/list_account.rb
+++ b/app/models/list_account.rb
@@ -6,13 +6,13 @@
# id :bigint(8) not null, primary key
# list_id :bigint(8) not null
# account_id :bigint(8) not null
-# follow_id :bigint(8) not null
+# follow_id :bigint(8)
#
class ListAccount < ApplicationRecord
belongs_to :list
belongs_to :account
- belongs_to :follow
+ belongs_to :follow, optional: true
validates :account_id, uniqueness: { scope: :list_id }
@@ -21,6 +21,6 @@ class ListAccount < ApplicationRecord
private
def set_follow
- self.follow = Follow.find_by(account_id: list.account_id, target_account_id: account.id)
+ self.follow = Follow.find_by!(account_id: list.account_id, target_account_id: account.id) unless list.account_id == account.id
end
end
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb
index 9c6c04556..519711401 100644
--- a/app/models/media_attachment.rb
+++ b/app/models/media_attachment.rb
@@ -3,33 +3,50 @@
#
# Table name: media_attachments
#
-# id :bigint(8) not null, primary key
-# status_id :bigint(8)
-# file_file_name :string
-# file_content_type :string
-# file_file_size :integer
-# file_updated_at :datetime
-# remote_url :string default(""), not null
-# created_at :datetime not null
-# updated_at :datetime not null
-# shortcode :string
-# type :integer default("image"), not null
-# file_meta :json
-# account_id :bigint(8)
-# description :text
-# scheduled_status_id :bigint(8)
-# blurhash :string
+# id :bigint(8) not null, primary key
+# status_id :bigint(8)
+# file_file_name :string
+# file_content_type :string
+# file_file_size :integer
+# file_updated_at :datetime
+# remote_url :string default(""), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# shortcode :string
+# type :integer default("image"), not null
+# file_meta :json
+# account_id :bigint(8)
+# description :text
+# scheduled_status_id :bigint(8)
+# blurhash :string
+# processing :integer
+# file_storage_schema_version :integer
+# thumbnail_file_name :string
+# thumbnail_content_type :string
+# thumbnail_file_size :integer
+# thumbnail_updated_at :datetime
+# thumbnail_remote_url :string
#
class MediaAttachment < ApplicationRecord
self.inheritance_column = nil
enum type: [:image, :gifv, :video, :unknown, :audio]
+ enum processing: [:queued, :in_progress, :complete, :failed], _prefix: true
+
+ MAX_DESCRIPTION_LENGTH = 1_500
IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif).freeze
VIDEO_FILE_EXTENSIONS = %w(.webm .mp4 .m4v .mov).freeze
AUDIO_FILE_EXTENSIONS = %w(.ogg .oga .mp3 .wav .flac .opus .aac .m4a .3gp .wma).freeze
+ META_KEYS = %i(
+ focus
+ colors
+ original
+ small
+ ).freeze
+
IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif).freeze
VIDEO_MIME_TYPES = %w(video/webm video/mp4 video/quicktime video/ogg).freeze
VIDEO_CONVERTIBLE_MIME_TYPES = %w(video/webm video/quicktime).freeze
@@ -44,13 +61,50 @@ class MediaAttachment < ApplicationRecord
original: {
pixels: 1_638_400, # 1280x1280px
file_geometry_parser: FastGeometryParser,
- },
+ }.freeze,
small: {
pixels: 160_000, # 400x400px
file_geometry_parser: FastGeometryParser,
blurhash: BLURHASH_OPTIONS,
- },
+ }.freeze,
+ }.freeze
+
+ VIDEO_FORMAT = {
+ format: 'mp4',
+ content_type: 'video/mp4',
+ convert_options: {
+ output: {
+ 'loglevel' => 'fatal',
+ 'movflags' => 'faststart',
+ 'pix_fmt' => 'yuv420p',
+ 'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'',
+ 'vsync' => 'cfr',
+ 'c:v' => 'h264',
+ 'maxrate' => '1300K',
+ 'bufsize' => '1300K',
+ 'frames:v' => 60 * 60 * 3,
+ 'crf' => 18,
+ 'map_metadata' => '-1',
+ }.freeze,
+ }.freeze,
+ }.freeze
+
+ VIDEO_PASSTHROUGH_OPTIONS = {
+ video_codecs: ['h264'].freeze,
+ audio_codecs: ['aac', nil].freeze,
+ colorspaces: ['yuv420p'].freeze,
+ options: {
+ format: 'mp4',
+ convert_options: {
+ output: {
+ 'loglevel' => 'fatal',
+ 'map_metadata' => '-1',
+ 'c:v' => 'copy',
+ 'c:a' => 'copy',
+ }.freeze,
+ }.freeze,
+ }.freeze,
}.freeze
VIDEO_STYLES = {
@@ -59,25 +113,15 @@ class MediaAttachment < ApplicationRecord
output: {
'loglevel' => 'fatal',
vf: 'scale=\'min(400\, iw):min(400\, ih)\':force_original_aspect_ratio=decrease',
- },
- },
+ }.freeze,
+ }.freeze,
format: 'png',
time: 0,
file_geometry_parser: FastGeometryParser,
blurhash: BLURHASH_OPTIONS,
- },
+ }.freeze,
- original: {
- keep_same_format: true,
- convert_options: {
- output: {
- 'loglevel' => 'fatal',
- 'map_metadata' => '-1',
- 'c:v' => 'copy',
- 'c:a' => 'copy',
- },
- },
- },
+ original: VIDEO_FORMAT.merge(passthrough_options: VIDEO_PASSTHROUGH_OPTIONS).freeze,
}.freeze
AUDIO_STYLES = {
@@ -88,39 +132,30 @@ class MediaAttachment < ApplicationRecord
output: {
'loglevel' => 'fatal',
'q:a' => 2,
- },
- },
- },
+ }.freeze,
+ }.freeze,
+ }.freeze,
}.freeze
- VIDEO_FORMAT = {
- format: 'mp4',
- content_type: 'video/mp4',
- convert_options: {
- output: {
- 'loglevel' => 'fatal',
- 'movflags' => 'faststart',
- 'pix_fmt' => 'yuv420p',
- 'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'',
- 'vsync' => 'cfr',
- 'c:v' => 'h264',
- 'maxrate' => '1300K',
- 'bufsize' => '1300K',
- 'frames:v' => 60 * 60 * 3,
- 'crf' => 18,
- 'map_metadata' => '-1',
- },
- },
+ VIDEO_CONVERTED_STYLES = {
+ small: VIDEO_STYLES[:small].freeze,
+ original: VIDEO_FORMAT.freeze,
}.freeze
- VIDEO_CONVERTED_STYLES = {
- small: VIDEO_STYLES[:small],
- original: VIDEO_FORMAT,
+ THUMBNAIL_STYLES = {
+ original: IMAGE_STYLES[:small].freeze,
+ }.freeze
+
+ GLOBAL_CONVERT_OPTIONS = {
+ all: '-quality 90 -strip +set modify-date +set create-date',
}.freeze
IMAGE_LIMIT = 10.megabytes
VIDEO_LIMIT = 40.megabytes
+ MAX_VIDEO_MATRIX_LIMIT = 2_304_000 # 1920x1200px
+ MAX_VIDEO_FRAME_RATE = 60
+
belongs_to :account, inverse_of: :media_attachments, optional: true
belongs_to :status, inverse_of: :media_attachments, optional: true
belongs_to :scheduled_status, inverse_of: :media_attachments, optional: true
@@ -128,17 +163,28 @@ class MediaAttachment < ApplicationRecord
has_attached_file :file,
styles: ->(f) { file_styles f },
processors: ->(f) { file_processors f },
- convert_options: { all: '-quality 90 -strip +set modify-date +set create-date' }
+ convert_options: GLOBAL_CONVERT_OPTIONS
validates_attachment_content_type :file, content_type: IMAGE_MIME_TYPES + VIDEO_MIME_TYPES + AUDIO_MIME_TYPES
validates_attachment_size :file, less_than: IMAGE_LIMIT, unless: :larger_media_format?
validates_attachment_size :file, less_than: VIDEO_LIMIT, if: :larger_media_format?
- remotable_attachment :file, VIDEO_LIMIT, suppress_errors: false
+ remotable_attachment :file, VIDEO_LIMIT, suppress_errors: false, download_on_assign: false, attribute_name: :remote_url
+
+ has_attached_file :thumbnail,
+ styles: THUMBNAIL_STYLES,
+ processors: [:lazy_thumbnail, :blurhash_transcoder, :color_extractor],
+ convert_options: GLOBAL_CONVERT_OPTIONS
+
+ validates_attachment_content_type :thumbnail, content_type: IMAGE_MIME_TYPES
+ validates_attachment_size :thumbnail, less_than: IMAGE_LIMIT
+ remotable_attachment :thumbnail, IMAGE_LIMIT, suppress_errors: true, download_on_assign: false
include Attachmentable
validates :account, presence: true
- validates :description, length: { maximum: 1_500 }, if: :local?
+ validates :description, length: { maximum: MAX_DESCRIPTION_LENGTH }, if: :local?
+ validates :file, presence: true, if: :local?
+ validates :thumbnail, absence: true, if: -> { local? && !audio_or_video? }
scope :attached, -> { where.not(status_id: nil).or(where.not(scheduled_status_id: nil)) }
scope :unattached, -> { where(status_id: nil, scheduled_status_id: nil) }
@@ -152,6 +198,10 @@ class MediaAttachment < ApplicationRecord
remote_url.blank?
end
+ def not_processed?
+ processing.present? && !processing_complete?
+ end
+
def needs_redownload?
file.blank? && remote_url.present?
end
@@ -173,24 +223,42 @@ class MediaAttachment < ApplicationRecord
x, y = (point.is_a?(Enumerable) ? point : point.split(',')).map(&:to_f)
- meta = file.instance_read(:meta) || {}
+ meta = (file.instance_read(:meta) || {}).with_indifferent_access.slice(*META_KEYS)
meta['focus'] = { 'x' => x, 'y' => y }
file.instance_write(:meta, meta)
end
def focus
- x = file.meta['focus']['x']
- y = file.meta['focus']['y']
+ x = file.meta&.dig('focus', 'x')
+ y = file.meta&.dig('focus', 'y')
+
+ return if x.nil? || y.nil?
"#{x},#{y}"
end
+ attr_writer :delay_processing
+
+ def delay_processing?
+ @delay_processing
+ end
+
+ def delay_processing_for_attachment?(attachment_name)
+ @delay_processing && attachment_name == :file
+ end
+
+ after_commit :enqueue_processing, on: :create
after_commit :reset_parent_cache, on: :update
+
before_create :prepare_description, unless: :local?
before_create :set_shortcode
- before_post_process :set_type_and_extension
- before_save :set_meta
+ before_create :set_processing
+
+ after_post_process :set_meta
+
+ before_file_post_process :set_type_and_extension
+ before_file_post_process :check_video_dimensions
class << self
def supported_mime_types
@@ -203,25 +271,25 @@ class MediaAttachment < ApplicationRecord
private
- def file_styles(f)
- if f.instance.file_content_type == 'image/gif' || VIDEO_CONVERTIBLE_MIME_TYPES.include?(f.instance.file_content_type)
+ def file_styles(attachment)
+ if attachment.instance.file_content_type == 'image/gif' || VIDEO_CONVERTIBLE_MIME_TYPES.include?(attachment.instance.file_content_type)
VIDEO_CONVERTED_STYLES
- elsif IMAGE_MIME_TYPES.include?(f.instance.file_content_type)
+ elsif IMAGE_MIME_TYPES.include?(attachment.instance.file_content_type)
IMAGE_STYLES
- elsif VIDEO_MIME_TYPES.include?(f.instance.file_content_type)
+ elsif VIDEO_MIME_TYPES.include?(attachment.instance.file_content_type)
VIDEO_STYLES
else
AUDIO_STYLES
end
end
- def file_processors(f)
- if f.file_content_type == 'image/gif'
+ def file_processors(instance)
+ if instance.file_content_type == 'image/gif'
[:gif_transcoder, :blurhash_transcoder]
- elsif VIDEO_MIME_TYPES.include?(f.file_content_type)
+ elsif VIDEO_MIME_TYPES.include?(instance.file_content_type)
[:video_transcoder, :blurhash_transcoder, :type_corrector]
- elsif AUDIO_MIME_TYPES.include?(f.file_content_type)
- [:transcoder, :type_corrector]
+ elsif AUDIO_MIME_TYPES.include?(instance.file_content_type)
+ [:image_extractor, :transcoder, :type_corrector]
else
[:lazy_thumbnail, :blurhash_transcoder, :type_corrector]
end
@@ -242,7 +310,7 @@ class MediaAttachment < ApplicationRecord
end
def prepare_description
- self.description = description.strip[0...420] unless description.nil?
+ self.description = description.strip[0...MAX_DESCRIPTION_LENGTH] unless description.nil?
end
def set_type_and_extension
@@ -257,21 +325,34 @@ class MediaAttachment < ApplicationRecord
end
end
- def set_meta
- meta = populate_meta
+ def set_processing
+ self.processing = delay_processing? ? :queued : :complete
+ end
+
+ def check_video_dimensions
+ return unless (video? || gifv?) && file.queued_for_write[:original].present?
- return if meta == {}
+ movie = ffmpeg_data(file.queued_for_write[:original].path)
- file.instance_write :meta, meta
+ return unless movie.valid?
+
+ raise Mastodon::DimensionsValidationError, "#{movie.width}x#{movie.height} videos are not supported" if movie.width * movie.height > MAX_VIDEO_MATRIX_LIMIT
+ raise Mastodon::DimensionsValidationError, "#{movie.frame_rate.to_i}fps videos are not supported" if movie.frame_rate > MAX_VIDEO_FRAME_RATE
+ end
+
+ def set_meta
+ file.instance_write :meta, populate_meta
end
def populate_meta
- meta = file.instance_read(:meta) || {}
+ meta = (file.instance_read(:meta) || {}).with_indifferent_access.slice(*META_KEYS)
file.queued_for_write.each do |style, file|
meta[style] = style == :small || image? ? image_geometry(file) : video_metadata(file)
end
+ meta[:small] = image_geometry(thumbnail.queued_for_write[:original]) if thumbnail.queued_for_write.key?(:original)
+
meta
end
@@ -284,12 +365,12 @@ class MediaAttachment < ApplicationRecord
width: width,
height: height,
size: "#{width}x#{height}",
- aspect: width.to_f / height.to_f,
+ aspect: width.to_f / height,
}
end
def video_metadata(file)
- movie = FFMPEG::Movie.new(file.path)
+ movie = ffmpeg_data(file.path)
return {} unless movie.valid?
@@ -302,9 +383,18 @@ class MediaAttachment < ApplicationRecord
}.compact
end
- def reset_parent_cache
- return if status_id.nil?
+ # We call this method about 3 different times on potentially different
+ # paths but ultimately the same file, so it makes sense to memoize the
+ # result while disregarding the path
+ def ffmpeg_data(path = nil)
+ @ffmpeg_data ||= FFMPEG::Movie.new(path)
+ end
- Rails.cache.delete("statuses/#{status_id}")
+ def enqueue_processing
+ PostProcessMediaWorker.perform_async(id) if delay_processing?
+ end
+
+ def reset_parent_cache
+ Rails.cache.delete("statuses/#{status_id}") if status_id.present?
end
end
diff --git a/app/models/message_franking.rb b/app/models/message_franking.rb
new file mode 100644
index 000000000..c72bd1cca
--- /dev/null
+++ b/app/models/message_franking.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class MessageFranking
+ attr_reader :hmac, :source_account_id, :target_account_id,
+ :timestamp, :original_franking
+
+ def initialize(attributes = {})
+ @hmac = attributes[:hmac]
+ @source_account_id = attributes[:source_account_id]
+ @target_account_id = attributes[:target_account_id]
+ @timestamp = attributes[:timestamp]
+ @original_franking = attributes[:original_franking]
+ end
+
+ def to_token
+ crypt = ActiveSupport::MessageEncryptor.new(SystemKey.current_key, serializer: Oj)
+ crypt.encrypt_and_sign(self)
+ end
+end
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 498673ff1..ad7528f50 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -42,7 +42,7 @@ class Notification < ApplicationRecord
validates :activity_type, inclusion: { in: TYPE_CLASS_MAP.values }
scope :browserable, ->(exclude_types = [], account_id = nil) {
- types = TYPE_CLASS_MAP.values - activity_types_from_types(exclude_types + [:follow_request])
+ types = TYPE_CLASS_MAP.values - activity_types_from_types(exclude_types)
if account_id.nil?
where(activity_type: types)
else
@@ -50,7 +50,7 @@ class Notification < ApplicationRecord
end
}
- cache_associated :from_account, status: STATUS_INCLUDES, mention: [status: STATUS_INCLUDES], favourite: [:account, status: STATUS_INCLUDES], follow: :account, poll: [status: STATUS_INCLUDES]
+ cache_associated :from_account, status: STATUS_INCLUDES, mention: [status: STATUS_INCLUDES], favourite: [:account, status: STATUS_INCLUDES], follow: :account, follow_request: :account, poll: [status: STATUS_INCLUDES]
def type
@type ||= TYPE_CLASS_MAP.invert[activity_type].to_sym
@@ -69,10 +69,6 @@ class Notification < ApplicationRecord
end
end
- def browserable?
- type != :follow_request
- end
-
class << self
def cache_ids
select(:id, :updated_at, :activity_type, :activity_id)
diff --git a/app/models/one_time_key.rb b/app/models/one_time_key.rb
new file mode 100644
index 000000000..8ada34824
--- /dev/null
+++ b/app/models/one_time_key.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: one_time_keys
+#
+# id :bigint(8) not null, primary key
+# device_id :bigint(8)
+# key_id :string default(""), not null
+# key :text default(""), not null
+# signature :text default(""), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class OneTimeKey < ApplicationRecord
+ belongs_to :device
+
+ validates :key_id, :key, :signature, presence: true
+ validates :key, ed25519_key: true
+ validates :signature, ed25519_signature: { message: :key, verify_key: ->(one_time_key) { one_time_key.device.fingerprint_key } }
+end
diff --git a/app/models/poll.rb b/app/models/poll.rb
index 5427368fd..b5deafcc2 100644
--- a/app/models/poll.rb
+++ b/app/models/poll.rb
@@ -36,7 +36,7 @@ class Poll < ApplicationRecord
scope :attached, -> { where.not(status_id: nil) }
scope :unattached, -> { where(status_id: nil) }
- before_validation :prepare_options
+ before_validation :prepare_options, if: :local?
before_validation :prepare_votes_count
after_initialize :prepare_cached_tallies
diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb
index 4e89fbf85..235928260 100644
--- a/app/models/preview_card.rb
+++ b/app/models/preview_card.rb
@@ -3,38 +3,45 @@
#
# Table name: preview_cards
#
-# id :bigint(8) not null, primary key
-# url :string default(""), not null
-# title :string default(""), not null
-# description :string default(""), not null
-# image_file_name :string
-# image_content_type :string
-# image_file_size :integer
-# image_updated_at :datetime
-# type :integer default("link"), not null
-# html :text default(""), not null
-# author_name :string default(""), not null
-# author_url :string default(""), not null
-# provider_name :string default(""), not null
-# provider_url :string default(""), not null
-# width :integer default(0), not null
-# height :integer default(0), not null
-# created_at :datetime not null
-# updated_at :datetime not null
-# embed_url :string default(""), not null
+# id :bigint(8) not null, primary key
+# url :string default(""), not null
+# title :string default(""), not null
+# description :string default(""), not null
+# image_file_name :string
+# image_content_type :string
+# image_file_size :integer
+# image_updated_at :datetime
+# type :integer default("link"), not null
+# html :text default(""), not null
+# author_name :string default(""), not null
+# author_url :string default(""), not null
+# provider_name :string default(""), not null
+# provider_url :string default(""), not null
+# width :integer default(0), not null
+# height :integer default(0), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# embed_url :string default(""), not null
+# image_storage_schema_version :integer
+# blurhash :string
#
class PreviewCard < ApplicationRecord
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
LIMIT = 1.megabytes
+ BLURHASH_OPTIONS = {
+ x_comp: 4,
+ y_comp: 4,
+ }.freeze
+
self.inheritance_column = false
enum type: [:link, :photo, :video, :rich]
has_and_belongs_to_many :statuses
- has_attached_file :image, styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' }
+ has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' }
include Attachmentable
@@ -47,6 +54,10 @@ class PreviewCard < ApplicationRecord
before_save :extract_dimensions, if: :link?
+ def local?
+ false
+ end
+
def missing_image?
width.present? && height.present? && image_file_name.blank?
end
@@ -67,6 +78,7 @@ class PreviewCard < ApplicationRecord
geometry: '400x400>',
file_geometry_parser: FastGeometryParser,
convert_options: '-coalesce -strip',
+ blurhash: BLURHASH_OPTIONS,
},
}
diff --git a/app/models/relationship_filter.rb b/app/models/relationship_filter.rb
new file mode 100644
index 000000000..9135ff144
--- /dev/null
+++ b/app/models/relationship_filter.rb
@@ -0,0 +1,120 @@
+# frozen_string_literal: true
+
+class RelationshipFilter
+ KEYS = %i(
+ relationship
+ status
+ by_domain
+ activity
+ order
+ location
+ ).freeze
+
+ attr_reader :params, :account
+
+ def initialize(account, params)
+ @account = account
+ @params = params
+
+ set_defaults!
+ end
+
+ def results
+ scope = scope_for('relationship', params['relationship'].to_s.strip)
+
+ params.each do |key, value|
+ next if %w(relationship page).include?(key)
+
+ scope.merge!(scope_for(key.to_s, value.to_s.strip)) if value.present?
+ end
+
+ scope
+ end
+
+ private
+
+ def set_defaults!
+ params['relationship'] = 'following' if params['relationship'].blank?
+ params['order'] = 'recent' if params['order'].blank?
+ end
+
+ def scope_for(key, value)
+ case key
+ when 'relationship'
+ relationship_scope(value)
+ when 'by_domain'
+ by_domain_scope(value)
+ when 'location'
+ location_scope(value)
+ when 'status'
+ status_scope(value)
+ when 'order'
+ order_scope(value)
+ when 'activity'
+ activity_scope(value)
+ else
+ raise "Unknown filter: #{key}"
+ end
+ end
+
+ def relationship_scope(value)
+ case value
+ when 'following'
+ account.following.eager_load(:account_stat).reorder(nil)
+ when 'followed_by'
+ account.followers.eager_load(:account_stat).reorder(nil)
+ when 'mutual'
+ account.followers.eager_load(:account_stat).reorder(nil).merge(Account.where(id: account.following))
+ when 'invited'
+ Account.joins(user: :invite).merge(Invite.where(user: account.user)).eager_load(:account_stat).reorder(nil)
+ else
+ raise "Unknown relationship: #{value}"
+ end
+ end
+
+ def by_domain_scope(value)
+ Account.where(domain: value)
+ end
+
+ def location_scope(value)
+ case value
+ when 'local'
+ Account.local
+ when 'remote'
+ Account.remote
+ else
+ raise "Unknown location: #{value}"
+ end
+ end
+
+ def status_scope(value)
+ case value
+ when 'moved'
+ Account.where.not(moved_to_account_id: nil)
+ when 'primary'
+ Account.where(moved_to_account_id: nil)
+ else
+ raise "Unknown status: #{value}"
+ end
+ end
+
+ def order_scope(value)
+ case value
+ when 'active'
+ Account.by_recent_status
+ when 'recent'
+ params[:relationship] == 'invited' ? Account.recent : Follow.recent
+ else
+ raise "Unknown order: #{value}"
+ end
+ end
+
+ def activity_scope(value)
+ case value
+ when 'dormant'
+ AccountStat.where(last_status_at: nil).or(AccountStat.where(AccountStat.arel_table[:last_status_at].lt(1.month.ago)))
+ else
+ raise "Unknown activity: #{value}"
+ end
+ end
+end
diff --git a/app/models/relay.rb b/app/models/relay.rb
index 8c8a97db3..d6ddd30ed 100644
--- a/app/models/relay.rb
+++ b/app/models/relay.rb
@@ -27,7 +27,7 @@ class Relay < ApplicationRecord
payload = Oj.dump(follow_activity(activity_id))
update!(state: :pending, follow_activity_id: activity_id)
- DeliveryFailureTracker.new(inbox_url).track_success!
+ DeliveryFailureTracker.reset!(inbox_url)
ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url)
end
@@ -36,7 +36,7 @@ class Relay < ApplicationRecord
payload = Oj.dump(unfollow_activity(activity_id))
update!(state: :idle, follow_activity_id: nil)
- DeliveryFailureTracker.new(inbox_url).track_success!
+ DeliveryFailureTracker.reset!(inbox_url)
ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url)
end
diff --git a/app/models/remote_follow.rb b/app/models/remote_follow.rb
index 5ea535287..30b84f7d5 100644
--- a/app/models/remote_follow.rb
+++ b/app/models/remote_follow.rb
@@ -3,6 +3,7 @@
class RemoteFollow
include ActiveModel::Validations
include RoutingHelper
+ include WebfingerHelper
attr_accessor :acct, :addressable_template
@@ -71,7 +72,7 @@ class RemoteFollow
end
def acct_resource
- @acct_resource ||= Goldfinger.finger("acct:#{acct}")
+ @acct_resource ||= webfinger!("acct:#{acct}")
rescue Goldfinger::Error, HTTP::ConnectionError
nil
end
diff --git a/app/models/report.rb b/app/models/report.rb
index fb2e040ee..f31bcfd2e 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -18,6 +18,9 @@
class Report < ApplicationRecord
include Paginable
+ include RateLimitable
+
+ rate_limit by: :account, family: :reports
belongs_to :account
belongs_to :target_account, class_name: 'Account'
@@ -59,6 +62,14 @@ class Report < ApplicationRecord
end
def resolve!(acting_account)
+ if account_id == -99 && target_account.trust_level == Account::TRUST_LEVELS[:untrusted]
+ # This is an automated report and it is being dismissed, so it's
+ # a false positive, in which case update the account's trust level
+ # to prevent further spam checks
+
+ target_account.update(trust_level: Account::TRUST_LEVELS[:trusted])
+ end
+
RemovalWorker.push_bulk(Status.with_discarded.discarded.where(id: status_ids).pluck(:id)) { |status_id| [status_id, { immediate: true }] }
update!(action_taken: true, action_taken_by_account_id: acting_account.id)
end
diff --git a/app/models/report_filter.rb b/app/models/report_filter.rb
index a392d60c3..c32d4359e 100644
--- a/app/models/report_filter.rb
+++ b/app/models/report_filter.rb
@@ -1,6 +1,13 @@
# frozen_string_literal: true
class ReportFilter
+ KEYS = %i(
+ resolved
+ account_id
+ target_account_id
+ by_target_domain
+ ).freeze
+
attr_reader :params
def initialize(params)
@@ -19,6 +26,8 @@ class ReportFilter
def scope_for(key, value)
case key.to_sym
+ when :by_target_domain
+ Report.where(target_account: Account.where(domain: value))
when :resolved
Report.resolved
when :account_id
diff --git a/app/models/status.rb b/app/models/status.rb
index c4bc9436f..1463e10db 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -32,6 +32,9 @@ class Status < ApplicationRecord
include Paginable
include Cacheable
include StatusThreadingConcern
+ include RateLimitable
+
+ rate_limit by: :account, family: :statuses
self.discard_column = :deleted_at
@@ -54,6 +57,7 @@ class Status < ApplicationRecord
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs, optional: true
has_many :favourites, inverse_of: :status, dependent: :destroy
+ has_many :bookmarks, inverse_of: :status, dependent: :destroy
has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy
has_many :replies, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :thread
has_many :mentions, dependent: :destroy, inverse_of: :status
@@ -82,6 +86,7 @@ class Status < ApplicationRecord
scope :remote, -> { where(local: false).where.not(uri: nil) }
scope :local, -> { where(local: true).or(where(uri: nil)) }
+ scope :with_accounts, ->(ids) { where(id: ids).includes(:account) }
#scope :without_replies, -> { where('statuses.reply = FALSE OR statuses.in_reply_to_account_id = statuses.account_id') }
scope :without_replies, -> { where('statuses.reply = FALSE') }
#scope :without_reblogs, -> { where('statuses.reblog_of_id IS NULL') }
@@ -137,13 +142,15 @@ class Status < ApplicationRecord
ids << account_id if local?
if preloaded.nil?
- ids += mentions.where(account: Account.local).pluck(:account_id)
+ ids += mentions.where(account: Account.local, silent: false).pluck(:account_id)
ids += favourites.where(account: Account.local).pluck(:account_id)
ids += reblogs.where(account: Account.local).pluck(:account_id)
+ ids += bookmarks.where(account: Account.local).pluck(:account_id)
else
ids += preloaded.mentions[id] || []
ids += preloaded.favourites[id] || []
ids += preloaded.reblogs[id] || []
+ ids += preloaded.bookmarks[id] || []
end
ids.uniq
@@ -193,14 +200,6 @@ class Status < ApplicationRecord
preview_cards.first
end
- def title
- if destroyed?
- "#{account.acct} deleted status"
- else
- reblog? ? "#{account.acct} shared a status by #{reblog.account.acct}" : "New status by #{account.acct}"
- end
- end
-
def hidden?
!distributable?
end
@@ -288,7 +287,7 @@ class Status < ApplicationRecord
def as_public_timeline(account = nil, local_only = false)
query = timeline_scope(local_only).without_replies
- apply_timeline_filters(query, account, local_only)
+ apply_timeline_filters(query, account, [:local, true].include?(local_only))
end
def as_tag_timeline(tag, account = nil, local_only = false)
@@ -305,6 +304,10 @@ class Status < ApplicationRecord
Favourite.select('status_id').where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |f, h| h[f.status_id] = true }
end
+ def bookmarks_map(status_ids, account_id)
+ Bookmark.select('status_id').where(status_id: status_ids).where(account_id: account_id).map { |f| [f.status_id, true] }.to_h
+ end
+
def reblogs_map(status_ids, account_id)
unscoped.select('reblog_of_id').where(reblog_of_id: status_ids).where(account_id: account_id).each_with_object({}) { |s, h| h[s.reblog_of_id] = true }
end
@@ -342,7 +345,7 @@ class Status < ApplicationRecord
if account.nil?
where(visibility: visibility)
- elsif target_account.blocking?(account) # get rid of blocked peeps
+ elsif target_account.blocking?(account) || (account.domain.present? && target_account.domain_blocking?(account.domain)) # get rid of blocked peeps
none
elsif account.id == target_account.id # author can see own stuff
all
@@ -359,10 +362,33 @@ class Status < ApplicationRecord
end
end
+ def from_text(text)
+ return [] if text.blank?
+
+ text.scan(FetchLinkCardService::URL_PATTERN).map(&:first).uniq.map do |url|
+ status = begin
+ if TagManager.instance.local_url?(url)
+ ActivityPub::TagManager.instance.uri_to_resource(url, Status)
+ else
+ EntityCache.instance.status(url)
+ end
+ end
+ status&.distributable? ? status : nil
+ end.compact
+ end
+
private
- def timeline_scope(local_only = false)
- starting_scope = local_only ? Status.local : Status
+ def timeline_scope(scope = false)
+ starting_scope = case scope
+ when :local, true
+ Status.local
+ when :remote
+ Status.remote
+ else
+ Status
+ end
+
starting_scope
.with_public_visibility
.without_reblogs
diff --git a/app/models/status.rb.orig b/app/models/status.rb.orig
new file mode 100644
index 000000000..aeb8ef431
--- /dev/null
+++ b/app/models/status.rb.orig
@@ -0,0 +1,523 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: statuses
+#
+# id :bigint(8) not null, primary key
+# uri :string
+# text :text default(""), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# in_reply_to_id :bigint(8)
+# reblog_of_id :bigint(8)
+# url :string
+# sensitive :boolean default(FALSE), not null
+# visibility :integer default("public"), not null
+# spoiler_text :text default(""), not null
+# reply :boolean default(FALSE), not null
+# language :string
+# conversation_id :bigint(8)
+# local :boolean
+# account_id :bigint(8) not null
+# application_id :bigint(8)
+# in_reply_to_account_id :bigint(8)
+# poll_id :bigint(8)
+# deleted_at :datetime
+#
+
+class Status < ApplicationRecord
+ before_destroy :unlink_from_conversations
+
+ include Discard::Model
+ include Paginable
+ include Cacheable
+ include StatusThreadingConcern
+ include RateLimitable
+
+ rate_limit by: :account, family: :statuses
+
+ self.discard_column = :deleted_at
+
+ # If `override_timestamps` is set at creation time, Snowflake ID creation
+ # will be based on current time instead of `created_at`
+ attr_accessor :override_timestamps
+
+ update_index('statuses#status', :proper)
+
+ enum visibility: [:public, :unlisted, :private, :direct, :limited], _suffix: :visibility
+
+ belongs_to :application, class_name: 'Doorkeeper::Application', optional: true
+
+ belongs_to :account, inverse_of: :statuses
+ belongs_to :in_reply_to_account, foreign_key: 'in_reply_to_account_id', class_name: 'Account', optional: true
+ belongs_to :conversation, optional: true
+ belongs_to :preloadable_poll, class_name: 'Poll', foreign_key: 'poll_id', optional: true
+
+ belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies, optional: true
+ belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs, optional: true
+
+ has_many :favourites, inverse_of: :status, dependent: :destroy
+ has_many :bookmarks, inverse_of: :status, dependent: :destroy
+ has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy
+ has_many :replies, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :thread
+ has_many :mentions, dependent: :destroy, inverse_of: :status
+ has_many :active_mentions, -> { active }, class_name: 'Mention', inverse_of: :status
+ has_many :media_attachments, dependent: :nullify
+
+ has_and_belongs_to_many :tags
+ has_and_belongs_to_many :preview_cards
+
+ has_one :notification, as: :activity, dependent: :destroy
+ has_one :status_stat, inverse_of: :status
+ has_one :poll, inverse_of: :status, dependent: :destroy
+
+ validates :uri, uniqueness: true, presence: true, unless: :local?
+ validates :text, presence: true, unless: -> { with_media? || reblog? }
+ validates_with StatusLengthValidator
+ validates_with DisallowedHashtagsValidator
+ validates :reblog, uniqueness: { scope: :account }, if: :reblog?
+ validates :visibility, exclusion: { in: %w(direct limited) }, if: :reblog?
+
+ accepts_nested_attributes_for :poll
+
+ default_scope { recent.kept }
+
+ scope :recent, -> { reorder(id: :desc) }
+ scope :remote, -> { where(local: false).where.not(uri: nil) }
+ scope :local, -> { where(local: true).or(where(uri: nil)) }
+
+<<<<<<< HEAD
+ #scope :without_replies, -> { where('statuses.reply = FALSE OR statuses.in_reply_to_account_id = statuses.account_id') }
+ scope :without_replies, -> { where('statuses.reply = FALSE') }
+ #scope :without_reblogs, -> { where('statuses.reblog_of_id IS NULL') }
+ scope :without_reblogs, -> { joins('INNER JOIN statuses ori ON (statuses.reblog_of_id is NULL AND ori.id = statuses.id) OR ori.id = statuses.reblog_of_id')
+ .where('ori.account_id = statuses.account_id') }
+=======
+ scope :with_accounts, ->(ids) { where(id: ids).includes(:account) }
+ scope :without_replies, -> { where('statuses.reply = FALSE OR statuses.in_reply_to_account_id = statuses.account_id') }
+ scope :without_reblogs, -> { where('statuses.reblog_of_id IS NULL') }
+>>>>>>> master
+ scope :with_public_visibility, -> { where(visibility: :public) }
+ scope :tagged_with, ->(tag) { joins(:statuses_tags).where(statuses_tags: { tag_id: tag }) }
+ scope :excluding_silenced_accounts, -> { left_outer_joins(:account).where(accounts: { silenced_at: nil }) }
+ scope :including_silenced_accounts, -> { left_outer_joins(:account).where.not(accounts: { silenced_at: nil }) }
+ scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) }
+ scope :not_domain_blocked_by_account, ->(account) { account.excluded_from_timeline_domains.blank? ? left_outer_joins(:account) : left_outer_joins(:account).where('accounts.domain IS NULL OR accounts.domain NOT IN (?)', account.excluded_from_timeline_domains) }
+ scope :tagged_with_all, ->(tags) {
+ Array(tags).map(&:id).map(&:to_i).reduce(self) do |result, id|
+ result.joins("INNER JOIN statuses_tags t#{id} ON t#{id}.status_id = statuses.id AND t#{id}.tag_id = #{id}")
+ end
+ }
+ scope :tagged_with_none, ->(tags) {
+ Array(tags).map(&:id).map(&:to_i).reduce(self) do |result, id|
+ result.joins("LEFT OUTER JOIN statuses_tags t#{id} ON t#{id}.status_id = statuses.id AND t#{id}.tag_id = #{id}")
+ .where("t#{id}.tag_id IS NULL")
+ end
+ }
+
+ cache_associated :application,
+ :media_attachments,
+ :conversation,
+ :status_stat,
+ :tags,
+ :preview_cards,
+ :preloadable_poll,
+ account: :account_stat,
+ active_mentions: { account: :account_stat },
+ reblog: [
+ :application,
+ :tags,
+ :preview_cards,
+ :media_attachments,
+ :conversation,
+ :status_stat,
+ :preloadable_poll,
+ account: :account_stat,
+ active_mentions: { account: :account_stat },
+ ],
+ thread: { account: :account_stat }
+
+ delegate :domain, to: :account, prefix: true
+
+ REAL_TIME_WINDOW = 6.hours
+
+ def searchable_by(preloaded = nil)
+ ids = []
+
+ ids << account_id if local?
+
+ if preloaded.nil?
+ ids += mentions.where(account: Account.local, silent: false).pluck(:account_id)
+ ids += favourites.where(account: Account.local).pluck(:account_id)
+ ids += reblogs.where(account: Account.local).pluck(:account_id)
+ ids += bookmarks.where(account: Account.local).pluck(:account_id)
+ else
+ ids += preloaded.mentions[id] || []
+ ids += preloaded.favourites[id] || []
+ ids += preloaded.reblogs[id] || []
+ ids += preloaded.bookmarks[id] || []
+ end
+
+ ids.uniq
+ end
+
+ def reply?
+ !in_reply_to_id.nil? || attributes['reply']
+ end
+
+ def local?
+ attributes['local'] || uri.nil?
+ end
+
+ def reblog?
+ !reblog_of_id.nil?
+ end
+
+ def within_realtime_window?
+ created_at >= REAL_TIME_WINDOW.ago
+ end
+
+ def verb
+ if destroyed?
+ :delete
+ else
+ reblog? ? :share : :post
+ end
+ end
+
+ def object_type
+ reply? ? :comment : :note
+ end
+
+ def proper
+ reblog? ? reblog : self
+ end
+
+ def content
+ proper.text
+ end
+
+ def target
+ reblog
+ end
+
+ def preview_card
+ preview_cards.first
+ end
+
+ def hidden?
+ !distributable?
+ end
+
+ def distributable?
+ public_visibility? || unlisted_visibility?
+ end
+
+ alias sign? distributable?
+
+ def with_media?
+ media_attachments.any?
+ end
+
+ def non_sensitive_with_media?
+ !sensitive? && with_media?
+ end
+
+ def reported?
+ @reported ||= Report.where(target_account: account).unresolved.where('? = ANY(status_ids)', id).exists?
+ end
+
+ def emojis
+ return @emojis if defined?(@emojis)
+
+ fields = [spoiler_text, text]
+ fields += preloadable_poll.options unless preloadable_poll.nil?
+
+ @emojis = CustomEmoji.from_text(fields.join(' '), account.domain)
+ end
+
+ def mark_for_mass_destruction!
+ @marked_for_mass_destruction = true
+ end
+
+ def marked_for_mass_destruction?
+ @marked_for_mass_destruction
+ end
+
+ def replies_count
+ status_stat&.replies_count || 0
+ end
+
+ def reblogs_count
+ status_stat&.reblogs_count || 0
+ end
+
+ def favourites_count
+ status_stat&.favourites_count || 0
+ end
+
+ def increment_count!(key)
+ update_status_stat!(key => public_send(key) + 1)
+ end
+
+ def decrement_count!(key)
+ update_status_stat!(key => [public_send(key) - 1, 0].max)
+ end
+
+ after_create_commit :increment_counter_caches
+ after_destroy_commit :decrement_counter_caches
+
+ after_create_commit :store_uri, if: :local?
+ after_create_commit :update_statistics, if: :local?
+
+ around_create Mastodon::Snowflake::Callbacks
+
+ before_validation :prepare_contents, if: :local?
+ before_validation :set_reblog
+ before_validation :set_visibility
+ before_validation :set_conversation
+ before_validation :set_local
+
+ after_create :set_poll_id
+
+ class << self
+ def selectable_visibilities
+ visibilities.keys - %w(direct limited)
+ end
+
+ def in_chosen_languages(account)
+ where(language: nil).or where(language: account.chosen_languages)
+ end
+
+ def as_public_timeline(account = nil, local_only = false)
+ query = timeline_scope(local_only).without_replies
+
+ apply_timeline_filters(query, account, [:local, true].include?(local_only))
+ end
+
+ def as_tag_timeline(tag, account = nil, local_only = false)
+ query = timeline_scope(local_only).tagged_with(tag)
+
+ apply_timeline_filters(query, account, local_only)
+ end
+
+ def as_outbox_timeline(account)
+ where(account: account, visibility: :public)
+ end
+
+ def favourites_map(status_ids, account_id)
+ Favourite.select('status_id').where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |f, h| h[f.status_id] = true }
+ end
+
+ def bookmarks_map(status_ids, account_id)
+ Bookmark.select('status_id').where(status_id: status_ids).where(account_id: account_id).map { |f| [f.status_id, true] }.to_h
+ end
+
+ def reblogs_map(status_ids, account_id)
+ unscoped.select('reblog_of_id').where(reblog_of_id: status_ids).where(account_id: account_id).each_with_object({}) { |s, h| h[s.reblog_of_id] = true }
+ end
+
+ def mutes_map(conversation_ids, account_id)
+ ConversationMute.select('conversation_id').where(conversation_id: conversation_ids).where(account_id: account_id).each_with_object({}) { |m, h| h[m.conversation_id] = true }
+ end
+
+ def pins_map(status_ids, account_id)
+ StatusPin.select('status_id').where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |p, h| h[p.status_id] = true }
+ end
+
+ def reload_stale_associations!(cached_items)
+ account_ids = []
+
+ cached_items.each do |item|
+ account_ids << item.account_id
+ account_ids << item.reblog.account_id if item.reblog?
+ end
+
+ account_ids.uniq!
+
+ return if account_ids.empty?
+
+ accounts = Account.where(id: account_ids).includes(:account_stat).each_with_object({}) { |a, h| h[a.id] = a }
+
+ cached_items.each do |item|
+ item.account = accounts[item.account_id]
+ item.reblog.account = accounts[item.reblog.account_id] if item.reblog?
+ end
+ end
+
+ def permitted_for(target_account, account)
+ visibility = [:public, :unlisted]
+
+ if account.nil?
+ where(visibility: visibility)
+ elsif target_account.blocking?(account) || (account.domain.present? && target_account.domain_blocking?(account.domain)) # get rid of blocked peeps
+ none
+ elsif account.id == target_account.id # author can see own stuff
+ all
+ else
+ # followers can see followers-only stuff, but also things they are mentioned in.
+ # non-followers can see everything that isn't private/direct, but can see stuff they are mentioned in.
+ visibility.push(:private) if account.following?(target_account)
+
+ scope = left_outer_joins(:reblog)
+
+ scope.where(visibility: visibility)
+ .or(scope.where(id: account.mentions.select(:status_id)))
+ .merge(scope.where(reblog_of_id: nil).or(scope.where.not(reblogs_statuses: { account_id: account.excluded_from_timeline_account_ids })))
+ end
+ end
+
+ def from_text(text)
+ return [] if text.blank?
+
+ text.scan(FetchLinkCardService::URL_PATTERN).map(&:first).uniq.map do |url|
+ status = begin
+ if TagManager.instance.local_url?(url)
+ ActivityPub::TagManager.instance.uri_to_resource(url, Status)
+ else
+ EntityCache.instance.status(url)
+ end
+ end
+ status&.distributable? ? status : nil
+ end.compact
+ end
+
+ private
+
+ def timeline_scope(scope = false)
+ starting_scope = case scope
+ when :local, true
+ Status.local
+ when :remote
+ Status.remote
+ else
+ Status
+ end
+
+ starting_scope
+ .with_public_visibility
+ .without_reblogs
+ end
+
+ def apply_timeline_filters(query, account, local_only)
+ if account.nil?
+ filter_timeline_default(query)
+ else
+ filter_timeline_for_account(query, account, local_only)
+ end
+ end
+
+ def filter_timeline_for_account(query, account, local_only)
+ query = query.not_excluded_by_account(account)
+ query = query.not_domain_blocked_by_account(account) unless local_only
+ query = query.in_chosen_languages(account) if account.chosen_languages.present?
+ query.merge(account_silencing_filter(account))
+ end
+
+ def filter_timeline_default(query)
+ query.excluding_silenced_accounts
+ end
+
+ def account_silencing_filter(account)
+ if account.silenced?
+ including_myself = left_outer_joins(:account).where(account_id: account.id).references(:accounts)
+ excluding_silenced_accounts.or(including_myself)
+ else
+ excluding_silenced_accounts
+ end
+ end
+ end
+
+ def status_stat
+ super || build_status_stat
+ end
+
+ private
+
+ def update_status_stat!(attrs)
+ return if marked_for_destruction? || destroyed?
+
+ status_stat.update(attrs)
+ end
+
+ def store_uri
+ update_column(:uri, ActivityPub::TagManager.instance.uri_for(self)) if uri.nil?
+ end
+
+ def prepare_contents
+ text&.strip!
+ spoiler_text&.strip!
+ end
+
+ def set_reblog
+ self.reblog = reblog.reblog if reblog? && reblog.reblog?
+ end
+
+ def set_poll_id
+ update_column(:poll_id, poll.id) unless poll.nil?
+ end
+
+ def set_visibility
+ self.visibility = reblog.visibility if reblog? && visibility.nil?
+ self.visibility = (account.locked? ? :private : :public) if visibility.nil?
+ self.sensitive = false if sensitive.nil?
+ end
+
+ def set_conversation
+ self.thread = thread.reblog if thread&.reblog?
+
+ self.reply = !(in_reply_to_id.nil? && thread.nil?) unless reply
+
+ if reply? && !thread.nil?
+ self.in_reply_to_account_id = carried_over_reply_to_account_id
+ self.conversation_id = thread.conversation_id if conversation_id.nil?
+ elsif conversation_id.nil?
+ self.conversation = Conversation.new
+ end
+ end
+
+ def carried_over_reply_to_account_id
+ if thread.account_id == account_id && thread.reply?
+ thread.in_reply_to_account_id
+ else
+ thread.account_id
+ end
+ end
+
+ def set_local
+ self.local = account.local?
+ end
+
+ def update_statistics
+ return unless distributable?
+
+ ActivityTracker.increment('activity:statuses:local')
+ end
+
+ def increment_counter_caches
+ return if direct_visibility?
+
+ account&.increment_count!(:statuses_count)
+ reblog&.increment_count!(:reblogs_count) if reblog?
+ thread&.increment_count!(:replies_count) if in_reply_to_id.present? && distributable?
+ end
+
+ def decrement_counter_caches
+ return if direct_visibility? || marked_for_mass_destruction?
+
+ account&.decrement_count!(:statuses_count)
+ reblog&.decrement_count!(:reblogs_count) if reblog?
+ thread&.decrement_count!(:replies_count) if in_reply_to_id.present? && distributable?
+ end
+
+ def unlink_from_conversations
+ return unless direct_visibility?
+
+ mentioned_accounts = mentions.includes(:account).map(&:account)
+ inbox_owners = mentioned_accounts.select(&:local?) + (account.local? ? [account] : [])
+
+ inbox_owners.each do |inbox_owner|
+ AccountConversation.remove_status(inbox_owner, self)
+ end
+ end
+end
diff --git a/app/models/system_key.rb b/app/models/system_key.rb
new file mode 100644
index 000000000..f17db7c2d
--- /dev/null
+++ b/app/models/system_key.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: system_keys
+#
+# id :bigint(8) not null, primary key
+# key :binary
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+class SystemKey < ApplicationRecord
+ ROTATION_PERIOD = 1.week.freeze
+
+ before_validation :set_key
+
+ scope :expired, ->(now = Time.now.utc) { where(arel_table[:created_at].lt(now - ROTATION_PERIOD * 3)) }
+
+ class << self
+ def current_key
+ previous_key = order(id: :asc).last
+
+ if previous_key && previous_key.created_at >= ROTATION_PERIOD.ago
+ previous_key.key
+ else
+ create.key
+ end
+ end
+ end
+
+ private
+
+ def set_key
+ return if key.present?
+
+ cipher = OpenSSL::Cipher.new('AES-256-GCM')
+ cipher.encrypt
+
+ self.key = cipher.random_key
+ end
+end
diff --git a/app/models/tag.rb b/app/models/tag.rb
index d3a7e1e6d..bce76fc16 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -117,7 +117,7 @@ class Tag < ApplicationRecord
class << self
def find_or_create_by_names(name_or_names)
Array(name_or_names).map(&method(:normalize)).uniq { |str| str.mb_chars.downcase.to_s }.map do |normalized_name|
- tag = matching_name(normalized_name).first || create!(name: normalized_name)
+ tag = matching_name(normalized_name).first || create(name: normalized_name)
yield tag if block_given?
diff --git a/app/models/tag_filter.rb b/app/models/tag_filter.rb
index 8921e186b..a9ff5b703 100644
--- a/app/models/tag_filter.rb
+++ b/app/models/tag_filter.rb
@@ -1,6 +1,16 @@
# frozen_string_literal: true
class TagFilter
+ KEYS = %i(
+ directory
+ reviewed
+ unreviewed
+ pending_review
+ popular
+ active
+ name
+ ).freeze
+
attr_reader :params
def initialize(params)
diff --git a/app/models/unavailable_domain.rb b/app/models/unavailable_domain.rb
new file mode 100644
index 000000000..e2918b586
--- /dev/null
+++ b/app/models/unavailable_domain.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: unavailable_domains
+#
+# id :bigint(8) not null, primary key
+# domain :string default(""), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class UnavailableDomain < ApplicationRecord
+ include DomainNormalizable
+
+ after_commit :reset_cache!
+
+ private
+
+ def reset_cache!
+ Rails.cache.delete('unavailable_domains')
+ end
+end
diff --git a/app/models/user.rb b/app/models/user.rb
index bfabe8987..d32682072 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -38,6 +38,8 @@
# chosen_languages :string is an Array
# created_by_application_id :bigint(8)
# approved :boolean default(TRUE), not null
+# sign_in_token :string
+# sign_in_token_sent_at :datetime
#
class User < ApplicationRecord
@@ -93,10 +95,12 @@ class User < ApplicationRecord
scope :inactive, -> { where(arel_table[:current_sign_in_at].lt(ACTIVE_DURATION.ago)) }
scope :active, -> { confirmed.where(arel_table[:current_sign_in_at].gteq(ACTIVE_DURATION.ago)).joins(:account).where(accounts: { suspended_at: nil }) }
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) }
+ scope :matches_ip, ->(value) { left_joins(:session_activations).where('users.current_sign_in_ip <<= ?', value).or(left_joins(:session_activations).where('users.last_sign_in_ip <<= ?', value)).or(left_joins(:session_activations).where('session_activations.ip <<= ?', value)) }
scope :emailable, -> { confirmed.enabled.joins(:account).merge(Account.searchable) }
before_validation :sanitize_languages
before_create :set_approved
+ after_commit :send_pending_devise_notifications
# This avoids a deprecation warning from Rails 5.1
# It seems possible that a future release of devise-two-factor will
@@ -108,10 +112,10 @@ class User < ApplicationRecord
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
:reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :hide_network,
:expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
- :advanced_layout, :use_blurhash, :use_pending_items, :trends,
+ :advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images,
to: :settings, prefix: :setting, allow_nil: false
- attr_reader :invite_code
+ attr_reader :invite_code, :sign_in_token_attempt
attr_writer :external
def confirmed?
@@ -127,9 +131,7 @@ class User < ApplicationRecord
end
def disable!
- update!(disabled: true,
- last_sign_in_at: current_sign_in_at,
- current_sign_in_at: nil)
+ update!(disabled: true)
end
def enable!
@@ -167,6 +169,10 @@ class User < ApplicationRecord
true
end
+ def suspicious_sign_in?(ip)
+ !otp_required_for_login? && current_sign_in_at.present? && current_sign_in_at < 2.weeks.ago && !recent_ip?(ip)
+ end
+
def functional?
confirmed? && approved? && !disabled? && !account.suspended? && account.moved_to_account_id.nil?
end
@@ -246,7 +252,7 @@ class User < ApplicationRecord
ip: request.remote_ip).session_id
end
- def exclusive_session(id)
+ def clear_other_sessions(id)
session_activations.exclusive(id)
end
@@ -269,6 +275,13 @@ class User < ApplicationRecord
super
end
+ def external_or_valid_password?(compare_password)
+ # If encrypted_password is blank, we got the user from LDAP or PAM,
+ # so credentials are already valid
+
+ encrypted_password.blank? || valid_password?(compare_password)
+ end
+
def send_reset_password_instructions
return false if encrypted_password.blank?
@@ -289,14 +302,69 @@ class User < ApplicationRecord
setting_display_media == 'hide_all'
end
+ def recent_ips
+ @recent_ips ||= begin
+ arr = []
+
+ session_activations.each do |session_activation|
+ arr << [session_activation.updated_at, session_activation.ip]
+ end
+
+ arr << [current_sign_in_at, current_sign_in_ip] if current_sign_in_ip.present?
+ arr << [last_sign_in_at, last_sign_in_ip] if last_sign_in_ip.present?
+
+ arr.sort_by { |pair| pair.first || Time.now.utc }.uniq(&:last).reverse!
+ end
+ end
+
+ def sign_in_token_expired?
+ sign_in_token_sent_at.nil? || sign_in_token_sent_at < 5.minutes.ago
+ end
+
+ def generate_sign_in_token
+ self.sign_in_token = Devise.friendly_token(6)
+ self.sign_in_token_sent_at = Time.now.utc
+ end
+
protected
def send_devise_notification(notification, *args)
- devise_mailer.send(notification, self, *args).deliver_later
+ # This method can be called in `after_update` and `after_commit` hooks,
+ # but we must make sure the mailer is actually called *after* commit,
+ # otherwise it may work on stale data. To do this, figure out if we are
+ # within a transaction.
+ if ActiveRecord::Base.connection.current_transaction.try(:records)&.include?(self)
+ pending_devise_notifications << [notification, args]
+ else
+ render_and_send_devise_message(notification, *args)
+ end
end
private
+ def recent_ip?(ip)
+ recent_ips.any? { |(_, recent_ip)| recent_ip == ip }
+ end
+
+ def send_pending_devise_notifications
+ pending_devise_notifications.each do |notification, args|
+ render_and_send_devise_message(notification, *args)
+ end
+
+ # Empty the pending notifications array because the
+ # after_commit hook can be called multiple times which
+ # could cause multiple emails to be sent.
+ pending_devise_notifications.clear
+ end
+
+ def pending_devise_notifications
+ @pending_devise_notifications ||= []
+ end
+
+ def render_and_send_devise_message(notification, *args)
+ devise_mailer.send(notification, self, *args).deliver_later
+ end
+
def set_approved
self.approved = open_registrations? || valid_invitation? || external?
end
diff --git a/app/models/web/push_subscription.rb b/app/models/web/push_subscription.rb
index c5dbb58ba..c407a7789 100644
--- a/app/models/web/push_subscription.rb
+++ b/app/models/web/push_subscription.rb
@@ -94,11 +94,11 @@ class Web::PushSubscription < ApplicationRecord
def find_or_create_access_token
Doorkeeper::AccessToken.find_or_create_for(
- Doorkeeper::Application.find_by(superapp: true),
- session_activation.user_id,
- Doorkeeper::OAuth::Scopes.from_string('read write follow push'),
- Doorkeeper.configuration.access_token_expires_in,
- Doorkeeper.configuration.refresh_token_enabled?
+ application: Doorkeeper::Application.find_by(superapp: true),
+ resource_owner: session_activation.user_id,
+ scopes: Doorkeeper::OAuth::Scopes.from_string('read write follow push'),
+ expires_in: Doorkeeper.configuration.access_token_expires_in,
+ use_refresh_token: Doorkeeper.configuration.refresh_token_enabled?
)
end
end
diff --git a/app/policies/announcement_policy.rb b/app/policies/announcement_policy.rb
new file mode 100644
index 000000000..0a4e4575c
--- /dev/null
+++ b/app/policies/announcement_policy.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AnnouncementPolicy < ApplicationPolicy
+ def index?
+ staff?
+ end
+
+ def create?
+ admin?
+ end
+
+ def update?
+ admin?
+ end
+
+ def destroy?
+ admin?
+ end
+end
diff --git a/app/policies/settings_policy.rb b/app/policies/settings_policy.rb
index 2dcb79f51..874f97bab 100644
--- a/app/policies/settings_policy.rb
+++ b/app/policies/settings_policy.rb
@@ -8,4 +8,8 @@ class SettingsPolicy < ApplicationPolicy
def show?
admin?
end
+
+ def destroy?
+ admin?
+ end
end
diff --git a/app/presenters/account_relationships_presenter.rb b/app/presenters/account_relationships_presenter.rb
index b05673a3d..d662380f6 100644
--- a/app/presenters/account_relationships_presenter.rb
+++ b/app/presenters/account_relationships_presenter.rb
@@ -3,10 +3,10 @@
class AccountRelationshipsPresenter
attr_reader :following, :followed_by, :blocking, :blocked_by,
:muting, :requested, :domain_blocking,
- :endorsed
+ :endorsed, :account_note
def initialize(account_ids, current_account_id, **options)
- @account_ids = account_ids.map { |a| a.is_a?(Account) ? a.id : a }
+ @account_ids = account_ids.map { |a| a.is_a?(Account) ? a.id : a.to_i }
@current_account_id = current_account_id
@following = cached[:following].merge(Account.following_map(@uncached_account_ids, @current_account_id))
@@ -17,6 +17,7 @@ class AccountRelationshipsPresenter
@requested = cached[:requested].merge(Account.requested_map(@uncached_account_ids, @current_account_id))
@domain_blocking = cached[:domain_blocking].merge(Account.domain_blocking_map(@uncached_account_ids, @current_account_id))
@endorsed = cached[:endorsed].merge(Account.endorsed_map(@uncached_account_ids, @current_account_id))
+ @account_note = cached[:account_note].merge(Account.account_note_map(@uncached_account_ids, @current_account_id))
cache_uncached!
@@ -28,6 +29,7 @@ class AccountRelationshipsPresenter
@requested.merge!(options[:requested_map] || {})
@domain_blocking.merge!(options[:domain_blocking_map] || {})
@endorsed.merge!(options[:endorsed_map] || {})
+ @account_note.merge!(options[:account_note_map] || {})
end
private
@@ -44,6 +46,7 @@ class AccountRelationshipsPresenter
requested: {},
domain_blocking: {},
endorsed: {},
+ account_note: {},
}
@uncached_account_ids = []
@@ -72,6 +75,7 @@ class AccountRelationshipsPresenter
requested: { account_id => requested[account_id] },
domain_blocking: { account_id => domain_blocking[account_id] },
endorsed: { account_id => endorsed[account_id] },
+ account_note: { account_id => account_note[account_id] },
}
Rails.cache.write("relationship:#{@current_account_id}:#{account_id}", maps_for_account, expires_in: 1.day)
diff --git a/app/presenters/activitypub/activity_presenter.rb b/app/presenters/activitypub/activity_presenter.rb
new file mode 100644
index 000000000..5d174767f
--- /dev/null
+++ b/app/presenters/activitypub/activity_presenter.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+class ActivityPub::ActivityPresenter < ActiveModelSerializers::Model
+ attributes :id, :type, :actor, :published, :to, :cc, :virtual_object
+
+ class << self
+ def from_status(status)
+ new.tap do |presenter|
+ presenter.id = ActivityPub::TagManager.instance.activity_uri_for(status)
+ presenter.type = status.reblog? ? 'Announce' : 'Create'
+ presenter.actor = ActivityPub::TagManager.instance.uri_for(status.account)
+ presenter.published = status.created_at
+ presenter.to = ActivityPub::TagManager.instance.to(status)
+ presenter.cc = ActivityPub::TagManager.instance.cc(status)
+
+ presenter.virtual_object = begin
+ if status.reblog?
+ if status.account == status.proper.account && status.proper.private_visibility? && status.local?
+ status.proper
+ else
+ ActivityPub::TagManager.instance.uri_for(status.proper)
+ end
+ else
+ status.proper
+ end
+ end
+ end
+ end
+
+ def from_encrypted_message(encrypted_message)
+ new.tap do |presenter|
+ presenter.id = ActivityPub::TagManager.instance.generate_uri_for(nil)
+ presenter.type = 'Create'
+ presenter.actor = ActivityPub::TagManager.instance.uri_for(encrypted_message.source_account)
+ presenter.published = Time.now.utc
+ presenter.to = ActivityPub::TagManager.instance.uri_for(encrypted_message.target_account)
+ presenter.virtual_object = encrypted_message
+ end
+ end
+ end
+end
diff --git a/app/presenters/initial_state_presenter.rb b/app/presenters/initial_state_presenter.rb
index 70c496be8..06482935c 100644
--- a/app/presenters/initial_state_presenter.rb
+++ b/app/presenters/initial_state_presenter.rb
@@ -2,5 +2,5 @@
class InitialStatePresenter < ActiveModelSerializers::Model
attributes :settings, :push_subscription, :token,
- :current_account, :admin, :text
+ :current_account, :admin, :text, :visibility
end
diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb
index b04e10e2f..3cc905a75 100644
--- a/app/presenters/status_relationships_presenter.rb
+++ b/app/presenters/status_relationships_presenter.rb
@@ -1,12 +1,14 @@
# frozen_string_literal: true
class StatusRelationshipsPresenter
- attr_reader :reblogs_map, :favourites_map, :mutes_map, :pins_map
+ attr_reader :reblogs_map, :favourites_map, :mutes_map, :pins_map,
+ :bookmarks_map
def initialize(statuses, current_account_id = nil, **options)
if current_account_id.nil?
@reblogs_map = {}
@favourites_map = {}
+ @bookmarks_map = {}
@mutes_map = {}
@pins_map = {}
else
@@ -17,6 +19,7 @@ class StatusRelationshipsPresenter
@reblogs_map = Status.reblogs_map(status_ids, current_account_id).merge(options[:reblogs_map] || {})
@favourites_map = Status.favourites_map(status_ids, current_account_id).merge(options[:favourites_map] || {})
+ @bookmarks_map = Status.bookmarks_map(status_ids, current_account_id).merge(options[:bookmarks_map] || {})
@mutes_map = Status.mutes_map(conversation_ids, current_account_id).merge(options[:mutes_map] || {})
@pins_map = Status.pins_map(pinnable_status_ids, current_account_id).merge(options[:pins_map] || {})
end
diff --git a/app/serializers/activitypub/activity_serializer.rb b/app/serializers/activitypub/activity_serializer.rb
index d0edad786..5bdf53f03 100644
--- a/app/serializers/activitypub/activity_serializer.rb
+++ b/app/serializers/activitypub/activity_serializer.rb
@@ -1,52 +1,22 @@
# frozen_string_literal: true
class ActivityPub::ActivitySerializer < ActivityPub::Serializer
- attributes :id, :type, :actor, :published, :to, :cc
-
- has_one :proper, key: :object, serializer: ActivityPub::NoteSerializer, if: :serialize_object?
-
- attribute :proper_uri, key: :object, unless: :serialize_object?
- attribute :atom_uri, if: :announce?
-
- def id
- ActivityPub::TagManager.instance.activity_uri_for(object)
+ def self.serializer_for(model, options)
+ case model.class.name
+ when 'Status'
+ ActivityPub::NoteSerializer
+ when 'DeliverToDeviceService::EncryptedMessage'
+ ActivityPub::EncryptedMessageSerializer
+ else
+ super
+ end
end
- def type
- announce? ? 'Announce' : 'Create'
- end
+ attributes :id, :type, :actor, :published, :to, :cc
- def actor
- ActivityPub::TagManager.instance.uri_for(object.account)
- end
+ has_one :virtual_object, key: :object
def published
- object.created_at.iso8601
- end
-
- def to
- ActivityPub::TagManager.instance.to(object)
- end
-
- def cc
- ActivityPub::TagManager.instance.cc(object)
- end
-
- def proper_uri
- ActivityPub::TagManager.instance.uri_for(object.proper)
- end
-
- def atom_uri
- OStatus::TagManager.instance.uri_for(object)
- end
-
- def announce?
- object.reblog?
- end
-
- def serialize_object?
- return true unless announce?
- # Serialize private self-boosts of local toots
- object.account == object.proper.account && object.proper.private_visibility? && object.local?
+ object.published.iso8601
end
end
diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb
index 17df85de3..627d4446b 100644
--- a/app/serializers/activitypub/actor_serializer.rb
+++ b/app/serializers/activitypub/actor_serializer.rb
@@ -7,7 +7,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
context_extensions :manually_approves_followers, :featured, :also_known_as,
:moved_to, :property_value, :identity_proof,
- :discoverable
+ :discoverable, :olm
attributes :id, :type, :following, :followers,
:inbox, :outbox, :featured,
@@ -20,6 +20,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
has_many :virtual_tags, key: :tag
has_many :virtual_attachments, key: :attachment
+ attribute :devices, unless: :instance_actor?
attribute :moved_to, if: :moved?
attribute :also_known_as, if: :also_known_as?
@@ -38,7 +39,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
has_one :icon, serializer: ActivityPub::ImageSerializer, if: :avatar_exists?
has_one :image, serializer: ActivityPub::ImageSerializer, if: :header_exists?
- delegate :moved?, to: :object
+ delegate :moved?, :instance_actor?, to: :object
def id
object.instance_actor? ? instance_actor_url : account_url(object)
@@ -49,6 +50,8 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
'Application'
elsif object.bot?
'Service'
+ elsif object.group?
+ 'Group'
else
'Person'
end
@@ -66,6 +69,10 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
object.instance_actor? ? instance_actor_inbox_url : account_inbox_url(object)
end
+ def devices
+ account_collection_url(object, :devices)
+ end
+
def outbox
account_outbox_url(object)
end
diff --git a/app/serializers/activitypub/collection_serializer.rb b/app/serializers/activitypub/collection_serializer.rb
index da1ba735f..ea7af5433 100644
--- a/app/serializers/activitypub/collection_serializer.rb
+++ b/app/serializers/activitypub/collection_serializer.rb
@@ -1,10 +1,28 @@
# frozen_string_literal: true
class ActivityPub::CollectionSerializer < ActivityPub::Serializer
+ class StringSerializer < ActiveModel::Serializer
+ # Despite the name, it does not return a hash, but the same can be said of
+ # the ActiveModel::Serializer::CollectionSerializer class which handles
+ # arrays.
+ def serializable_hash(*_args)
+ object
+ end
+ end
+
def self.serializer_for(model, options)
- return ActivityPub::NoteSerializer if model.class.name == 'Status'
- return ActivityPub::CollectionSerializer if model.class.name == 'ActivityPub::CollectionPresenter'
- super
+ case model.class.name
+ when 'Status'
+ ActivityPub::NoteSerializer
+ when 'Device'
+ ActivityPub::DeviceSerializer
+ when 'ActivityPub::CollectionPresenter'
+ ActivityPub::CollectionSerializer
+ when 'String'
+ StringSerializer
+ else
+ super
+ end
end
attribute :id, if: -> { object.id.present? }
diff --git a/app/serializers/activitypub/device_serializer.rb b/app/serializers/activitypub/device_serializer.rb
new file mode 100644
index 000000000..5f0fdc8af
--- /dev/null
+++ b/app/serializers/activitypub/device_serializer.rb
@@ -0,0 +1,52 @@
+# frozen_string_literal: true
+
+class ActivityPub::DeviceSerializer < ActivityPub::Serializer
+ context_extensions :olm
+
+ include RoutingHelper
+
+ class FingerprintKeySerializer < ActivityPub::Serializer
+ attributes :type, :public_key_base64
+
+ def type
+ 'Ed25519Key'
+ end
+
+ def public_key_base64
+ object.fingerprint_key
+ end
+ end
+
+ class IdentityKeySerializer < ActivityPub::Serializer
+ attributes :type, :public_key_base64
+
+ def type
+ 'Curve25519Key'
+ end
+
+ def public_key_base64
+ object.identity_key
+ end
+ end
+
+ attributes :device_id, :type, :name, :claim
+
+ has_one :fingerprint_key, serializer: FingerprintKeySerializer
+ has_one :identity_key, serializer: IdentityKeySerializer
+
+ def type
+ 'Device'
+ end
+
+ def claim
+ account_claim_url(object.account, id: object.device_id)
+ end
+
+ def fingerprint_key
+ object
+ end
+
+ def identity_key
+ object
+ end
+end
diff --git a/app/serializers/activitypub/encrypted_message_serializer.rb b/app/serializers/activitypub/encrypted_message_serializer.rb
new file mode 100644
index 000000000..3c525d23e
--- /dev/null
+++ b/app/serializers/activitypub/encrypted_message_serializer.rb
@@ -0,0 +1,61 @@
+# frozen_string_literal: true
+
+class ActivityPub::EncryptedMessageSerializer < ActivityPub::Serializer
+ context :security
+
+ context_extensions :olm
+
+ class DeviceSerializer < ActivityPub::Serializer
+ attributes :type, :device_id
+
+ def type
+ 'Device'
+ end
+
+ def device_id
+ object
+ end
+ end
+
+ class DigestSerializer < ActivityPub::Serializer
+ attributes :type, :digest_algorithm, :digest_value
+
+ def type
+ 'Digest'
+ end
+
+ def digest_algorithm
+ 'http://www.w3.org/2000/09/xmldsig#hmac-sha256'
+ end
+
+ def digest_value
+ object
+ end
+ end
+
+ attributes :type, :message_type, :cipher_text, :message_franking
+
+ has_one :attributed_to, serializer: DeviceSerializer
+ has_one :to, serializer: DeviceSerializer
+ has_one :digest, serializer: DigestSerializer
+
+ def type
+ 'EncryptedMessage'
+ end
+
+ def attributed_to
+ object.source_device.device_id
+ end
+
+ def to
+ object.target_device_id
+ end
+
+ def message_type
+ object.type
+ end
+
+ def cipher_text
+ object.body
+ end
+end
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb
index 110621a28..f26fd93a4 100644
--- a/app/serializers/activitypub/note_serializer.rb
+++ b/app/serializers/activitypub/note_serializer.rb
@@ -167,6 +167,8 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
attributes :type, :media_type, :url, :name, :blurhash
attribute :focal_point, if: :focal_point?
+ has_one :icon, serializer: ActivityPub::ImageSerializer, if: :thumbnail?
+
def type
'Document'
end
@@ -190,6 +192,14 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
def focal_point
[object.file.meta['focus']['x'], object.file.meta['focus']['y']]
end
+
+ def icon
+ object.thumbnail
+ end
+
+ def thumbnail?
+ object.thumbnail.present?
+ end
end
class MentionSerializer < ActivityPub::Serializer
diff --git a/app/serializers/activitypub/one_time_key_serializer.rb b/app/serializers/activitypub/one_time_key_serializer.rb
new file mode 100644
index 000000000..5932eb5b5
--- /dev/null
+++ b/app/serializers/activitypub/one_time_key_serializer.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+class ActivityPub::OneTimeKeySerializer < ActivityPub::Serializer
+ context :security
+
+ context_extensions :olm
+
+ class SignatureSerializer < ActivityPub::Serializer
+ attributes :type, :signature_value
+
+ def type
+ 'Ed25519Signature'
+ end
+
+ def signature_value
+ object.signature
+ end
+ end
+
+ attributes :key_id, :type, :public_key_base64
+
+ has_one :signature, serializer: SignatureSerializer
+
+ def type
+ 'Curve25519Key'
+ end
+
+ def public_key_base64
+ object.key
+ end
+
+ def signature
+ object
+ end
+end
diff --git a/app/serializers/activitypub/outbox_serializer.rb b/app/serializers/activitypub/outbox_serializer.rb
index 48fbad0fd..4f4f950a5 100644
--- a/app/serializers/activitypub/outbox_serializer.rb
+++ b/app/serializers/activitypub/outbox_serializer.rb
@@ -2,7 +2,14 @@
class ActivityPub::OutboxSerializer < ActivityPub::CollectionSerializer
def self.serializer_for(model, options)
- return ActivityPub::ActivitySerializer if model.is_a?(Status)
- super
+ if model.class.name == 'ActivityPub::ActivityPresenter'
+ ActivityPub::ActivitySerializer
+ else
+ super
+ end
+ end
+
+ def items
+ object.items.map { |status| ActivityPub::ActivityPresenter.from_status(status) }
end
end
diff --git a/app/serializers/activitypub/undo_announce_serializer.rb b/app/serializers/activitypub/undo_announce_serializer.rb
index 6758af679..a925efc18 100644
--- a/app/serializers/activitypub/undo_announce_serializer.rb
+++ b/app/serializers/activitypub/undo_announce_serializer.rb
@@ -3,7 +3,7 @@
class ActivityPub::UndoAnnounceSerializer < ActivityPub::Serializer
attributes :id, :type, :actor, :to
- has_one :object, serializer: ActivityPub::ActivitySerializer
+ has_one :virtual_object, key: :object, serializer: ActivityPub::ActivitySerializer
def id
[ActivityPub::TagManager.instance.uri_for(object.account), '#announces/', object.id, '/undo'].join
@@ -20,4 +20,8 @@ class ActivityPub::UndoAnnounceSerializer < ActivityPub::Serializer
def to
[ActivityPub::TagManager::COLLECTIONS[:public]]
end
+
+ def virtual_object
+ ActivityPub::ActivityPresenter.from_status(object)
+ end
end
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 9f6d41954..a69f8589c 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -40,11 +40,13 @@ class InitialStateSerializer < ActiveModel::Serializer
store[:use_pending_items] = object.current_account.user.setting_use_pending_items
store[:is_staff] = object.current_account.user.staff?
store[:trends] = Setting.trends && object.current_account.user.setting_trends
+ store[:crop_images] = object.current_account.user.setting_crop_images
else
store[:auto_play_gif] = Setting.auto_play_gif
store[:display_media] = Setting.display_media
store[:reduce_motion] = Setting.reduce_motion
store[:use_blurhash] = Setting.use_blurhash
+ store[:crop_images] = Setting.crop_images
end
store
@@ -55,7 +57,7 @@ class InitialStateSerializer < ActiveModel::Serializer
if object.current_account
store[:me] = object.current_account.id.to_s
- store[:default_privacy] = object.current_account.user.setting_default_privacy
+ store[:default_privacy] = object.visibility || object.current_account.user.setting_default_privacy
store[:default_sensitive] = object.current_account.user.setting_default_sensitive
end
diff --git a/app/serializers/oembed_serializer.rb b/app/serializers/oembed_serializer.rb
index 01689633b..d6261d724 100644
--- a/app/serializers/oembed_serializer.rb
+++ b/app/serializers/oembed_serializer.rb
@@ -4,7 +4,7 @@ class OEmbedSerializer < ActiveModel::Serializer
include RoutingHelper
include ActionView::Helpers::TagHelper
- attributes :type, :version, :title, :author_name,
+ attributes :type, :version, :author_name,
:author_url, :provider_name, :provider_url,
:cache_age, :html, :width, :height
diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb
index 75b6cf13b..0db1916b0 100644
--- a/app/serializers/rest/account_serializer.rb
+++ b/app/serializers/rest/account_serializer.rb
@@ -3,7 +3,7 @@
class REST::AccountSerializer < ActiveModel::Serializer
include RoutingHelper
- attributes :id, :username, :acct, :display_name, :locked, :bot, :created_at,
+ attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :group, :created_at,
:note, :url, :avatar, :avatar_static, :header, :header_static,
:followers_count, :following_count, :statuses_count, :last_status_at
@@ -24,6 +24,10 @@ class REST::AccountSerializer < ActiveModel::Serializer
object.id.to_s
end
+ def acct
+ object.pretty_acct
+ end
+
def note
Formatter.instance.simplified_format(object)
end
@@ -51,4 +55,8 @@ class REST::AccountSerializer < ActiveModel::Serializer
def moved_and_not_nested?
object.moved? && object.moved_to_account.moved_to_account_id.nil?
end
+
+ def last_status_at
+ object.last_status_at&.to_date&.iso8601
+ end
end
diff --git a/app/serializers/rest/announcement_serializer.rb b/app/serializers/rest/announcement_serializer.rb
new file mode 100644
index 000000000..9343b97d2
--- /dev/null
+++ b/app/serializers/rest/announcement_serializer.rb
@@ -0,0 +1,62 @@
+# frozen_string_literal: true
+
+class REST::AnnouncementSerializer < ActiveModel::Serializer
+ attributes :id, :content, :starts_at, :ends_at, :all_day,
+ :published_at, :updated_at
+
+ attribute :read, if: :current_user?
+
+ has_many :mentions
+ has_many :statuses
+ has_many :tags, serializer: REST::StatusSerializer::TagSerializer
+ has_many :emojis, serializer: REST::CustomEmojiSerializer
+ has_many :reactions, serializer: REST::ReactionSerializer
+
+ def current_user?
+ !current_user.nil?
+ end
+
+ def id
+ object.id.to_s
+ end
+
+ def read
+ object.announcement_mutes.where(account: current_user.account).exists?
+ end
+
+ def content
+ Formatter.instance.linkify(object.text)
+ end
+
+ def reactions
+ object.reactions(current_user&.account)
+ end
+
+ class AccountSerializer < ActiveModel::Serializer
+ attributes :id, :username, :url, :acct
+
+ def id
+ object.id.to_s
+ end
+
+ def url
+ ActivityPub::TagManager.instance.url_for(object)
+ end
+
+ def acct
+ object.pretty_acct
+ end
+ end
+
+ class StatusSerializer < ActiveModel::Serializer
+ attributes :id, :url
+
+ def id
+ object.id.to_s
+ end
+
+ def url
+ ActivityPub::TagManager.instance.url_for(object)
+ end
+ end
+end
diff --git a/app/serializers/rest/encrypted_message_serializer.rb b/app/serializers/rest/encrypted_message_serializer.rb
new file mode 100644
index 000000000..80c26d060
--- /dev/null
+++ b/app/serializers/rest/encrypted_message_serializer.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class REST::EncryptedMessageSerializer < ActiveModel::Serializer
+ attributes :id, :account_id, :device_id,
+ :type, :body, :digest, :message_franking,
+ :created_at
+
+ def id
+ object.id.to_s
+ end
+
+ def account_id
+ object.from_account_id.to_s
+ end
+
+ def device_id
+ object.from_device_id
+ end
+end
diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb
index 1bd71683c..b388e448e 100644
--- a/app/serializers/rest/instance_serializer.rb
+++ b/app/serializers/rest/instance_serializer.rb
@@ -5,7 +5,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer
attributes :uri, :title, :short_description, :description, :email,
:version, :urls, :stats, :thumbnail,
- :languages, :registrations, :approval_required
+ :languages, :registrations, :approval_required, :invites_enabled
has_one :contact_account, serializer: REST::AccountSerializer
@@ -63,6 +63,10 @@ class REST::InstanceSerializer < ActiveModel::Serializer
Setting.registrations_mode == 'approved'
end
+ def invites_enabled
+ Setting.min_invite_role == 'user'
+ end
+
private
def instance_presenter
diff --git a/app/serializers/rest/keys/claim_result_serializer.rb b/app/serializers/rest/keys/claim_result_serializer.rb
new file mode 100644
index 000000000..145044f55
--- /dev/null
+++ b/app/serializers/rest/keys/claim_result_serializer.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class REST::Keys::ClaimResultSerializer < ActiveModel::Serializer
+ attributes :account_id, :device_id, :key_id, :key, :signature
+
+ def account_id
+ object.account.id.to_s
+ end
+end
diff --git a/app/serializers/rest/keys/device_serializer.rb b/app/serializers/rest/keys/device_serializer.rb
new file mode 100644
index 000000000..f9b821b79
--- /dev/null
+++ b/app/serializers/rest/keys/device_serializer.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+class REST::Keys::DeviceSerializer < ActiveModel::Serializer
+ attributes :device_id, :name, :identity_key,
+ :fingerprint_key
+end
diff --git a/app/serializers/rest/keys/query_result_serializer.rb b/app/serializers/rest/keys/query_result_serializer.rb
new file mode 100644
index 000000000..8f8bdde28
--- /dev/null
+++ b/app/serializers/rest/keys/query_result_serializer.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class REST::Keys::QueryResultSerializer < ActiveModel::Serializer
+ attributes :account_id
+
+ has_many :devices, serializer: REST::Keys::DeviceSerializer
+
+ def account_id
+ object.account.id.to_s
+ end
+end
diff --git a/app/serializers/rest/media_attachment_serializer.rb b/app/serializers/rest/media_attachment_serializer.rb
index 1b3498ea4..e65f7acf1 100644
--- a/app/serializers/rest/media_attachment_serializer.rb
+++ b/app/serializers/rest/media_attachment_serializer.rb
@@ -12,7 +12,9 @@ class REST::MediaAttachmentSerializer < ActiveModel::Serializer
end
def url
- if object.needs_redownload?
+ if object.not_processed?
+ nil
+ elsif object.needs_redownload?
media_proxy_url(object.id, :original)
else
full_asset_url(object.file.url(:original))
@@ -26,7 +28,9 @@ class REST::MediaAttachmentSerializer < ActiveModel::Serializer
def preview_url
if object.needs_redownload?
media_proxy_url(object.id, :small)
- else
+ elsif object.thumbnail.present?
+ full_asset_url(object.thumbnail.url(:original))
+ elsif object.file.styles.key?(:small)
full_asset_url(object.file.url(:small))
end
end
diff --git a/app/serializers/rest/preview_card_serializer.rb b/app/serializers/rest/preview_card_serializer.rb
index 2df9d07a7..66ff47d22 100644
--- a/app/serializers/rest/preview_card_serializer.rb
+++ b/app/serializers/rest/preview_card_serializer.rb
@@ -6,7 +6,7 @@ class REST::PreviewCardSerializer < ActiveModel::Serializer
attributes :url, :title, :description, :type,
:author_name, :author_url, :provider_name,
:provider_url, :html, :width, :height,
- :image, :embed_url
+ :image, :embed_url, :blurhash
def image
object.image? ? full_asset_url(object.image.url(:original)) : nil
diff --git a/app/serializers/rest/reaction_serializer.rb b/app/serializers/rest/reaction_serializer.rb
new file mode 100644
index 000000000..1a5dca018
--- /dev/null
+++ b/app/serializers/rest/reaction_serializer.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+class REST::ReactionSerializer < ActiveModel::Serializer
+ include RoutingHelper
+
+ attributes :name, :count
+
+ attribute :me, if: :current_user?
+ attribute :url, if: :custom_emoji?
+ attribute :static_url, if: :custom_emoji?
+
+ def count
+ object.respond_to?(:count) ? object.count : 0
+ end
+
+ def current_user?
+ !current_user.nil?
+ end
+
+ def custom_emoji?
+ object.custom_emoji.present?
+ end
+
+ def url
+ full_asset_url(object.custom_emoji.image.url)
+ end
+
+ def static_url
+ full_asset_url(object.custom_emoji.image.url(:static))
+ end
+end
diff --git a/app/serializers/rest/relationship_serializer.rb b/app/serializers/rest/relationship_serializer.rb
index 1a3fd915c..c2f3c9a11 100644
--- a/app/serializers/rest/relationship_serializer.rb
+++ b/app/serializers/rest/relationship_serializer.rb
@@ -3,7 +3,7 @@
class REST::RelationshipSerializer < ActiveModel::Serializer
attributes :id, :following, :showing_reblogs, :followed_by, :blocking, :blocked_by,
:muting, :muting_notifications, :requested, :domain_blocking,
- :endorsed
+ :endorsed, :note
def id
object.id.to_s
@@ -50,4 +50,8 @@ class REST::RelationshipSerializer < ActiveModel::Serializer
def endorsed
instance_options[:relationships].endorsed[object.id] || false
end
+
+ def note
+ (instance_options[:relationships].account_note[object.id] || {})[:comment] || ''
+ end
end
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index 2dc4a1b61..0109de882 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -9,6 +9,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
attribute :favourited, if: :current_user?
attribute :reblogged, if: :current_user?
attribute :muted, if: :current_user?
+ attribute :bookmarked, if: :current_user?
attribute :pinned, if: :pinnable?
attribute :content, unless: :source_requested?
@@ -93,6 +94,14 @@ class REST::StatusSerializer < ActiveModel::Serializer
end
end
+ def bookmarked
+ if instance_options && instance_options[:relationships]
+ instance_options[:relationships].bookmarks_map[object.id] || false
+ else
+ current_user.account.bookmarked?(object)
+ end
+ end
+
def pinned
if instance_options && instance_options[:relationships]
instance_options[:relationships].pins_map[object.id] || false
@@ -136,7 +145,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
end
def acct
- object.account_acct
+ object.account.pretty_acct
end
end
diff --git a/app/serializers/rss/account_serializer.rb b/app/serializers/rss/account_serializer.rb
index e39b2b372..81e24af0d 100644
--- a/app/serializers/rss/account_serializer.rb
+++ b/app/serializers/rss/account_serializer.rb
@@ -1,8 +1,8 @@
# frozen_string_literal: true
-class RSS::AccountSerializer
+class RSS::AccountSerializer < RSS::Serializer
include ActionView::Helpers::NumberHelper
- include StatusesHelper
+ include AccountsHelper
include RoutingHelper
def render(account, statuses, tag)
@@ -17,18 +17,7 @@ class RSS::AccountSerializer
builder.image(full_asset_url(account.avatar.url(:original))) if account.avatar?
builder.cover(full_asset_url(account.header.url(:original))) if account.header?
- statuses.each do |status|
- builder.item do |item|
- item.title(status.title)
- .link(ActivityPub::TagManager.instance.url_for(status))
- .pub_date(status.created_at)
- .description(status.spoiler_text.presence || Formatter.instance.format(status, inline_poll_options: true).to_str)
-
- status.media_attachments.each do |media|
- item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size)
- end
- end
- end
+ render_statuses(builder, statuses)
builder.to_xml
end
diff --git a/app/serializers/rss/tag_serializer.rb b/app/serializers/rss/tag_serializer.rb
index 6737fb2c9..e549ac367 100644
--- a/app/serializers/rss/tag_serializer.rb
+++ b/app/serializers/rss/tag_serializer.rb
@@ -1,9 +1,8 @@
# frozen_string_literal: true
-class RSS::TagSerializer
+class RSS::TagSerializer < RSS::Serializer
include ActionView::Helpers::NumberHelper
include ActionView::Helpers::SanitizeHelper
- include StatusesHelper
include RoutingHelper
def render(tag, statuses)
@@ -15,18 +14,7 @@ class RSS::TagSerializer
.logo(full_pack_url('media/images/logo.svg'))
.accent_color('2b90d9')
- statuses.each do |status|
- builder.item do |item|
- item.title(status.title)
- .link(ActivityPub::TagManager.instance.url_for(status))
- .pub_date(status.created_at)
- .description(status.spoiler_text.presence || Formatter.instance.format(status).to_str)
-
- status.media_attachments.each do |media|
- item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size)
- end
- end
- end
+ render_statuses(builder, statuses)
builder.to_xml
end
diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb
index 40c5f8590..493813aab 100644
--- a/app/services/account_search_service.rb
+++ b/app/services/account_search_service.rb
@@ -4,8 +4,8 @@ class AccountSearchService < BaseService
attr_reader :query, :limit, :offset, :options, :account
def call(query, account = nil, options = {})
- @acct_hint = query.start_with?('@')
- @query = query.strip.gsub(/\A@/, '')
+ @acct_hint = query&.start_with?('@')
+ @query = query&.strip&.gsub(/\A@/, '')
@limit = options[:limit].to_i
@offset = options[:offset].to_i
@options = options
@@ -127,7 +127,7 @@ class AccountSearchService < BaseService
end
def following_ids
- @following_ids ||= account.active_relationships.pluck(:target_account_id)
+ @following_ids ||= account.active_relationships.pluck(:target_account_id) + [account.id]
end
def limit_for_non_exact_results
@@ -171,7 +171,7 @@ class AccountSearchService < BaseService
end
def username_complete?
- query.include?('@') && "@#{query}" =~ Account::MENTION_RE
+ query.include?('@') && "@#{query}" =~ /\A#{Account::MENTION_RE}\Z/
end
def likely_acct?
diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb
index d65c8f951..83fbf6d07 100644
--- a/app/services/activitypub/fetch_remote_account_service.rb
+++ b/app/services/activitypub/fetch_remote_account_service.rb
@@ -3,6 +3,7 @@
class ActivityPub::FetchRemoteAccountService < BaseService
include JsonLdHelper
include DomainControlHelper
+ include WebfingerHelper
SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze
@@ -35,12 +36,12 @@ class ActivityPub::FetchRemoteAccountService < BaseService
private
def verified_webfinger?
- webfinger = Goldfinger.finger("acct:#{@username}@#{@domain}")
+ webfinger = webfinger!("acct:#{@username}@#{@domain}")
confirmed_username, confirmed_domain = split_acct(webfinger.subject)
return webfinger.link('self')&.href == @uri if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero?
- webfinger = Goldfinger.finger("acct:#{confirmed_username}@#{confirmed_domain}")
+ webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}")
@username, @domain = split_acct(webfinger.subject)
self_reference = webfinger.link('self')
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index cef658e19..85b915ec6 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -18,9 +18,10 @@ class ActivityPub::ProcessAccountService < BaseService
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
- @account = Account.find_remote(@username, @domain)
- @old_public_key = @account&.public_key
- @old_protocol = @account&.protocol
+ @account = Account.remote.find_by(uri: @uri) if @options[:only_key]
+ @account ||= Account.find_remote(@username, @domain)
+ @old_public_key = @account&.public_key
+ @old_protocol = @account&.protocol
create_account if @account.nil?
update_account
@@ -75,6 +76,7 @@ class ActivityPub::ProcessAccountService < BaseService
@account.shared_inbox_url = (@json['endpoints'].is_a?(Hash) ? @json['endpoints']['sharedInbox'] : @json['sharedInbox']) || ''
@account.followers_url = @json['followers'] || ''
@account.featured_collection_url = @json['featured'] || ''
+ @account.devices_url = @json['devices'] || ''
@account.url = url || @uri
@account.uri = @uri
@account.display_name = @json['name'] || ''
@@ -87,12 +89,13 @@ class ActivityPub::ProcessAccountService < BaseService
end
def set_fetchable_attributes!
- @account.avatar_remote_url = image_url('icon') unless skip_download?
- @account.header_remote_url = image_url('image') unless skip_download?
+ @account.avatar_remote_url = image_url('icon') || '' unless skip_download?
+ @account.header_remote_url = image_url('image') || '' unless skip_download?
@account.public_key = public_key || ''
@account.statuses_count = outbox_total_items if outbox_total_items.present?
@account.following_count = following_total_items if following_total_items.present?
@account.followers_count = followers_total_items if followers_total_items.present?
+ @account.hide_collections = following_private? || followers_private?
@account.moved_to_account = @json['movedTo'].present? ? moved_account : nil
end
@@ -165,26 +168,36 @@ class ActivityPub::ProcessAccountService < BaseService
end
def outbox_total_items
- collection_total_items('outbox')
+ collection_info('outbox').first
end
def following_total_items
- collection_total_items('following')
+ collection_info('following').first
end
def followers_total_items
- collection_total_items('followers')
+ collection_info('followers').first
end
- def collection_total_items(type)
- return if @json[type].blank?
+ def following_private?
+ !collection_info('following').last
+ end
+
+ def followers_private?
+ !collection_info('followers').last
+ end
+
+ def collection_info(type)
+ return [nil, nil] if @json[type].blank?
return @collections[type] if @collections.key?(type)
collection = fetch_resource_without_id_validation(@json[type])
- @collections[type] = collection.is_a?(Hash) && collection['totalItems'].present? && collection['totalItems'].is_a?(Numeric) ? collection['totalItems'] : nil
+ total_items = collection.is_a?(Hash) && collection['totalItems'].present? && collection['totalItems'].is_a?(Numeric) ? collection['totalItems'] : nil
+ has_first_page = collection.is_a?(Hash) && collection['first'].present?
+ @collections[type] = [total_items, has_first_page]
rescue HTTP::Error, OpenSSL::SSL::SSLError
- @collections[type] = nil
+ @collections[type] = [nil, nil]
end
def moved_account
diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb
index a2a2e7071..e6ccaccc9 100644
--- a/app/services/activitypub/process_collection_service.rb
+++ b/app/services/activitypub/process_collection_service.rb
@@ -37,7 +37,7 @@ class ActivityPub::ProcessCollectionService < BaseService
end
def process_item(item)
- activity = ActivityPub::Activity.factory(item, @account, @options)
+ activity = ActivityPub::Activity.factory(item, @account, **@options)
activity&.perform
end
diff --git a/app/services/activitypub/process_poll_service.rb b/app/services/activitypub/process_poll_service.rb
index cb4a0d460..903b6a78a 100644
--- a/app/services/activitypub/process_poll_service.rb
+++ b/app/services/activitypub/process_poll_service.rb
@@ -30,7 +30,7 @@ class ActivityPub::ProcessPollService < BaseService
voters_count = @json['votersCount']
- latest_options = items.map { |item| item['name'].presence || item['content'] }
+ latest_options = items.map { |item| item['name'].presence || item['content'] }.compact
# If for some reasons the options were changed, it invalidates all previous
# votes, so we need to remove them
diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb
index 12e4fa8b4..6a1575616 100644
--- a/app/services/backup_service.rb
+++ b/app/services/backup_service.rb
@@ -3,6 +3,8 @@
require 'rubygems/package'
class BackupService < BaseService
+ include Payloadable
+
attr_reader :account, :backup, :collection
def call(backup)
@@ -20,7 +22,7 @@ class BackupService < BaseService
account.statuses.with_includes.reorder(nil).find_in_batches do |statuses|
statuses.each do |status|
- item = serialize(status, ActivityPub::ActivitySerializer)
+ item = serialize_payload(ActivityPub::ActivityPresenter.from_status(status), ActivityPub::ActivitySerializer, signer: @account)
item.delete(:'@context')
unless item[:type] == 'Announce' || item[:object][:attachment].blank?
@@ -45,6 +47,7 @@ class BackupService < BaseService
dump_media_attachments!(tar)
dump_outbox!(tar)
dump_likes!(tar)
+ dump_bookmarks!(tar)
dump_actor!(tar)
end
end
@@ -63,6 +66,8 @@ class BackupService < BaseService
def dump_media_attachments!(tar)
MediaAttachment.attached.where(account: account).reorder(nil).find_in_batches do |media_attachments|
media_attachments.each do |m|
+ next unless m.file&.path
+
download_to_tar(tar, m.file, m.file.path)
end
@@ -85,6 +90,7 @@ class BackupService < BaseService
actor[:image][:url] = 'header' + File.extname(actor[:image][:url]) if actor[:image]
actor[:outbox] = 'outbox.json'
actor[:likes] = 'likes.json'
+ actor[:bookmarks] = 'bookmarks.json'
download_to_tar(tar, account.avatar, 'avatar' + File.extname(account.avatar.path)) if account.avatar.exists?
download_to_tar(tar, account.header, 'header' + File.extname(account.header.path)) if account.header.exists?
@@ -115,6 +121,25 @@ class BackupService < BaseService
end
end
+ def dump_bookmarks!(tar)
+ collection = serialize(ActivityPub::CollectionPresenter.new(id: 'bookmarks.json', type: :ordered, size: 0, items: []), ActivityPub::CollectionSerializer)
+
+ Status.reorder(nil).joins(:bookmarks).includes(:account).merge(account.bookmarks).find_in_batches do |statuses|
+ statuses.each do |status|
+ collection[:totalItems] += 1
+ collection[:orderedItems] << ActivityPub::TagManager.instance.uri_for(status)
+ end
+
+ GC.start
+ end
+
+ json = Oj.dump(collection)
+
+ tar.add_file_simple('bookmarks.json', 0o444, json.bytesize) do |io|
+ io.write(json)
+ end
+ end
+
def collection_presenter
ActivityPub::CollectionPresenter.new(
id: 'outbox.json',
@@ -142,7 +167,7 @@ class BackupService < BaseService
io.write(buffer)
end
end
- rescue Errno::ENOENT
+ rescue Errno::ENOENT, Seahorse::Client::NetworkingError
Rails.logger.warn "Could not backup file #{filename}: file not found"
end
end
diff --git a/app/services/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb
index 3638134be..2295a01dc 100644
--- a/app/services/batched_remove_status_service.rb
+++ b/app/services/batched_remove_status_service.rb
@@ -72,11 +72,18 @@ class BatchedRemoveStatusService < BaseService
redis.pipelined do
redis.publish('timeline:public', payload)
- redis.publish('timeline:public:local', payload) if status.local?
-
+ if status.local?
+ redis.publish('timeline:public:local', payload)
+ else
+ redis.publish('timeline:public:remote', payload)
+ end
if status.media_attachments.any?
redis.publish('timeline:public:media', payload)
- redis.publish('timeline:public:local:media', payload) if status.local?
+ if status.local?
+ redis.publish('timeline:public:local:media', payload)
+ else
+ redis.publish('timeline:public:remote:media', payload)
+ end
end
@tags[status.id].each do |hashtag|
diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb
index ae461abf2..dc23ef8d8 100644
--- a/app/services/block_domain_service.rb
+++ b/app/services/block_domain_service.rb
@@ -20,65 +20,26 @@ class BlockDomainService < BaseService
end
def process_domain_block!
- clear_media! if domain_block.reject_media?
-
if domain_block.silence?
silence_accounts!
elsif domain_block.suspend?
suspend_accounts!
end
- end
- def invalidate_association_caches!
- # Normally, associated models of a status are immutable (except for accounts)
- # so they are aggressively cached. After updating the media attachments to no
- # longer point to a local file, we need to clear the cache to make those
- # changes appear in the API and UI
- @affected_status_ids.each { |id| Rails.cache.delete_matched("statuses/#{id}-*") }
+ DomainClearMediaWorker.perform_async(domain_block.id) if domain_block.reject_media?
end
def silence_accounts!
blocked_domain_accounts.without_silenced.in_batches.update_all(silenced_at: @domain_block.created_at)
end
- def clear_media!
- @affected_status_ids = []
-
- clear_account_images!
- clear_account_attachments!
- clear_emojos!
-
- invalidate_association_caches!
- end
-
def suspend_accounts!
- blocked_domain_accounts.without_suspended.reorder(nil).find_each do |account|
+ blocked_domain_accounts.without_suspended.in_batches.update_all(suspended_at: @domain_block.created_at)
+ blocked_domain_accounts.where(suspended_at: @domain_block.created_at).reorder(nil).find_each do |account|
SuspendAccountService.new.call(account, reserve_username: true, suspended_at: @domain_block.created_at)
end
end
- def clear_account_images!
- blocked_domain_accounts.reorder(nil).find_each do |account|
- account.avatar.destroy if account.avatar.exists?
- account.header.destroy if account.header.exists?
- account.save
- end
- end
-
- def clear_account_attachments!
- media_from_blocked_domain.reorder(nil).find_each do |attachment|
- @affected_status_ids << attachment.status_id if attachment.status_id.present?
-
- attachment.file.destroy if attachment.file.exists?
- attachment.type = :unknown
- attachment.save
- end
- end
-
- def clear_emojos!
- emojis_from_blocked_domains.destroy_all
- end
-
def blocked_domain
domain_block.domain
end
@@ -86,12 +47,4 @@ class BlockDomainService < BaseService
def blocked_domain_accounts
Account.by_domain_and_subdomains(blocked_domain)
end
-
- def media_from_blocked_domain
- MediaAttachment.joins(:account).merge(blocked_domain_accounts).reorder(nil)
- end
-
- def emojis_from_blocked_domains
- CustomEmoji.by_domain_and_subdomains(blocked_domain)
- end
end
diff --git a/app/services/bootstrap_timeline_service.rb b/app/services/bootstrap_timeline_service.rb
index c489601c1..8412aa7e7 100644
--- a/app/services/bootstrap_timeline_service.rb
+++ b/app/services/bootstrap_timeline_service.rb
@@ -5,7 +5,7 @@ class BootstrapTimelineService < BaseService
@source_account = source_account
autofollow_inviter!
- autofollow_bootstrap_timeline_accounts!
+ autofollow_bootstrap_timeline_accounts! if Setting.enable_bootstrap_timeline_accounts
end
private
diff --git a/app/services/clear_domain_media_service.rb b/app/services/clear_domain_media_service.rb
new file mode 100644
index 000000000..704cfb71a
--- /dev/null
+++ b/app/services/clear_domain_media_service.rb
@@ -0,0 +1,70 @@
+# frozen_string_literal: true
+
+class ClearDomainMediaService < BaseService
+ attr_reader :domain_block
+
+ def call(domain_block)
+ @domain_block = domain_block
+ clear_media! if domain_block.reject_media?
+ end
+
+ private
+
+ def invalidate_association_caches!
+ # Normally, associated models of a status are immutable (except for accounts)
+ # so they are aggressively cached. After updating the media attachments to no
+ # longer point to a local file, we need to clear the cache to make those
+ # changes appear in the API and UI
+ @affected_status_ids.each { |id| Rails.cache.delete_matched("statuses/#{id}-*") }
+ end
+
+ def clear_media!
+ @affected_status_ids = []
+
+ begin
+ clear_account_images!
+ clear_account_attachments!
+ clear_emojos!
+ ensure
+ invalidate_association_caches!
+ end
+ end
+
+ def clear_account_images!
+ blocked_domain_accounts.reorder(nil).find_each do |account|
+ account.avatar.destroy if account.avatar&.exists?
+ account.header.destroy if account.header&.exists?
+ account.save
+ end
+ end
+
+ def clear_account_attachments!
+ media_from_blocked_domain.reorder(nil).find_each do |attachment|
+ @affected_status_ids << attachment.status_id if attachment.status_id.present?
+
+ attachment.file.destroy if attachment.file&.exists?
+ attachment.type = :unknown
+ attachment.save
+ end
+ end
+
+ def clear_emojos!
+ emojis_from_blocked_domains.destroy_all
+ end
+
+ def blocked_domain
+ domain_block.domain
+ end
+
+ def blocked_domain_accounts
+ Account.by_domain_and_subdomains(blocked_domain)
+ end
+
+ def media_from_blocked_domain
+ MediaAttachment.joins(:account).merge(blocked_domain_accounts).reorder(nil)
+ end
+
+ def emojis_from_blocked_domains
+ CustomEmoji.by_domain_and_subdomains(blocked_domain)
+ end
+end
diff --git a/app/services/concerns/payloadable.rb b/app/services/concerns/payloadable.rb
index 7f9f21c4b..3e45570c3 100644
--- a/app/services/concerns/payloadable.rb
+++ b/app/services/concerns/payloadable.rb
@@ -5,8 +5,9 @@ module Payloadable
signer = options.delete(:signer)
sign_with = options.delete(:sign_with)
payload = ActiveModelSerializers::SerializableResource.new(record, options.merge(serializer: serializer, adapter: ActivityPub::Adapter)).as_json
+ object = record.respond_to?(:virtual_object) ? record.virtual_object : record
- if (record.respond_to?(:sign?) && record.sign?) && signer && signing_enabled?
+ if (object.respond_to?(:sign?) && object.sign?) && signer && signing_enabled?
ActivityPub::LinkedDataSignature.new(payload).sign!(signer, sign_with: sign_with)
else
payload
diff --git a/app/services/deliver_to_device_service.rb b/app/services/deliver_to_device_service.rb
new file mode 100644
index 000000000..71711945c
--- /dev/null
+++ b/app/services/deliver_to_device_service.rb
@@ -0,0 +1,78 @@
+# frozen_string_literal: true
+
+class DeliverToDeviceService < BaseService
+ include Payloadable
+
+ class EncryptedMessage < ActiveModelSerializers::Model
+ attributes :source_account, :target_account, :source_device,
+ :target_device_id, :type, :body, :digest,
+ :message_franking
+ end
+
+ def call(source_account, source_device, options = {})
+ @source_account = source_account
+ @source_device = source_device
+ @target_account = Account.find(options[:account_id])
+ @target_device_id = options[:device_id]
+ @body = options[:body]
+ @type = options[:type]
+ @hmac = options[:hmac]
+
+ set_message_franking!
+
+ if @target_account.local?
+ deliver_to_local!
+ else
+ deliver_to_remote!
+ end
+ end
+
+ private
+
+ def set_message_franking!
+ @message_franking = message_franking.to_token
+ end
+
+ def deliver_to_local!
+ target_device = @target_account.devices.find_by!(device_id: @target_device_id)
+
+ target_device.encrypted_messages.create!(
+ from_account: @source_account,
+ from_device_id: @source_device.device_id,
+ type: @type,
+ body: @body,
+ digest: @hmac,
+ message_franking: @message_franking
+ )
+ end
+
+ def deliver_to_remote!
+ ActivityPub::DeliveryWorker.perform_async(
+ Oj.dump(serialize_payload(ActivityPub::ActivityPresenter.from_encrypted_message(encrypted_message), ActivityPub::ActivitySerializer)),
+ @source_account.id,
+ @target_account.inbox_url
+ )
+ end
+
+ def message_franking
+ MessageFranking.new(
+ source_account_id: @source_account.id,
+ target_account_id: @target_account.id,
+ hmac: @hmac,
+ timestamp: Time.now.utc
+ )
+ end
+
+ def encrypted_message
+ EncryptedMessage.new(
+ source_account: @source_account,
+ target_account: @target_account,
+ source_device: @source_device,
+ target_device_id: @target_device_id,
+ type: @type,
+ body: @body,
+ digest: @hmac,
+ message_franking: @message_franking
+ )
+ end
+end
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb
index 95336ef45..276eac0c1 100644
--- a/app/services/fan_out_on_write_service.rb
+++ b/app/services/fan_out_on_write_service.rb
@@ -81,14 +81,22 @@ class FanOutOnWriteService < BaseService
Rails.logger.debug "Delivering status #{status.id} to public timeline"
Redis.current.publish('timeline:public', @payload)
- Redis.current.publish('timeline:public:local', @payload) if status.local?
+ if status.local?
+ Redis.current.publish('timeline:public:local', @payload)
+ else
+ Redis.current.publish('timeline:public:remote', @payload)
+ end
end
def deliver_to_media(status)
Rails.logger.debug "Delivering status #{status.id} to media timeline"
Redis.current.publish('timeline:public:media', @payload)
- Redis.current.publish('timeline:public:local:media', @payload) if status.local?
+ if status.local?
+ Redis.current.publish('timeline:public:local:media', @payload)
+ else
+ Redis.current.publish('timeline:public:remote:media', @payload)
+ end
end
def deliver_to_own_conversation(status)
diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb
index 76e42795b..beab449b2 100644
--- a/app/services/fetch_link_card_service.rb
+++ b/app/services/fetch_link_card_service.rb
@@ -39,8 +39,14 @@ class FetchLinkCardService < BaseService
def process_url
@card ||= PreviewCard.new(url: @url)
- Request.new(:get, @url).perform do |res|
- if res.code == 200 && res.mime_type.end_with?('text/html')
+ attempt_oembed || attempt_opengraph
+ end
+
+ def html
+ return @html if defined?(@html)
+
+ Request.new(:get, @url).add_headers('Accept' => 'text/html', 'User-Agent' => Mastodon::Version.user_agent + ' Bot').perform do |res|
+ if res.code == 200 && res.mime_type == 'text/html'
@html = res.body_with_limit
@html_charset = res.charset
else
@@ -48,10 +54,6 @@ class FetchLinkCardService < BaseService
@html_charset = nil
end
end
-
- return if @html.nil?
-
- attempt_oembed || attempt_opengraph
end
def attach_card
@@ -65,7 +67,7 @@ class FetchLinkCardService < BaseService
else
html = Nokogiri::HTML(@status.text)
links = html.css('a')
- urls = links.map { |a| Addressable::URI.parse(a['href']).normalize unless skip_link?(a) }.compact
+ urls = links.map { |a| Addressable::URI.parse(a['href']) unless skip_link?(a) }.compact.map(&:normalize).compact
end
urls.reject { |uri| bad_url?(uri) }.first
@@ -84,16 +86,21 @@ class FetchLinkCardService < BaseService
def skip_link?(a)
# Avoid links for hashtags and mentions (microformats)
- a['rel']&.include?('tag') || a['class']&.include?('u-url') || mention_link?(a)
+ a['rel']&.include?('tag') || a['class']&.match?(/u-url|h-card/) || mention_link?(a)
end
def attempt_oembed
- service = FetchOEmbedService.new
- embed = service.call(@url, html: @html)
- url = Addressable::URI.parse(service.endpoint_url)
+ service = FetchOEmbedService.new
+ url_domain = Addressable::URI.parse(@url).normalized_host
+ cached_endpoint = Rails.cache.read("oembed_endpoint:#{url_domain}")
+
+ embed = service.call(@url, cached_endpoint: cached_endpoint) unless cached_endpoint.nil?
+ embed ||= service.call(@url, html: html) unless html.nil?
return false if embed.nil?
+ url = Addressable::URI.parse(service.endpoint_url)
+
@card.type = embed[:type]
@card.title = embed[:title] || ''
@card.author_name = embed[:author_name] || ''
@@ -127,6 +134,8 @@ class FetchLinkCardService < BaseService
end
def attempt_opengraph
+ return if html.nil?
+
detector = CharlockHolmes::EncodingDetector.new
detector.strip_tags = true
diff --git a/app/services/fetch_link_card_service.rb.orig b/app/services/fetch_link_card_service.rb.orig
new file mode 100644
index 000000000..466e81315
--- /dev/null
+++ b/app/services/fetch_link_card_service.rb.orig
@@ -0,0 +1,182 @@
+# frozen_string_literal: true
+
+class FetchLinkCardService < BaseService
+ URL_PATTERN = %r{
+ ( # $1 URL
+ (https?:\/\/) # $2 Protocol (required)
+ (#{Twitter::Regex[:valid_domain]}) # $3 Domain(s)
+ (?::(#{Twitter::Regex[:valid_port_number]}))? # $4 Port number (optional)
+ (/#{Twitter::Regex[:valid_url_path]}*)? # $5 URL Path and anchor
+ (\?#{Twitter::Regex[:valid_url_query_chars]}*#{Twitter::Regex[:valid_url_query_ending_chars]})? # $6 Query String
+ )
+ }iox
+
+ def call(status)
+ @status = status
+ @url = parse_urls
+
+ return if @url.nil? || @status.preview_cards.any?
+
+ @url = @url.to_s
+
+ RedisLock.acquire(lock_options) do |lock|
+ if lock.acquired?
+ @card = PreviewCard.find_by(url: @url)
+ process_url if @card.nil? || @card.updated_at <= 2.weeks.ago || @card.missing_image?
+ else
+ raise Mastodon::RaceConditionError
+ end
+ end
+
+ attach_card if @card&.persisted?
+ rescue HTTP::Error, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError => e
+ Rails.logger.debug "Error fetching link #{@url}: #{e}"
+ nil
+ end
+
+ private
+
+ def process_url
+ @card ||= PreviewCard.new(url: @url)
+
+<<<<<<< HEAD
+ Request.new(:get, @url).perform do |res|
+ if res.code == 200 && res.mime_type.end_with?('text/html')
+=======
+ attempt_oembed || attempt_opengraph
+ end
+
+ def html
+ return @html if defined?(@html)
+
+ Request.new(:get, @url).add_headers('Accept' => 'text/html', 'User-Agent' => Mastodon::Version.user_agent + ' Bot').perform do |res|
+ if res.code == 200 && res.mime_type == 'text/html'
+>>>>>>> master
+ @html = res.body_with_limit
+ @html_charset = res.charset
+ else
+ @html = nil
+ @html_charset = nil
+ end
+ end
+ end
+
+ def attach_card
+ @status.preview_cards << @card
+ Rails.cache.delete(@status)
+ end
+
+ def parse_urls
+ if @status.local?
+ urls = @status.text.scan(URL_PATTERN).map { |array| Addressable::URI.parse(array[0]).normalize }
+ else
+ html = Nokogiri::HTML(@status.text)
+ links = html.css('a')
+ urls = links.map { |a| Addressable::URI.parse(a['href']) unless skip_link?(a) }.compact.map(&:normalize).compact
+ end
+
+ urls.reject { |uri| bad_url?(uri) }.first
+ end
+
+ def bad_url?(uri)
+ # Avoid local instance URLs and invalid URLs
+ uri.host.blank? || TagManager.instance.local_url?(uri.to_s) || !%w(http https).include?(uri.scheme)
+ end
+
+ def mention_link?(a)
+ @status.mentions.any? do |mention|
+ a['href'] == ActivityPub::TagManager.instance.url_for(mention.account)
+ end
+ end
+
+ def skip_link?(a)
+ # Avoid links for hashtags and mentions (microformats)
+ a['rel']&.include?('tag') || a['class']&.match?(/u-url|h-card/) || mention_link?(a)
+ end
+
+ def attempt_oembed
+ service = FetchOEmbedService.new
+ url_domain = Addressable::URI.parse(@url).normalized_host
+ cached_endpoint = Rails.cache.read("oembed_endpoint:#{url_domain}")
+
+ embed = service.call(@url, cached_endpoint: cached_endpoint) unless cached_endpoint.nil?
+ embed ||= service.call(@url, html: html) unless html.nil?
+
+ return false if embed.nil?
+
+ url = Addressable::URI.parse(service.endpoint_url)
+
+ @card.type = embed[:type]
+ @card.title = embed[:title] || ''
+ @card.author_name = embed[:author_name] || ''
+ @card.author_url = embed[:author_url].present? ? (url + embed[:author_url]).to_s : ''
+ @card.provider_name = embed[:provider_name] || ''
+ @card.provider_url = embed[:provider_url].present? ? (url + embed[:provider_url]).to_s : ''
+ @card.width = 0
+ @card.height = 0
+
+ case @card.type
+ when 'link'
+ @card.image_remote_url = (url + embed[:thumbnail_url]).to_s if embed[:thumbnail_url].present?
+ when 'photo'
+ return false if embed[:url].blank?
+
+ @card.embed_url = (url + embed[:url]).to_s
+ @card.image_remote_url = (url + embed[:url]).to_s
+ @card.width = embed[:width].presence || 0
+ @card.height = embed[:height].presence || 0
+ when 'video'
+ @card.width = embed[:width].presence || 0
+ @card.height = embed[:height].presence || 0
+ @card.html = Formatter.instance.sanitize(embed[:html], Sanitize::Config::MASTODON_OEMBED)
+ @card.image_remote_url = (url + embed[:thumbnail_url]).to_s if embed[:thumbnail_url].present?
+ when 'rich'
+ # Most providers rely on