Merge pull request #969 from kmycode/upstream-20240123

Upstream 20240123
This commit is contained in:
KMY(雪あすか) 2025-01-23 19:16:23 +09:00 committed by GitHub
commit 22bf14e9f0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
320 changed files with 2589 additions and 2817 deletions

View file

@ -50,7 +50,7 @@ OTP_SECRET=
# Must be available (and set to same values) for all server processes # Must be available (and set to same values) for all server processes
# These are private/secret values, do not share outside hosting environment # These are private/secret values, do not share outside hosting environment
# Use `bin/rails db:encryption:init` to generate fresh secrets # Use `bin/rails db:encryption:init` to generate fresh secrets
# Do not change these secrets once in use, as this would cause data loss and other issues # Do NOT change these secrets once in use, as this would cause data loss and other issues
# ------------------ # ------------------
# ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= # ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=
# ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT= # ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=

View file

@ -94,20 +94,20 @@ GEM
ast (2.4.2) ast (2.4.2)
attr_required (1.0.2) attr_required (1.0.2)
aws-eventstream (1.3.0) aws-eventstream (1.3.0)
aws-partitions (1.1038.0) aws-partitions (1.1032.0)
aws-sdk-core (3.216.0) aws-sdk-core (3.214.1)
aws-eventstream (~> 1, >= 1.3.0) aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0) aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9) aws-sigv4 (~> 1.9)
jmespath (~> 1, >= 1.6.1) jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.97.0) aws-sdk-kms (1.96.0)
aws-sdk-core (~> 3, >= 3.216.0) aws-sdk-core (~> 3, >= 3.210.0)
aws-sigv4 (~> 1.5) aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.178.0) aws-sdk-s3 (1.177.0)
aws-sdk-core (~> 3, >= 3.216.0) aws-sdk-core (~> 3, >= 3.210.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5) aws-sigv4 (~> 1.5)
aws-sigv4 (1.11.0) aws-sigv4 (1.10.1)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
azure-blob (0.5.4) azure-blob (0.5.4)
rexml rexml
@ -283,7 +283,7 @@ GEM
hashie (5.0.0) hashie (5.0.0)
hcaptcha (7.1.0) hcaptcha (7.1.0)
json json
highline (3.1.1) highline (3.1.2)
reline reline
hiredis (0.6.3) hiredis (0.6.3)
hkdf (0.3.0) hkdf (0.3.0)
@ -302,7 +302,7 @@ GEM
httplog (1.7.0) httplog (1.7.0)
rack (>= 2.0) rack (>= 2.0)
rainbow (>= 2.0.0) rainbow (>= 2.0.0)
i18n (1.14.6) i18n (1.14.7)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
i18n-tasks (1.0.14) i18n-tasks (1.0.14)
activesupport (>= 4.0.2) activesupport (>= 4.0.2)
@ -319,7 +319,8 @@ GEM
activesupport (>= 3.0) activesupport (>= 3.0)
nokogiri (>= 1.6) nokogiri (>= 1.6)
io-console (0.8.0) io-console (0.8.0)
irb (1.14.3) irb (1.15.1)
pp (>= 0.6.0)
rdoc (>= 4.0.0) rdoc (>= 4.0.0)
reline (>= 0.4.2) reline (>= 0.4.2)
jd-paperclip-azure (3.0.0) jd-paperclip-azure (3.0.0)
@ -384,7 +385,7 @@ GEM
llhttp-ffi (0.5.0) llhttp-ffi (0.5.0)
ffi-compiler (~> 1.0) ffi-compiler (~> 1.0)
rake (~> 13.0) rake (~> 13.0)
logger (1.6.4) logger (1.6.5)
lograge (0.14.0) lograge (0.14.0)
actionpack (>= 4) actionpack (>= 4)
activesupport (>= 4) activesupport (>= 4)
@ -406,7 +407,7 @@ GEM
mime-types (3.6.0) mime-types (3.6.0)
logger logger
mime-types-data (~> 3.2015) mime-types-data (~> 3.2015)
mime-types-data (3.2024.1203) mime-types-data (3.2025.0107)
mini_mime (1.1.5) mini_mime (1.1.5)
mini_portile2 (2.8.8) mini_portile2 (2.8.8)
minitest (5.25.4) minitest (5.25.4)
@ -415,7 +416,7 @@ GEM
mutex_m (0.3.0) mutex_m (0.3.0)
net-http (0.6.0) net-http (0.6.0)
uri uri
net-imap (0.5.4) net-imap (0.5.5)
date date
net-protocol net-protocol
net-ldap (0.19.0) net-ldap (0.19.0)
@ -426,7 +427,7 @@ GEM
net-smtp (0.5.0) net-smtp (0.5.0)
net-protocol net-protocol
nio4r (2.7.4) nio4r (2.7.4)
nokogiri (1.18.1) nokogiri (1.18.2)
mini_portile2 (~> 2.8.2) mini_portile2 (~> 2.8.2)
racc (~> 1.4) racc (~> 1.4)
oj (3.16.9) oj (3.16.9)
@ -559,7 +560,7 @@ GEM
ox (2.14.20) ox (2.14.20)
bigdecimal (>= 3.0) bigdecimal (>= 3.0)
parallel (1.26.3) parallel (1.26.3)
parser (3.3.6.0) parser (3.3.7.0)
ast (~> 2.4.1) ast (~> 2.4.1)
racc racc
parslet (2.0.0) parslet (2.0.0)
@ -568,6 +569,8 @@ GEM
pg (1.5.9) pg (1.5.9)
pghero (3.6.1) pghero (3.6.1)
activerecord (>= 6.1) activerecord (>= 6.1)
pp (0.6.2)
prettyprint
premailer (1.27.0) premailer (1.27.0)
addressable addressable
css_parser (>= 1.19.0) css_parser (>= 1.19.0)
@ -576,12 +579,13 @@ GEM
actionmailer (>= 3) actionmailer (>= 3)
net-smtp net-smtp
premailer (~> 1.7, >= 1.7.9) premailer (~> 1.7, >= 1.7.9)
prettyprint (0.2.0)
propshaft (1.1.0) propshaft (1.1.0)
actionpack (>= 7.0.0) actionpack (>= 7.0.0)
activesupport (>= 7.0.0) activesupport (>= 7.0.0)
rack rack
railties (>= 7.0.0) railties (>= 7.0.0)
psych (5.2.2) psych (5.2.3)
date date
stringio stringio
public_suffix (6.0.1) public_suffix (6.0.1)
@ -658,7 +662,7 @@ GEM
link_header (~> 0.0, >= 0.0.8) link_header (~> 0.0, >= 0.0.8)
rdf-normalize (0.7.0) rdf-normalize (0.7.0)
rdf (~> 3.3) rdf (~> 3.3)
rdoc (6.10.0) rdoc (6.11.0)
psych (>= 4.0.0) psych (>= 4.0.0)
redcarpet (3.6.0) redcarpet (3.6.0)
redis (4.8.1) redis (4.8.1)
@ -732,7 +736,7 @@ GEM
rack (>= 1.1) rack (>= 1.1)
rubocop (>= 1.52.0, < 2.0) rubocop (>= 1.52.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (3.3.0) rubocop-rspec (3.4.0)
rubocop (~> 1.61) rubocop (~> 1.61)
rubocop-rspec_rails (2.30.0) rubocop-rspec_rails (2.30.0)
rubocop (~> 1.61) rubocop (~> 1.61)
@ -757,7 +761,7 @@ GEM
activerecord (>= 4.0.0) activerecord (>= 4.0.0)
railties (>= 4.0.0) railties (>= 4.0.0)
securerandom (0.4.1) securerandom (0.4.1)
selenium-webdriver (4.27.0) selenium-webdriver (4.28.0)
base64 (~> 0.2) base64 (~> 0.2)
logger (~> 1.4) logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5) rexml (~> 3.2, >= 3.2.5)
@ -833,7 +837,7 @@ GEM
unf (~> 0.1.0) unf (~> 0.1.0)
tzinfo (2.0.6) tzinfo (2.0.6)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
tzinfo-data (1.2024.2) tzinfo-data (1.2025.1)
tzinfo (>= 1.0.0) tzinfo (>= 1.0.0)
unf (0.1.4) unf (0.1.4)
unf_ext unf_ext
@ -871,7 +875,8 @@ GEM
semantic_range (>= 2.3.0) semantic_range (>= 2.3.0)
webrick (1.9.1) webrick (1.9.1)
websocket (1.2.11) websocket (1.2.11)
websocket-driver (0.7.6) websocket-driver (0.7.7)
base64
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5) websocket-extensions (0.1.5)
wisper (2.0.1) wisper (2.0.1)
@ -1038,4 +1043,4 @@ RUBY VERSION
ruby 3.4.1p0 ruby 3.4.1p0
BUNDLED WITH BUNDLED WITH
2.6.2 2.6.3

View file

@ -34,6 +34,7 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController
:searchability, :searchability,
:hide_collections, :hide_collections,
:indexable, :indexable,
attribution_domains: [],
fields_attributes: [:name, :value] fields_attributes: [:name, :value]
) )
end end

View file

@ -56,12 +56,12 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
end end
def subscription_params def subscription_params
params.require(:subscription).permit(:endpoint, :standard, keys: [:auth, :p256dh]) params.expect(subscription: [:endpoint, :standard, keys: [:auth, :p256dh]])
end end
def data_params def data_params
return {} if params[:data].blank? return {} if params[:data].blank?
params.require(:data).permit(:policy, alerts: Notification::TYPES) params.expect(data: [:policy, alerts: Notification::TYPES])
end end
end end

View file

@ -66,7 +66,7 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
end end
def subscription_params def subscription_params
@subscription_params ||= params.require(:subscription).permit(:standard, :endpoint, keys: [:auth, :p256dh]) @subscription_params ||= params.expect(subscription: [:standard, :endpoint, keys: [:auth, :p256dh]])
end end
def web_push_subscription_params def web_push_subscription_params
@ -82,6 +82,6 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
end end
def data_params def data_params
@data_params ||= params.require(:data).permit(:policy, alerts: Notification::TYPES) @data_params ||= params.expect(data: [:policy, alerts: Notification::TYPES])
end end
end end

View file

@ -35,6 +35,6 @@ class Auth::SetupController < ApplicationController
end end
def user_params def user_params
params.require(:user).permit(:email) params.expect(user: [:email])
end end
end end

View file

@ -21,6 +21,6 @@ class Disputes::AppealsController < Disputes::BaseController
end end
def appeal_params def appeal_params
params.require(:appeal).permit(:text) params.expect(appeal: [:text])
end end
end end

View file

@ -48,7 +48,7 @@ class FiltersController < ApplicationController
end end
def resource_params def resource_params
params.require(:custom_filter).permit(:title, :expires_in, :filter_action, :exclude_follows, :exclude_localusers, :exclude_quote, :exclude_profile, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]) params.expect(custom_filter: [:title, :expires_in, :filter_action, :exclude_follows, :exclude_localusers, :exclude_quote, :exclude_profile, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]])
end end
def set_cache_headers def set_cache_headers

View file

@ -43,7 +43,7 @@ class InvitesController < ApplicationController
end end
def resource_params def resource_params
params.require(:invite).permit(:max_uses, :expires_in, :autofollow, :comment) params.expect(invite: [:max_uses, :expires_in, :autofollow, :comment])
end end
def set_cache_headers def set_cache_headers

View file

@ -30,7 +30,7 @@ class Settings::AliasesController < Settings::BaseController
private private
def resource_params def resource_params
params.require(:account_alias).permit(:acct) params.expect(account_alias: [:acct])
end end
def set_alias def set_alias

View file

@ -21,7 +21,7 @@ class Settings::DeletesController < Settings::BaseController
private private
def resource_params def resource_params
params.require(:form_delete_confirmation).permit(:password, :username) params.expect(form_delete_confirmation: [:password, :username])
end end
def require_not_suspended! def require_not_suspended!

View file

@ -44,6 +44,6 @@ class Settings::FeaturedTagsController < Settings::BaseController
end end
def featured_tag_params def featured_tag_params
params.require(:featured_tag).permit(:name) params.expect(featured_tag: [:name])
end end
end end

View file

@ -90,7 +90,7 @@ class Settings::ImportsController < Settings::BaseController
private private
def import_params def import_params
params.require(:form_import).permit(:data, :type, :mode) params.expect(form_import: [:data, :type, :mode])
end end
def set_bulk_import def set_bulk_import

View file

@ -33,6 +33,6 @@ class Settings::Migration::RedirectsController < Settings::BaseController
private private
def resource_params def resource_params
params.require(:form_redirect).permit(:acct, :current_password, :current_username) params.expect(form_redirect: [:acct, :current_password, :current_username])
end end
end end

View file

@ -27,7 +27,7 @@ class Settings::MigrationsController < Settings::BaseController
private private
def resource_params def resource_params
params.require(:account_migration).permit(:acct, :current_password, :current_username) params.expect(account_migration: [:acct, :current_password, :current_username])
end end
def set_migrations def set_migrations

View file

@ -18,7 +18,7 @@ class Settings::PrivacyController < Settings::BaseController
private private
def account_params def account_params
params.require(:account).permit(:discoverable, :unlocked, :indexable, :show_collections, settings: UserSettings.keys) params.expect(account: [:discoverable, :unlocked, :indexable, :show_collections, settings: UserSettings.keys])
end end
def set_account def set_account

View file

@ -20,7 +20,7 @@ class Settings::ProfilesController < Settings::BaseController
private private
def account_params def account_params
params.require(:account).permit(:display_name, :note, :bio_markdown, :avatar, :header, :bot, :my_actor_type, fields_attributes: [:name, :value]) params.expect(account: [:display_name, :note, :bio_markdown, :avatar, :header, :bot, :my_actor_type, fields_attributes: [[:name, :value]]])
end end
def set_account def set_account

View file

@ -18,7 +18,9 @@ class Settings::VerificationsController < Settings::BaseController
private private
def account_params def account_params
params.require(:account).permit(:attribution_domains_as_text) params.require(:account).permit(:attribution_domains).tap do |params|
params[:attribution_domains] = params[:attribution_domains].split if params[:attribution_domains]
end
end end
def set_account def set_account

View file

@ -15,8 +15,6 @@ class StatusesCleanupController < ApplicationController
else else
render :show render :show
end end
rescue ActionController::ParameterMissing
# Do nothing
end end
def require_functional! def require_functional!
@ -30,7 +28,7 @@ class StatusesCleanupController < ApplicationController
end end
def resource_params def resource_params
params.require(:account_statuses_cleanup_policy).permit(:enabled, :min_status_age, :keep_direct, :keep_pinned, :keep_polls, :keep_media, :keep_self_fav, :keep_self_bookmark, :keep_self_emoji, :min_favs, :min_reblogs, :min_emojis) params.expect(account_statuses_cleanup_policy: [:enabled, :min_status_age, :keep_direct, :keep_pinned, :keep_polls, :keep_media, :keep_self_fav, :keep_self_bookmark, :keep_self_emoji, :min_favs, :min_reblogs, :min_emojis])
end end
def set_cache_headers def set_cache_headers

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -441,7 +441,7 @@ export function initMediaEditModal(id) {
dispatch(openModal({ dispatch(openModal({
modalType: 'FOCAL_POINT', modalType: 'FOCAL_POINT',
modalProps: { id }, modalProps: { mediaId: id },
})); }));
}; };
} }

View file

@ -0,0 +1,70 @@
import type { List as ImmutableList, Map as ImmutableMap } from 'immutable';
import { apiUpdateMedia } from 'mastodon/api/compose';
import type { ApiMediaAttachmentJSON } from 'mastodon/api_types/media_attachments';
import type { MediaAttachment } from 'mastodon/models/media_attachment';
import { createDataLoadingThunk } from 'mastodon/store/typed_functions';
type SimulatedMediaAttachmentJSON = ApiMediaAttachmentJSON & {
unattached?: boolean;
};
const simulateModifiedApiResponse = (
media: MediaAttachment,
params: { description?: string; focus?: string },
): SimulatedMediaAttachmentJSON => {
const [x, y] = (params.focus ?? '').split(',');
const data = {
...media.toJS(),
...params,
meta: {
focus: {
x: parseFloat(x ?? '0'),
y: parseFloat(y ?? '0'),
},
},
} as unknown as SimulatedMediaAttachmentJSON;
return data;
};
export const changeUploadCompose = createDataLoadingThunk(
'compose/changeUpload',
async (
{
id,
...params
}: {
id: string;
description: string;
focus: string;
},
{ getState },
) => {
const media = (
(getState().compose as ImmutableMap<string, unknown>).get(
'media_attachments',
) as ImmutableList<MediaAttachment>
).find((item) => item.get('id') === id);
// Editing already-attached media is deferred to editing the post itself.
// For simplicity's sake, fake an API reply.
if (media && !media.get('unattached')) {
return new Promise<SimulatedMediaAttachmentJSON>((resolve) => {
resolve(simulateModifiedApiResponse(media, params));
});
}
return apiUpdateMedia(id, params);
},
(media: SimulatedMediaAttachmentJSON) => {
return {
media,
attached: typeof media.unattached !== 'undefined' && !media.unattached,
};
},
{
useLoadingBar: false,
},
);

View file

@ -9,6 +9,7 @@ export type ModalType = keyof typeof MODAL_COMPONENTS;
interface OpenModalPayload { interface OpenModalPayload {
modalType: ModalType; modalType: ModalType;
modalProps: ModalProps; modalProps: ModalProps;
previousModalProps?: ModalProps;
} }
export const openModal = createAction<OpenModalPayload>('MODAL_OPEN'); export const openModal = createAction<OpenModalPayload>('MODAL_OPEN');

View file

@ -0,0 +1,7 @@
import { apiRequestPut } from 'mastodon/api';
import type { ApiMediaAttachmentJSON } from 'mastodon/api_types/media_attachments';
export const apiUpdateMedia = (
id: string,
params?: { description?: string; focus?: string },
) => apiRequestPut<ApiMediaAttachmentJSON>(`v1/media/${id}`, params);

View file

@ -7,6 +7,7 @@ interface BaseProps
extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> { extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
block?: boolean; block?: boolean;
secondary?: boolean; secondary?: boolean;
compact?: boolean;
dangerous?: boolean; dangerous?: boolean;
} }
@ -27,6 +28,7 @@ export const Button: React.FC<Props> = ({
disabled, disabled,
block, block,
secondary, secondary,
compact,
dangerous, dangerous,
className, className,
title, title,
@ -47,6 +49,7 @@ export const Button: React.FC<Props> = ({
<button <button
className={classNames('button', className, { className={classNames('button', className, {
'button-secondary': secondary, 'button-secondary': secondary,
'button--compact': compact,
'button--block': block, 'button--block': block,
'button--dangerous': dangerous, 'button--dangerous': dangerous,
})} })}

View file

@ -2,6 +2,8 @@ import { useCallback, useEffect } from 'react';
import { useIntl, defineMessages } from 'react-intl'; import { useIntl, defineMessages } from 'react-intl';
import classNames from 'classnames';
import { useIdentity } from '@/mastodon/identity_context'; import { useIdentity } from '@/mastodon/identity_context';
import { fetchRelationships, followAccount } from 'mastodon/actions/accounts'; import { fetchRelationships, followAccount } from 'mastodon/actions/accounts';
import { openModal } from 'mastodon/actions/modal'; import { openModal } from 'mastodon/actions/modal';
@ -20,7 +22,8 @@ const messages = defineMessages({
export const FollowButton: React.FC<{ export const FollowButton: React.FC<{
accountId?: string; accountId?: string;
}> = ({ accountId }) => { compact?: boolean;
}> = ({ accountId, compact }) => {
const intl = useIntl(); const intl = useIntl();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const { signedIn } = useIdentity(); const { signedIn } = useIdentity();
@ -93,7 +96,9 @@ export const FollowButton: React.FC<{
href='/settings/profile' href='/settings/profile'
target='_blank' target='_blank'
rel='noopener' rel='noopener'
className='button button-secondary' className={classNames('button button-secondary', {
'button--compact': compact,
})}
> >
{label} {label}
</a> </a>
@ -110,6 +115,7 @@ export const FollowButton: React.FC<{
(account?.suspended || !!account?.moved)) (account?.suspended || !!account?.moved))
} }
secondary={following} secondary={following}
compact={compact}
className={following ? 'button--destructive' : undefined} className={following ? 'button--destructive' : undefined}
> >
{label} {label}

View file

@ -1,46 +1,39 @@
import { useCallback, useState } from 'react'; import { useCallback, useState, forwardRef } from 'react';
interface Props { interface Props {
src: string; src: string;
key: string;
alt?: string; alt?: string;
lang?: string; lang?: string;
width: number; width?: number;
height: number; height?: number;
onClick?: () => void; onClick?: React.MouseEventHandler;
onMouseDown?: React.MouseEventHandler;
onTouchStart?: React.TouchEventHandler;
} }
export const GIFV: React.FC<Props> = ({ export const GIFV = forwardRef<HTMLVideoElement, Props>(
src, (
alt, { src, alt, lang, width, height, onClick, onMouseDown, onTouchStart },
lang, ref,
width, ) => {
height,
onClick,
}) => {
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);
const handleLoadedData: React.ReactEventHandler<HTMLVideoElement> = const handleLoadedData = useCallback(() => {
useCallback(() => {
setLoading(false); setLoading(false);
}, [setLoading]); }, [setLoading]);
const handleClick: React.MouseEventHandler = useCallback( const handleClick = useCallback(
(e) => { (e: React.MouseEvent) => {
if (onClick) {
e.stopPropagation(); e.stopPropagation();
onClick(); onClick?.(e);
}
}, },
[onClick], [onClick],
); );
return ( return (
<div className='gifv' style={{ position: 'relative' }}> <div className='gifv'>
{loading && ( {loading && (
<canvas <canvas
width={width}
height={height}
role='button' role='button'
tabIndex={0} tabIndex={0}
aria-label={alt} aria-label={alt}
@ -51,20 +44,27 @@ export const GIFV: React.FC<Props> = ({
)} )}
<video <video
ref={ref}
src={src} src={src}
role='button' role='button'
tabIndex={0} tabIndex={0}
aria-label={alt} aria-label={alt}
title={alt} title={alt}
lang={lang} lang={lang}
width={width}
height={height}
muted muted
loop loop
autoPlay autoPlay
playsInline playsInline
onClick={handleClick} onClick={handleClick}
onLoadedData={handleLoadedData} onLoadedData={handleLoadedData}
style={{ position: loading ? 'absolute' : 'static', top: 0, left: 0 }} onMouseDown={onMouseDown}
onTouchStart={onTouchStart}
/> />
</div> </div>
); );
}; },
);
GIFV.displayName = 'GIFV';

View file

@ -118,9 +118,9 @@ class ModalRoot extends PureComponent {
} }
_ensureHistoryBuffer () { _ensureHistoryBuffer () {
const { pathname, state } = this.history.location; const { pathname, search, hash, state } = this.history.location;
if (!state || state.mastodonModalKey !== this._modalHistoryKey) { if (!state || state.mastodonModalKey !== this._modalHistoryKey) {
this.history.push(pathname, { ...state, mastodonModalKey: this._modalHistoryKey }); this.history.push({ pathname, search, hash }, { ...state, mastodonModalKey: this._modalHistoryKey });
} }
} }

View file

@ -1,86 +0,0 @@
import PropTypes from 'prop-types';
import { useState, useRef, useCallback } from 'react';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import Overlay from 'react-overlays/Overlay';
import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react';
import BadgeIcon from '@/material-icons/400-24px/badge.svg?react';
import GlobeIcon from '@/material-icons/400-24px/globe.svg?react';
import { Icon } from 'mastodon/components/icon';
export const DomainPill = ({ domain, username, isSelf }) => {
const [open, setOpen] = useState(false);
const [expanded, setExpanded] = useState(false);
const triggerRef = useRef(null);
const handleClick = useCallback(() => {
setOpen(!open);
}, [open, setOpen]);
const handleExpandClick = useCallback(() => {
setExpanded(!expanded);
}, [expanded, setExpanded]);
return (
<>
<button className={classNames('account__domain-pill', { active: open })} ref={triggerRef} onClick={handleClick}>{domain}</button>
<Overlay show={open} rootClose onHide={handleClick} offset={[5, 5]} target={triggerRef}>
{({ props }) => (
<div {...props} className='account__domain-pill__popout dropdown-animation'>
<div className='account__domain-pill__popout__header'>
<div className='account__domain-pill__popout__header__icon'><Icon icon={BadgeIcon} /></div>
<h3><FormattedMessage id='domain_pill.whats_in_a_handle' defaultMessage="What's in a handle?" /></h3>
</div>
<div className='account__domain-pill__popout__handle'>
<div className='account__domain-pill__popout__handle__label'>{isSelf ? <FormattedMessage id='domain_pill.your_handle' defaultMessage='Your handle:' /> : <FormattedMessage id='domain_pill.their_handle' defaultMessage='Their handle:' />}</div>
<div className='account__domain-pill__popout__handle__handle'>@{username}@{domain}</div>
</div>
<div className='account__domain-pill__popout__parts'>
<div>
<div className='account__domain-pill__popout__parts__icon'><Icon icon={AlternateEmailIcon} /></div>
<div>
<h6><FormattedMessage id='domain_pill.username' defaultMessage='Username' /></h6>
<p>{isSelf ? <FormattedMessage id='domain_pill.your_username' defaultMessage='Your unique identifier on this server. Its possible to find users with the same username on different servers.' /> : <FormattedMessage id='domain_pill.their_username' defaultMessage='Their unique identifier on their server. Its possible to find users with the same username on different servers.' />}</p>
</div>
</div>
<div>
<div className='account__domain-pill__popout__parts__icon'><Icon icon={GlobeIcon} /></div>
<div>
<h6><FormattedMessage id='domain_pill.server' defaultMessage='Server' /></h6>
<p>{isSelf ? <FormattedMessage id='domain_pill.your_server' defaultMessage='Your digital home, where all of your posts live. Dont like this one? Transfer servers at any time and bring your followers, too.' /> : <FormattedMessage id='domain_pill.their_server' defaultMessage='Their digital home, where all of their posts live.' />}</p>
</div>
</div>
</div>
<p>{isSelf ? <FormattedMessage id='domain_pill.who_you_are' defaultMessage='Because your handle says who you are and where you are, people can interact with you across the social web of <button>ActivityPub-powered platforms</button>.' values={{ button: x => <button onClick={handleExpandClick} className='link-button'>{x}</button> }} /> : <FormattedMessage id='domain_pill.who_they_are' defaultMessage='Since handles say who someone is and where they are, you can interact with people across the social web of <button>ActivityPub-powered platforms</button>.' values={{ button: x => <button onClick={handleExpandClick} className='link-button'>{x}</button> }} />}</p>
{expanded && (
<>
<p><FormattedMessage id='domain_pill.activitypub_like_language' defaultMessage='ActivityPub is like the language Mastodon speaks with other social networks.' /></p>
<p><FormattedMessage id='domain_pill.activitypub_lets_connect' defaultMessage='It lets you connect and interact with people not just on Mastodon, but across different social apps too.' /></p>
</>
)}
</div>
)}
</Overlay>
</>
);
};
DomainPill.propTypes = {
username: PropTypes.string.isRequired,
domain: PropTypes.string.isRequired,
isSelf: PropTypes.bool,
};

View file

@ -0,0 +1,197 @@
import { useState, useRef, useCallback } from 'react';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import Overlay from 'react-overlays/Overlay';
import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react';
import BadgeIcon from '@/material-icons/400-24px/badge.svg?react';
import GlobeIcon from '@/material-icons/400-24px/globe.svg?react';
import { Icon } from 'mastodon/components/icon';
export const DomainPill: React.FC<{
domain: string;
username: string;
isSelf: boolean;
}> = ({ domain, username, isSelf }) => {
const [open, setOpen] = useState(false);
const [expanded, setExpanded] = useState(false);
const triggerRef = useRef(null);
const handleClick = useCallback(() => {
setOpen(!open);
}, [open, setOpen]);
const handleExpandClick = useCallback(() => {
setExpanded(!expanded);
}, [expanded, setExpanded]);
return (
<>
<button
className={classNames('account__domain-pill', { active: open })}
ref={triggerRef}
onClick={handleClick}
>
{domain}
</button>
<Overlay
show={open}
rootClose
onHide={handleClick}
offset={[5, 5]}
target={triggerRef}
>
{({ props }) => (
<div
{...props}
className='account__domain-pill__popout dropdown-animation'
>
<div className='account__domain-pill__popout__header'>
<div className='account__domain-pill__popout__header__icon'>
<Icon id='' icon={BadgeIcon} />
</div>
<h3>
<FormattedMessage
id='domain_pill.whats_in_a_handle'
defaultMessage="What's in a handle?"
/>
</h3>
</div>
<div className='account__domain-pill__popout__handle'>
<div className='account__domain-pill__popout__handle__label'>
{isSelf ? (
<FormattedMessage
id='domain_pill.your_handle'
defaultMessage='Your handle:'
/>
) : (
<FormattedMessage
id='domain_pill.their_handle'
defaultMessage='Their handle:'
/>
)}
</div>
<div className='account__domain-pill__popout__handle__handle'>
@{username}@{domain}
</div>
</div>
<div className='account__domain-pill__popout__parts'>
<div>
<div className='account__domain-pill__popout__parts__icon'>
<Icon id='' icon={AlternateEmailIcon} />
</div>
<div>
<h6>
<FormattedMessage
id='domain_pill.username'
defaultMessage='Username'
/>
</h6>
<p>
{isSelf ? (
<FormattedMessage
id='domain_pill.your_username'
defaultMessage='Your unique identifier on this server. Its possible to find users with the same username on different servers.'
/>
) : (
<FormattedMessage
id='domain_pill.their_username'
defaultMessage='Their unique identifier on their server. Its possible to find users with the same username on different servers.'
/>
)}
</p>
</div>
</div>
<div>
<div className='account__domain-pill__popout__parts__icon'>
<Icon id='' icon={GlobeIcon} />
</div>
<div>
<h6>
<FormattedMessage
id='domain_pill.server'
defaultMessage='Server'
/>
</h6>
<p>
{isSelf ? (
<FormattedMessage
id='domain_pill.your_server'
defaultMessage='Your digital home, where all of your posts live. Dont like this one? Transfer servers at any time and bring your followers, too.'
/>
) : (
<FormattedMessage
id='domain_pill.their_server'
defaultMessage='Their digital home, where all of their posts live.'
/>
)}
</p>
</div>
</div>
</div>
<p>
{isSelf ? (
<FormattedMessage
id='domain_pill.who_you_are'
defaultMessage='Because your handle says who you are and where you are, people can interact with you across the social web of <button>ActivityPub-powered platforms</button>.'
values={{
button: (x) => (
<button
onClick={handleExpandClick}
className='link-button'
>
{x}
</button>
),
}}
/>
) : (
<FormattedMessage
id='domain_pill.who_they_are'
defaultMessage='Since handles say who someone is and where they are, you can interact with people across the social web of <button>ActivityPub-powered platforms</button>.'
values={{
button: (x) => (
<button
onClick={handleExpandClick}
className='link-button'
>
{x}
</button>
),
}}
/>
)}
</p>
{expanded && (
<>
<p>
<FormattedMessage
id='domain_pill.activitypub_like_language'
defaultMessage='ActivityPub is like the language Mastodon speaks with other social networks.'
/>
</p>
<p>
<FormattedMessage
id='domain_pill.activitypub_lets_connect'
defaultMessage='It lets you connect and interact with people not just on Mastodon, but across different social apps too.'
/>
</p>
</>
)}
</div>
)}
</Overlay>
</>
);
};

View file

@ -0,0 +1,531 @@
import {
useState,
useCallback,
useRef,
useEffect,
useImperativeHandle,
forwardRef,
} from 'react';
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
import classNames from 'classnames';
import type { List as ImmutableList, Map as ImmutableMap } from 'immutable';
import Textarea from 'react-textarea-autosize';
import { length } from 'stringz';
// eslint-disable-next-line import/extensions
import tesseractWorkerPath from 'tesseract.js/dist/worker.min.js';
// eslint-disable-next-line import/no-extraneous-dependencies
import tesseractCorePath from 'tesseract.js-core/tesseract-core.wasm.js';
import { showAlertForError } from 'mastodon/actions/alerts';
import { uploadThumbnail } from 'mastodon/actions/compose';
import { changeUploadCompose } from 'mastodon/actions/compose_typed';
import { Button } from 'mastodon/components/button';
import { GIFV } from 'mastodon/components/gifv';
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
import { Skeleton } from 'mastodon/components/skeleton';
import Audio from 'mastodon/features/audio';
import { CharacterCounter } from 'mastodon/features/compose/components/character_counter';
import { Tesseract as fetchTesseract } from 'mastodon/features/ui/util/async-components';
import Video, { getPointerPosition } from 'mastodon/features/video';
import { me } from 'mastodon/initial_state';
import type { MediaAttachment } from 'mastodon/models/media_attachment';
import { useAppSelector, useAppDispatch } from 'mastodon/store';
import { assetHost } from 'mastodon/utils/config';
const messages = defineMessages({
placeholderVisual: {
id: 'alt_text_modal.describe_for_people_with_visual_impairments',
defaultMessage: 'Describe this for people with visual impairments…',
},
placeholderHearing: {
id: 'alt_text_modal.describe_for_people_with_hearing_impairments',
defaultMessage: 'Describe this for people with hearing impairments…',
},
discardMessage: {
id: 'confirmations.discard_edit_media.message',
defaultMessage:
'You have unsaved changes to the media description or preview, discard them anyway?',
},
discardConfirm: {
id: 'confirmations.discard_edit_media.confirm',
defaultMessage: 'Discard',
},
});
const MAX_LENGTH = 1500;
type FocalPoint = [number, number];
const UploadButton: React.FC<{
children: React.ReactNode;
onSelectFile: (arg0: File) => void;
mimeTypes: string;
}> = ({ children, onSelectFile, mimeTypes }) => {
const fileRef = useRef<HTMLInputElement>(null);
const handleClick = useCallback(() => {
fileRef.current?.click();
}, []);
const handleChange = useCallback(
(e: React.ChangeEvent<HTMLInputElement>) => {
const file = e.target.files?.[0];
if (file) {
onSelectFile(file);
}
},
[onSelectFile],
);
return (
<label>
<Button onClick={handleClick}>{children}</Button>
<input
id='upload-modal__thumbnail'
ref={fileRef}
type='file'
accept={mimeTypes}
onChange={handleChange}
style={{ display: 'none' }}
/>
</label>
);
};
const Preview: React.FC<{
mediaId: string;
position: FocalPoint;
onPositionChange: (arg0: FocalPoint) => void;
}> = ({ mediaId, position, onPositionChange }) => {
const media = useAppSelector((state) =>
(
(state.compose as ImmutableMap<string, unknown>).get(
'media_attachments',
) as ImmutableList<MediaAttachment>
).find((x) => x.get('id') === mediaId),
);
const account = useAppSelector((state) =>
me ? state.accounts.get(me) : undefined,
);
const [dragging, setDragging] = useState(false);
const [x, y] = position;
const nodeRef = useRef<HTMLImageElement | HTMLVideoElement | null>(null);
const draggingRef = useRef<boolean>(false);
const setRef = useCallback(
(e: HTMLImageElement | HTMLVideoElement | null) => {
nodeRef.current = e;
},
[],
);
const handleMouseDown = useCallback(
(e: React.MouseEvent) => {
if (e.button !== 0) {
return;
}
const { x, y } = getPointerPosition(nodeRef.current, e);
setDragging(true);
draggingRef.current = true;
onPositionChange([x, y]);
},
[setDragging, onPositionChange],
);
const handleTouchStart = useCallback(
(e: React.TouchEvent) => {
const { x, y } = getPointerPosition(nodeRef.current, e);
setDragging(true);
draggingRef.current = true;
onPositionChange([x, y]);
},
[setDragging, onPositionChange],
);
useEffect(() => {
const handleMouseUp = () => {
setDragging(false);
draggingRef.current = false;
};
const handleMouseMove = (e: MouseEvent) => {
if (draggingRef.current) {
const { x, y } = getPointerPosition(nodeRef.current, e);
onPositionChange([x, y]);
}
};
const handleTouchEnd = () => {
setDragging(false);
draggingRef.current = false;
};
const handleTouchMove = (e: TouchEvent) => {
if (draggingRef.current) {
const { x, y } = getPointerPosition(nodeRef.current, e);
onPositionChange([x, y]);
}
};
document.addEventListener('mouseup', handleMouseUp);
document.addEventListener('mousemove', handleMouseMove);
document.addEventListener('touchend', handleTouchEnd);
document.addEventListener('touchmove', handleTouchMove);
return () => {
document.removeEventListener('mouseup', handleMouseUp);
document.removeEventListener('mousemove', handleMouseMove);
document.removeEventListener('touchend', handleTouchEnd);
document.removeEventListener('touchmove', handleTouchMove);
};
}, [setDragging, onPositionChange]);
if (!media) {
return null;
}
if (media.get('type') === 'image') {
return (
<div className={classNames('focal-point', { dragging })}>
<img
ref={setRef}
draggable={false}
src={media.get('url') as string}
alt=''
role='presentation'
onMouseDown={handleMouseDown}
onTouchStart={handleTouchStart}
/>
<div
className='focal-point__reticle'
style={{ top: `${y * 100}%`, left: `${x * 100}%` }}
/>
</div>
);
} else if (media.get('type') === 'gifv') {
return (
<div className={classNames('focal-point', { dragging })}>
<GIFV
ref={setRef}
src={media.get('url') as string}
alt=''
onMouseDown={handleMouseDown}
onTouchStart={handleTouchStart}
/>
<div
className='focal-point__reticle'
style={{ top: `${y * 100}%`, left: `${x * 100}%` }}
/>
</div>
);
} else if (media.get('type') === 'video') {
return (
<Video
preview={media.get('preview_url') as string}
frameRate={media.getIn(['meta', 'original', 'frame_rate']) as string}
blurhash={media.get('blurhash') as string}
src={media.get('url') as string}
detailed
inline
editable
/>
);
} else if (media.get('type') === 'audio') {
return (
<Audio
src={media.get('url') as string}
duration={media.getIn(['meta', 'original', 'duration'], 0) as number}
poster={
(media.get('preview_url') as string | undefined) ??
account?.avatar_static
}
backgroundColor={
media.getIn(['meta', 'colors', 'background']) as string
}
foregroundColor={
media.getIn(['meta', 'colors', 'foreground']) as string
}
accentColor={media.getIn(['meta', 'colors', 'accent']) as string}
editable
/>
);
} else {
return null;
}
};
interface RestoreProps {
previousDescription: string;
previousPosition: FocalPoint;
}
interface Props {
mediaId: string;
onClose: () => void;
}
interface ConfirmationMessage {
message: string;
confirm: string;
props?: RestoreProps;
}
export interface ModalRef {
getCloseConfirmationMessage: () => null | ConfirmationMessage;
}
export const AltTextModal = forwardRef<ModalRef, Props & Partial<RestoreProps>>(
({ mediaId, previousDescription, previousPosition, onClose }, ref) => {
const intl = useIntl();
const dispatch = useAppDispatch();
const media = useAppSelector((state) =>
(
(state.compose as ImmutableMap<string, unknown>).get(
'media_attachments',
) as ImmutableList<MediaAttachment>
).find((x) => x.get('id') === mediaId),
);
const lang = useAppSelector(
(state) =>
(state.compose as ImmutableMap<string, unknown>).get('lang') as string,
);
const focusX =
(media?.getIn(['meta', 'focus', 'x'], 0) as number | undefined) ?? 0;
const focusY =
(media?.getIn(['meta', 'focus', 'y'], 0) as number | undefined) ?? 0;
const [description, setDescription] = useState(
previousDescription ??
(media?.get('description') as string | undefined) ??
'',
);
const [position, setPosition] = useState<FocalPoint>(
previousPosition ?? [focusX / 2 + 0.5, focusY / -2 + 0.5],
);
const [isDetecting, setIsDetecting] = useState(false);
const [isSaving, setIsSaving] = useState(false);
const dirtyRef = useRef(
previousDescription || previousPosition ? true : false,
);
const type = media?.get('type') as string;
const valid = length(description) <= MAX_LENGTH;
const handleDescriptionChange = useCallback(
(e: React.ChangeEvent<HTMLTextAreaElement>) => {
setDescription(e.target.value);
dirtyRef.current = true;
},
[setDescription],
);
const handleThumbnailChange = useCallback(
(file: File) => {
dispatch(uploadThumbnail(mediaId, file));
},
[dispatch, mediaId],
);
const handlePositionChange = useCallback(
(position: FocalPoint) => {
setPosition(position);
dirtyRef.current = true;
},
[setPosition],
);
const handleSubmit = useCallback(() => {
setIsSaving(true);
dispatch(
changeUploadCompose({
id: mediaId,
description,
focus: `${((position[0] - 0.5) * 2).toFixed(2)},${((position[1] - 0.5) * -2).toFixed(2)}`,
}),
)
.then(() => {
setIsSaving(false);
dirtyRef.current = false;
onClose();
return '';
})
.catch((err: unknown) => {
setIsSaving(false);
dispatch(showAlertForError(err));
});
}, [dispatch, setIsSaving, mediaId, onClose, position, description]);
const handleKeyUp = useCallback(
(e: React.KeyboardEvent) => {
if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {
e.preventDefault();
if (valid) {
handleSubmit();
}
}
},
[handleSubmit, valid],
);
const handleDetectClick = useCallback(() => {
setIsDetecting(true);
fetchTesseract()
.then(async ({ createWorker }) => {
const worker = await createWorker('eng', 1, {
workerPath: tesseractWorkerPath as string,
corePath: tesseractCorePath as string,
langPath: `${assetHost}/ocr/lang-data`,
cacheMethod: 'write',
});
const image = URL.createObjectURL(media?.get('file') as File);
const result = await worker.recognize(image);
setDescription(result.data.text);
setIsDetecting(false);
await worker.terminate();
return '';
})
.catch(() => {
setIsDetecting(false);
});
}, [setDescription, setIsDetecting, media]);
useImperativeHandle(
ref,
() => ({
getCloseConfirmationMessage: () => {
if (dirtyRef.current) {
return {
message: intl.formatMessage(messages.discardMessage),
confirm: intl.formatMessage(messages.discardConfirm),
props: {
previousDescription: description,
previousPosition: position,
},
};
}
return null;
},
}),
[intl, description, position],
);
return (
<div className='modal-root__modal dialog-modal'>
<div className='dialog-modal__header'>
<Button onClick={handleSubmit} disabled={!valid}>
{isSaving ? (
<LoadingIndicator />
) : (
<FormattedMessage
id='alt_text_modal.done'
defaultMessage='Done'
/>
)}
</Button>
<span className='dialog-modal__header__title'>
<FormattedMessage
id='alt_text_modal.add_alt_text'
defaultMessage='Add alt text'
/>
</span>
<Button secondary onClick={onClose}>
<FormattedMessage
id='alt_text_modal.cancel'
defaultMessage='Cancel'
/>
</Button>
</div>
<div className='dialog-modal__content'>
<div className='dialog-modal__content__preview'>
<Preview
mediaId={mediaId}
position={position}
onPositionChange={handlePositionChange}
/>
{(type === 'audio' || type === 'video') && (
<UploadButton
onSelectFile={handleThumbnailChange}
mimeTypes='image/jpeg,image/png,image/gif,image/heic,image/heif,image/webp,image/avif'
>
<FormattedMessage
id='alt_text_modal.change_thumbnail'
defaultMessage='Change thumbnail'
/>
</UploadButton>
)}
</div>
<form
className='dialog-modal__content__form simple_form'
onSubmit={handleSubmit}
>
<div className='input'>
<div className='label_input'>
<Textarea
id='description'
value={isDetecting ? ' ' : description}
onChange={handleDescriptionChange}
onKeyUp={handleKeyUp}
lang={lang}
placeholder={intl.formatMessage(
type === 'audio'
? messages.placeholderHearing
: messages.placeholderVisual,
)}
minRows={3}
disabled={isDetecting}
/>
{isDetecting && (
<div className='label_input__loading-indicator'>
<Skeleton width='100%' />
<Skeleton width='100%' />
<Skeleton width='61%' />
</div>
)}
</div>
<div className='input__toolbar'>
<button
className='link-button'
onClick={handleDetectClick}
disabled={type !== 'image' || isDetecting}
>
<FormattedMessage
id='alt_text_modal.add_text_from_image'
defaultMessage='Add text from image'
/>
</button>
<CharacterCounter
max={MAX_LENGTH}
text={isDetecting ? '' : description}
/>
</div>
</div>
</form>
</div>
</div>
);
},
);
AltTextModal.displayName = 'AltTextModal';

View file

@ -581,10 +581,14 @@ class Audio extends PureComponent {
</div> </div>
<div className='video-player__buttons right'> <div className='video-player__buttons right'>
{!editable && <button type='button' title={intl.formatMessage(messages.hide)} aria-label={intl.formatMessage(messages.hide)} className='player-button' onClick={this.toggleReveal}><Icon id='eye-slash' icon={VisibilityOffIcon} /></button>} {!editable && (
<>
<button type='button' title={intl.formatMessage(messages.hide)} aria-label={intl.formatMessage(messages.hide)} className='player-button' onClick={this.toggleReveal}><Icon id='eye-slash' icon={VisibilityOffIcon} /></button>
<a title={intl.formatMessage(messages.download)} aria-label={intl.formatMessage(messages.download)} className='video-player__download__icon player-button' href={this.props.src} download> <a title={intl.formatMessage(messages.download)} aria-label={intl.formatMessage(messages.download)} className='video-player__download__icon player-button' href={this.props.src} download>
<Icon id={'download'} icon={DownloadIcon} /> <Icon id='download' icon={DownloadIcon} />
</a> </a>
</>
)}
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,18 +0,0 @@
import PropTypes from 'prop-types';
import { length } from 'stringz';
export const CharacterCounter = ({ text, max }) => {
const diff = max - length(text);
if (diff < 0) {
return <span className='character-counter character-counter--over'>{diff}</span>;
}
return <span className='character-counter'>{diff}</span>;
};
CharacterCounter.propTypes = {
text: PropTypes.string.isRequired,
max: PropTypes.number.isRequired,
};

View file

@ -0,0 +1,16 @@
import { length } from 'stringz';
export const CharacterCounter: React.FC<{
text: string;
max: number;
}> = ({ text, max }) => {
const diff = max - length(text);
if (diff < 0) {
return (
<span className='character-counter character-counter--over'>{diff}</span>
);
}
return <span className='character-counter'>{diff}</span>;
};

View file

@ -332,6 +332,7 @@ class ComposeForm extends ImmutablePureComponent {
<div className='compose-form__submit'> <div className='compose-form__submit'>
<Button <Button
type='submit' type='submit'
compact
text={intl.formatMessage(this.props.isEditing ? messages.saveChanges : (this.props.isInReply ? messages.reply : messages.publish))} text={intl.formatMessage(this.props.isEditing ? messages.saveChanges : (this.props.isInReply ? messages.reply : messages.publish))}
disabled={!this.canSubmit()} disabled={!this.canSubmit()}
/> />

View file

@ -27,6 +27,7 @@ class LanguageDropdownMenu extends PureComponent {
static propTypes = { static propTypes = {
value: PropTypes.string.isRequired, value: PropTypes.string.isRequired,
guess: PropTypes.string,
frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string).isRequired, frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string).isRequired,
onClose: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired,
onChange: PropTypes.func.isRequired, onChange: PropTypes.func.isRequired,
@ -81,14 +82,17 @@ class LanguageDropdownMenu extends PureComponent {
}; };
search () { search () {
const { languages, value, frequentlyUsedLanguages } = this.props; const { languages, value, frequentlyUsedLanguages, guess } = this.props;
const { searchValue } = this.state; const { searchValue } = this.state;
if (searchValue === '') { if (searchValue === '') {
return [...languages].sort((a, b) => { return [...languages].sort((a, b) => {
// Push current selection to the top of the list
if (a[0] === value) { if (guess && a[0] === guess) { // Push guessed language higher than current selection
return -1;
} else if (guess && b[0] === guess) {
return 1;
} else if (a[0] === value) { // Push current selection to the top of the list
return -1; return -1;
} else if (b[0] === value) { } else if (b[0] === value) {
return 1; return 1;
@ -238,6 +242,7 @@ class LanguageDropdown extends PureComponent {
static propTypes = { static propTypes = {
value: PropTypes.string, value: PropTypes.string,
frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string), frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string),
guess: PropTypes.string,
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
onChange: PropTypes.func, onChange: PropTypes.func,
}; };
@ -281,7 +286,7 @@ class LanguageDropdown extends PureComponent {
}; };
render () { render () {
const { value, intl, frequentlyUsedLanguages } = this.props; const { value, guess, intl, frequentlyUsedLanguages } = this.props;
const { open, placement } = this.state; const { open, placement } = this.state;
const current = preloadedLanguages.find(lang => lang[0] === value) ?? []; const current = preloadedLanguages.find(lang => lang[0] === value) ?? [];
@ -294,7 +299,7 @@ class LanguageDropdown extends PureComponent {
onClick={this.handleToggle} onClick={this.handleToggle}
onMouseDown={this.handleMouseDown} onMouseDown={this.handleMouseDown}
onKeyDown={this.handleButtonKeyDown} onKeyDown={this.handleButtonKeyDown}
className={classNames('dropdown-button', { active: open })} className={classNames('dropdown-button', { active: open, warning: guess !== '' && guess !== value })}
> >
<Icon icon={TranslateIcon} /> <Icon icon={TranslateIcon} />
<span className='dropdown-button__label'>{current[2] ?? value}</span> <span className='dropdown-button__label'>{current[2] ?? value}</span>
@ -306,6 +311,7 @@ class LanguageDropdown extends PureComponent {
<div className={`dropdown-animation language-dropdown__dropdown ${placement}`} > <div className={`dropdown-animation language-dropdown__dropdown ${placement}`} >
<LanguageDropdownMenu <LanguageDropdownMenu
value={value} value={value}
guess={guess}
frequentlyUsedLanguages={frequentlyUsedLanguages} frequentlyUsedLanguages={frequentlyUsedLanguages}
onClose={this.handleClose} onClose={this.handleClose}
onChange={this.handleChange} onChange={this.handleChange}

View file

@ -4,16 +4,16 @@ import { FormattedMessage } from 'react-intl';
import classNames from 'classnames'; import classNames from 'classnames';
import type { Map as ImmutableMap, List as ImmutableList } from 'immutable';
import { useSortable } from '@dnd-kit/sortable'; import { useSortable } from '@dnd-kit/sortable';
import { CSS } from '@dnd-kit/utilities'; import { CSS } from '@dnd-kit/utilities';
import CloseIcon from '@/material-icons/400-20px/close.svg?react'; import CloseIcon from '@/material-icons/400-20px/close.svg?react';
import EditIcon from '@/material-icons/400-24px/edit.svg?react'; import EditIcon from '@/material-icons/400-24px/edit.svg?react';
import WarningIcon from '@/material-icons/400-24px/warning.svg?react'; import WarningIcon from '@/material-icons/400-24px/warning.svg?react';
import { import { undoUploadCompose } from 'mastodon/actions/compose';
undoUploadCompose, import { openModal } from 'mastodon/actions/modal';
initMediaEditModal,
} from 'mastodon/actions/compose';
import { Blurhash } from 'mastodon/components/blurhash'; import { Blurhash } from 'mastodon/components/blurhash';
import { Icon } from 'mastodon/components/icon'; import { Icon } from 'mastodon/components/icon';
import type { MediaAttachment } from 'mastodon/models/media_attachment'; import type { MediaAttachment } from 'mastodon/models/media_attachment';
@ -27,16 +27,15 @@ export const Upload: React.FC<{
wide?: boolean; wide?: boolean;
}> = ({ id, dragging, overlay, tall, wide }) => { }> = ({ id, dragging, overlay, tall, wide }) => {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const media = useAppSelector( const media = useAppSelector((state) =>
(state) => (
state.compose // eslint-disable-line @typescript-eslint/no-unsafe-call (state.compose as ImmutableMap<string, unknown>).get(
.get('media_attachments') // eslint-disable-line @typescript-eslint/no-unsafe-member-access 'media_attachments',
.find((item: MediaAttachment) => item.get('id') === id) as // eslint-disable-line @typescript-eslint/no-unsafe-member-access ) as ImmutableList<MediaAttachment>
| MediaAttachment ).find((item) => item.get('id') === id),
| undefined,
); );
const sensitive = useAppSelector( const sensitive = useAppSelector(
(state) => state.compose.get('spoiler') as boolean, // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access (state) => state.compose.get('spoiler') as boolean,
); );
const handleUndoClick = useCallback(() => { const handleUndoClick = useCallback(() => {
@ -44,7 +43,9 @@ export const Upload: React.FC<{
}, [dispatch, id]); }, [dispatch, id]);
const handleFocalPointClick = useCallback(() => { const handleFocalPointClick = useCallback(() => {
dispatch(initMediaEditModal(id)); dispatch(
openModal({ modalType: 'FOCAL_POINT', modalProps: { mediaId: id } }),
);
}, [dispatch, id]); }, [dispatch, id]);
const { attributes, listeners, setNodeRef, transform, transition } = const { attributes, listeners, setNodeRef, transform, transition } =

View file

@ -2,7 +2,11 @@ import { useState, useCallback, useMemo } from 'react';
import { useIntl, defineMessages } from 'react-intl'; import { useIntl, defineMessages } from 'react-intl';
import type { List } from 'immutable'; import type {
List,
Map as ImmutableMap,
List as ImmutableList,
} from 'immutable';
import type { import type {
DragStartEvent, DragStartEvent,
@ -63,18 +67,20 @@ export const UploadForm: React.FC = () => {
const intl = useIntl(); const intl = useIntl();
const mediaIds = useAppSelector( const mediaIds = useAppSelector(
(state) => (state) =>
state.compose // eslint-disable-line @typescript-eslint/no-unsafe-call (
.get('media_attachments') // eslint-disable-line @typescript-eslint/no-unsafe-member-access (state.compose as ImmutableMap<string, unknown>).get(
.map((item: MediaAttachment) => item.get('id')) as List<string>, // eslint-disable-line @typescript-eslint/no-unsafe-member-access 'media_attachments',
) as ImmutableList<MediaAttachment>
).map((item: MediaAttachment) => item.get('id')) as List<string>,
); );
const active = useAppSelector( const active = useAppSelector(
(state) => state.compose.get('is_uploading') as boolean, // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access (state) => state.compose.get('is_uploading') as boolean,
); );
const progress = useAppSelector( const progress = useAppSelector(
(state) => state.compose.get('progress') as number, // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access (state) => state.compose.get('progress') as number,
); );
const isProcessing = useAppSelector( const isProcessing = useAppSelector(
(state) => state.compose.get('is_processing') as boolean, // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access (state) => state.compose.get('is_processing') as boolean,
); );
const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null); const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);
const sensors = useSensors( const sensors = useSensors(

View file

@ -2,6 +2,8 @@ import { createSelector } from '@reduxjs/toolkit';
import { Map as ImmutableMap } from 'immutable'; import { Map as ImmutableMap } from 'immutable';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import lande from 'lande';
import { debounce } from 'lodash';
import { changeComposeLanguage } from 'mastodon/actions/compose'; import { changeComposeLanguage } from 'mastodon/actions/compose';
@ -16,9 +18,83 @@ const getFrequentlyUsedLanguages = createSelector([
.toArray() .toArray()
)); ));
const ISO_639_MAP = {
afr: 'af', // Afrikaans
ara: 'ar', // Arabic
aze: 'az', // Azerbaijani
bel: 'be', // Belarusian
ben: 'bn', // Bengali
bul: 'bg', // Bulgarian
cat: 'ca', // Catalan
ces: 'cs', // Czech
ckb: 'ku', // Kurdish
cmn: 'zh', // Mandarin
dan: 'da', // Danish
deu: 'de', // German
ell: 'el', // Greek
eng: 'en', // English
est: 'et', // Estonian
eus: 'eu', // Basque
fin: 'fi', // Finnish
fra: 'fr', // French
hau: 'ha', // Hausa
heb: 'he', // Hebrew
hin: 'hi', // Hindi
hrv: 'hr', // Croatian
hun: 'hu', // Hungarian
hye: 'hy', // Armenian
ind: 'id', // Indonesian
isl: 'is', // Icelandic
ita: 'it', // Italian
jpn: 'ja', // Japanese
kat: 'ka', // Georgian
kaz: 'kk', // Kazakh
kor: 'ko', // Korean
lit: 'lt', // Lithuanian
mar: 'mr', // Marathi
mkd: 'mk', // Macedonian
nld: 'nl', // Dutch
nob: 'no', // Norwegian
pes: 'fa', // Persian
pol: 'pl', // Polish
por: 'pt', // Portuguese
ron: 'ro', // Romanian
run: 'rn', // Rundi
rus: 'ru', // Russian
slk: 'sk', // Slovak
spa: 'es', // Spanish
srp: 'sr', // Serbian
swe: 'sv', // Swedish
tgl: 'tl', // Tagalog
tur: 'tr', // Turkish
ukr: 'uk', // Ukrainian
vie: 'vi', // Vietnamese
};
const debouncedLande = debounce((text) => lande(text), 500, { trailing: true });
const detectedLanguage = createSelector([
state => state.getIn(['compose', 'text']),
], text => {
if (text.length > 20) {
const guesses = debouncedLande(text);
if (!guesses)
return '';
const [lang, confidence] = guesses[0];
if (confidence > 0.8) {
return ISO_639_MAP[lang];
}
}
return '';
});
const mapStateToProps = state => ({ const mapStateToProps = state => ({
frequentlyUsedLanguages: getFrequentlyUsedLanguages(state), frequentlyUsedLanguages: getFrequentlyUsedLanguages(state),
value: state.getIn(['compose', 'language']), value: state.getIn(['compose', 'language']),
guess: detectedLanguage(state),
}); });
const mapDispatchToProps = dispatch => ({ const mapDispatchToProps = dispatch => ({

View file

@ -69,7 +69,9 @@ export const NotificationFollow: React.FC<{
const account = notification.sampleAccountIds[0]; const account = notification.sampleAccountIds[0];
if (account) { if (account) {
actions = <FollowButton accountId={notification.sampleAccountIds[0]} />; actions = (
<FollowButton compact accountId={notification.sampleAccountIds[0]} />
);
additionalContent = <FollowerCount accountId={account} />; additionalContent = <FollowerCount accountId={account} />;
} }
} }

View file

@ -28,7 +28,6 @@ export const BoostModal: React.FC<{
const intl = useIntl(); const intl = useIntl();
const defaultPrivacy = useAppSelector( const defaultPrivacy = useAppSelector(
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
(state) => state.compose.get('default_privacy') as StatusVisibility, (state) => state.compose.get('default_privacy') as StatusVisibility,
); );

View file

@ -1,438 +0,0 @@
import PropTypes from 'prop-types';
import { PureComponent } from 'react';
import { FormattedMessage, defineMessages, injectIntl } from 'react-intl';
import classNames from 'classnames';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { connect } from 'react-redux';
import Textarea from 'react-textarea-autosize';
import { length } from 'stringz';
// eslint-disable-next-line import/extensions
import tesseractWorkerPath from 'tesseract.js/dist/worker.min.js';
// eslint-disable-next-line import/no-extraneous-dependencies
import tesseractCorePath from 'tesseract.js-core/tesseract-core.wasm.js';
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
import { Button } from 'mastodon/components/button';
import { GIFV } from 'mastodon/components/gifv';
import { IconButton } from 'mastodon/components/icon_button';
import Audio from 'mastodon/features/audio';
import { CharacterCounter } from 'mastodon/features/compose/components/character_counter';
import { UploadProgress } from 'mastodon/features/compose/components/upload_progress';
import { Tesseract as fetchTesseract } from 'mastodon/features/ui/util/async-components';
import { me } from 'mastodon/initial_state';
import { assetHost } from 'mastodon/utils/config';
import { changeUploadCompose, uploadThumbnail, onChangeMediaDescription, onChangeMediaFocus } from '../../../actions/compose';
import Video, { getPointerPosition } from '../../video';
const messages = defineMessages({
close: { id: 'lightbox.close', defaultMessage: 'Close' },
apply: { id: 'upload_modal.apply', defaultMessage: 'Apply' },
applying: { id: 'upload_modal.applying', defaultMessage: 'Applying…' },
placeholder: { id: 'upload_modal.description_placeholder', defaultMessage: 'A quick brown fox jumps over the lazy dog' },
chooseImage: { id: 'upload_modal.choose_image', defaultMessage: 'Choose image' },
discardMessage: { id: 'confirmations.discard_edit_media.message', defaultMessage: 'You have unsaved changes to the media description or preview, discard them anyway?' },
discardConfirm: { id: 'confirmations.discard_edit_media.confirm', defaultMessage: 'Discard' },
});
const mapStateToProps = (state, { id }) => ({
media: state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id),
account: state.getIn(['accounts', me]),
isUploadingThumbnail: state.getIn(['compose', 'isUploadingThumbnail']),
description: state.getIn(['compose', 'media_modal', 'description']),
lang: state.getIn(['compose', 'language']),
focusX: state.getIn(['compose', 'media_modal', 'focusX']),
focusY: state.getIn(['compose', 'media_modal', 'focusY']),
dirty: state.getIn(['compose', 'media_modal', 'dirty']),
is_changing_upload: state.getIn(['compose', 'is_changing_upload']),
});
const mapDispatchToProps = (dispatch, { id }) => ({
onSave: (description, x, y) => {
dispatch(changeUploadCompose(id, { description, focus: `${x.toFixed(2)},${y.toFixed(2)}` }));
},
onChangeDescription: (description) => {
dispatch(onChangeMediaDescription(description));
},
onChangeFocus: (focusX, focusY) => {
dispatch(onChangeMediaFocus(focusX, focusY));
},
onSelectThumbnail: files => {
dispatch(uploadThumbnail(id, files[0]));
},
});
const removeExtraLineBreaks = str => str.replace(/\n\n/g, '******')
.replace(/\n/g, ' ')
.replace(/\*\*\*\*\*\*/g, '\n\n');
class ImageLoader extends PureComponent {
static propTypes = {
src: PropTypes.string.isRequired,
width: PropTypes.number,
height: PropTypes.number,
};
state = {
loading: true,
};
componentDidMount() {
const image = new Image();
image.addEventListener('load', () => this.setState({ loading: false }));
image.src = this.props.src;
}
render () {
const { loading } = this.state;
if (loading) {
return <canvas width={this.props.width} height={this.props.height} />;
} else {
return <img {...this.props} alt='' />;
}
}
}
class FocalPointModal extends ImmutablePureComponent {
static propTypes = {
media: ImmutablePropTypes.map.isRequired,
account: ImmutablePropTypes.record.isRequired,
isUploadingThumbnail: PropTypes.bool,
onSave: PropTypes.func.isRequired,
onChangeDescription: PropTypes.func.isRequired,
onChangeFocus: PropTypes.func.isRequired,
onSelectThumbnail: PropTypes.func.isRequired,
onClose: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
};
state = {
dragging: false,
dirty: false,
progress: 0,
loading: true,
ocrStatus: '',
};
componentWillUnmount () {
document.removeEventListener('mousemove', this.handleMouseMove);
document.removeEventListener('mouseup', this.handleMouseUp);
}
handleMouseDown = e => {
document.addEventListener('mousemove', this.handleMouseMove);
document.addEventListener('mouseup', this.handleMouseUp);
this.updatePosition(e);
this.setState({ dragging: true });
};
handleTouchStart = e => {
document.addEventListener('touchmove', this.handleMouseMove);
document.addEventListener('touchend', this.handleTouchEnd);
this.updatePosition(e);
this.setState({ dragging: true });
};
handleMouseMove = e => {
this.updatePosition(e);
};
handleMouseUp = () => {
document.removeEventListener('mousemove', this.handleMouseMove);
document.removeEventListener('mouseup', this.handleMouseUp);
this.setState({ dragging: false });
};
handleTouchEnd = () => {
document.removeEventListener('touchmove', this.handleMouseMove);
document.removeEventListener('touchend', this.handleTouchEnd);
this.setState({ dragging: false });
};
updatePosition = e => {
const { x, y } = getPointerPosition(this.node, e);
const focusX = (x - .5) * 2;
const focusY = (y - .5) * -2;
this.props.onChangeFocus(focusX, focusY);
};
handleChange = e => {
this.props.onChangeDescription(e.target.value);
};
handleKeyDown = (e) => {
if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) {
this.props.onChangeDescription(e.target.value);
this.handleSubmit(e);
}
};
handleSubmit = (e) => {
e.preventDefault();
e.stopPropagation();
this.props.onSave(this.props.description, this.props.focusX, this.props.focusY);
};
getCloseConfirmationMessage = () => {
const { intl, dirty } = this.props;
if (dirty) {
return {
message: intl.formatMessage(messages.discardMessage),
confirm: intl.formatMessage(messages.discardConfirm),
};
} else {
return null;
}
};
setRef = c => {
this.node = c;
};
handleTextDetection = () => {
this._detectText();
};
_detectText = (refreshCache = false) => {
const { media } = this.props;
this.setState({ detecting: true });
fetchTesseract().then(({ createWorker }) => {
const worker = createWorker({
workerPath: tesseractWorkerPath,
corePath: tesseractCorePath,
langPath: `${assetHost}/ocr/lang-data`,
logger: ({ status, progress }) => {
if (status === 'recognizing text') {
this.setState({ ocrStatus: 'detecting', progress });
} else {
this.setState({ ocrStatus: 'preparing', progress });
}
},
cacheMethod: refreshCache ? 'refresh' : 'write',
});
let media_url = media.get('url');
if (window.URL && URL.createObjectURL) {
try {
media_url = URL.createObjectURL(media.get('file'));
} catch (error) {
console.error(error);
}
}
return (async () => {
await worker.load();
await worker.loadLanguage('eng');
await worker.initialize('eng');
const { data: { text } } = await worker.recognize(media_url);
this.setState({ detecting: false });
this.props.onChangeDescription(removeExtraLineBreaks(text));
await worker.terminate();
})().catch((e) => {
if (refreshCache) {
throw e;
} else {
this._detectText(true);
}
});
}).catch((e) => {
console.error(e);
this.setState({ detecting: false });
});
};
handleThumbnailChange = e => {
if (e.target.files.length > 0) {
this.props.onSelectThumbnail(e.target.files);
}
};
setFileInputRef = c => {
this.fileInput = c;
};
handleFileInputClick = () => {
this.fileInput.click();
};
render () {
const { media, intl, account, onClose, isUploadingThumbnail, description, lang, focusX, focusY, dirty, is_changing_upload } = this.props;
const { dragging, detecting, progress, ocrStatus } = this.state;
const x = (focusX / 2) + .5;
const y = (focusY / -2) + .5;
const width = media.getIn(['meta', 'original', 'width']) || null;
const height = media.getIn(['meta', 'original', 'height']) || null;
const focals = ['image', 'gifv'].includes(media.get('type'));
const thumbnailable = ['audio', 'video'].includes(media.get('type'));
const previewRatio = 16/9;
const previewWidth = 200;
const previewHeight = previewWidth / previewRatio;
let descriptionLabel = null;
if (media.get('type') === 'audio') {
descriptionLabel = <FormattedMessage id='upload_form.audio_description' defaultMessage='Describe for people who are hard of hearing' />;
} else if (media.get('type') === 'video') {
descriptionLabel = <FormattedMessage id='upload_form.video_description' defaultMessage='Describe for people who are deaf, hard of hearing, blind or have low vision' />;
} else {
descriptionLabel = <FormattedMessage id='upload_form.description' defaultMessage='Describe for people who are blind or have low vision' />;
}
let ocrMessage = '';
if (ocrStatus === 'detecting') {
ocrMessage = <FormattedMessage id='upload_modal.analyzing_picture' defaultMessage='Analyzing picture…' />;
} else {
ocrMessage = <FormattedMessage id='upload_modal.preparing_ocr' defaultMessage='Preparing OCR…' />;
}
return (
<div className='modal-root__modal report-modal' style={{ maxWidth: 960 }}>
<div className='report-modal__target'>
<IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='times' iconComponent={CloseIcon} onClick={onClose} size={20} />
<FormattedMessage id='upload_modal.edit_media' defaultMessage='Edit media' />
</div>
<div className='report-modal__container'>
<form className='report-modal__comment' onSubmit={this.handleSubmit} >
{focals && <p><FormattedMessage id='upload_modal.hint' defaultMessage='Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.' /></p>}
{thumbnailable && (
<>
<label className='setting-text-label' htmlFor='upload-modal__thumbnail'><FormattedMessage id='upload_form.thumbnail' defaultMessage='Change thumbnail' /></label>
<Button disabled={isUploadingThumbnail || !media.get('unattached')} text={intl.formatMessage(messages.chooseImage)} onClick={this.handleFileInputClick} />
<label>
<span style={{ display: 'none' }}>{intl.formatMessage(messages.chooseImage)}</span>
<input
id='upload-modal__thumbnail'
ref={this.setFileInputRef}
type='file'
accept='image/png,image/jpeg'
onChange={this.handleThumbnailChange}
style={{ display: 'none' }}
disabled={isUploadingThumbnail || is_changing_upload}
/>
</label>
<hr className='setting-divider' />
</>
)}
<label className='setting-text-label' htmlFor='upload-modal__description'>
{descriptionLabel}
</label>
<div className='setting-text__wrapper'>
<Textarea
id='upload-modal__description'
className='setting-text light'
value={detecting ? '…' : description}
lang={lang}
onChange={this.handleChange}
onKeyDown={this.handleKeyDown}
disabled={detecting || is_changing_upload}
autoFocus
/>
<div className='setting-text__modifiers'>
<UploadProgress progress={progress * 100} active={detecting} icon='file-text-o' message={ocrMessage} />
</div>
</div>
<div className='setting-text__toolbar'>
<button
type='button'
disabled={detecting || media.get('type') !== 'image' || is_changing_upload}
className='link-button'
onClick={this.handleTextDetection}
>
<FormattedMessage id='upload_modal.detect_text' defaultMessage='Detect text from picture' />
</button>
<CharacterCounter max={1500} text={detecting ? '' : description} />
</div>
<Button
type='submit'
disabled={!dirty || detecting || isUploadingThumbnail || length(description) > 1500 || is_changing_upload}
text={intl.formatMessage(is_changing_upload ? messages.applying : messages.apply)}
/>
</form>
<div className='focal-point-modal__content'>
{focals && (
<div className={classNames('focal-point', { dragging })} ref={this.setRef} onMouseDown={this.handleMouseDown} onTouchStart={this.handleTouchStart}>
{media.get('type') === 'image' && <ImageLoader src={media.get('url')} width={width} height={height} alt='' />}
{media.get('type') === 'gifv' && <GIFV src={media.get('url')} key={media.get('url')} width={width} height={height} />}
<div className='focal-point__preview'>
<strong><FormattedMessage id='upload_modal.preview_label' defaultMessage='Preview ({ratio})' values={{ ratio: '16:9' }} /></strong>
<div style={{ width: previewWidth, height: previewHeight, backgroundImage: `url(${media.get('preview_url')})`, backgroundSize: 'cover', backgroundPosition: `${x * 100}% ${y * 100}%` }} />
</div>
<div className='focal-point__reticle' style={{ top: `${y * 100}%`, left: `${x * 100}%` }} />
<div className='focal-point__overlay' />
</div>
)}
{media.get('type') === 'video' && (
<Video
preview={media.get('preview_url')}
frameRate={media.getIn(['meta', 'original', 'frame_rate'])}
blurhash={media.get('blurhash')}
src={media.get('url')}
detailed
inline
editable
/>
)}
{media.get('type') === 'audio' && (
<Audio
src={media.get('url')}
duration={media.getIn(['meta', 'original', 'duration'], 0)}
height={150}
poster={media.get('preview_url') || account.get('avatar_static')}
backgroundColor={media.getIn(['meta', 'colors', 'background'])}
foregroundColor={media.getIn(['meta', 'colors', 'foreground'])}
accentColor={media.getIn(['meta', 'colors', 'accent'])}
editable
/>
)}
</div>
</div>
</div>
);
}
}
export default connect(mapStateToProps, mapDispatchToProps, null, {
forwardRef: true,
})(injectIntl(FocalPointModal, { forwardRef: true }));

View file

@ -4,6 +4,7 @@ import { PureComponent } from 'react';
import { Helmet } from 'react-helmet'; import { Helmet } from 'react-helmet';
import Base from 'mastodon/components/modal_root'; import Base from 'mastodon/components/modal_root';
import { AltTextModal } from 'mastodon/features/alt_text_modal';
import { import {
MuteModal, MuteModal,
BlockModal, BlockModal,
@ -43,7 +44,6 @@ import {
ConfirmLogOutModal, ConfirmLogOutModal,
ConfirmFollowToListModal, ConfirmFollowToListModal,
} from './confirmation_modals'; } from './confirmation_modals';
import FocalPointModal from './focal_point_modal';
import ImageModal from './image_modal'; import ImageModal from './image_modal';
import MediaModal from './media_modal'; import MediaModal from './media_modal';
import { ModalPlaceholder } from './modal_placeholder'; import { ModalPlaceholder } from './modal_placeholder';
@ -73,7 +73,7 @@ export const MODAL_COMPONENTS = {
'REPORT': ReportModal, 'REPORT': ReportModal,
'ACTIONS': () => Promise.resolve({ default: ActionsModal }), 'ACTIONS': () => Promise.resolve({ default: ActionsModal }),
'EMBED': EmbedModal, 'EMBED': EmbedModal,
'FOCAL_POINT': () => Promise.resolve({ default: FocalPointModal }), 'FOCAL_POINT': () => Promise.resolve({ default: AltTextModal }),
'LIST_ADDER': ListAdder, 'LIST_ADDER': ListAdder,
'ANTENNA_ADDER': AntennaAdder, 'ANTENNA_ADDER': AntennaAdder,
'CIRCLE_ADDER': CircleAdder, 'CIRCLE_ADDER': CircleAdder,
@ -151,8 +151,7 @@ export default class ModalRoot extends PureComponent {
<> <>
<BundleContainer fetchComponent={MODAL_COMPONENTS[type]} loading={this.renderLoading} error={this.renderError} renderDelay={200}> <BundleContainer fetchComponent={MODAL_COMPONENTS[type]} loading={this.renderLoading} error={this.renderError} renderDelay={200}>
{(SpecificComponent) => { {(SpecificComponent) => {
const ref = typeof SpecificComponent !== 'function' ? this.setModalRef : undefined; return <SpecificComponent {...props} onChangeBackgroundColor={this.setBackgroundColor} onClose={this.handleClose} ref={this.setModalRef} />;
return <SpecificComponent {...props} onChangeBackgroundColor={this.setBackgroundColor} onClose={this.handleClose} ref={ref} />;
}} }}
</BundleContainer> </BundleContainer>

View file

@ -16,6 +16,7 @@ const mapDispatchToProps = dispatch => ({
if (confirmationMessage) { if (confirmationMessage) {
dispatch( dispatch(
openModal({ openModal({
previousModalProps: confirmationMessage.props,
modalType: 'CONFIRM', modalType: 'CONFIRM',
modalProps: { modalProps: {
message: confirmationMessage.message, message: confirmationMessage.message,
@ -24,7 +25,8 @@ const mapDispatchToProps = dispatch => ({
modalType: undefined, modalType: undefined,
ignoreFocus: { ignoreFocus }, ignoreFocus: { ignoreFocus },
})), })),
} }), },
}),
); );
} else { } else {
dispatch(closeModal({ dispatch(closeModal({

View file

@ -277,9 +277,6 @@
"tabs_bar.home": "Tuis", "tabs_bar.home": "Tuis",
"tabs_bar.notifications": "Kennisgewings", "tabs_bar.notifications": "Kennisgewings",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_progress.label": "Uploading…", "upload_progress.label": "Uploading…",
"video.fullscreen": "Volskerm", "video.fullscreen": "Volskerm",
"video.mute": "Klank afskakel", "video.mute": "Klank afskakel",

View file

@ -497,21 +497,7 @@
"upload_button.label": "Puyar imachens, un vido u un fichero d'audio", "upload_button.label": "Puyar imachens, un vido u un fichero d'audio",
"upload_error.limit": "Limite de puyada de fichers excedido.", "upload_error.limit": "Limite de puyada de fichers excedido.",
"upload_error.poll": "Puyada de fichers no permitida con enqüestas.", "upload_error.poll": "Puyada de fichers no permitida con enqüestas.",
"upload_form.audio_description": "Describir pa personas con problemas auditivos",
"upload_form.description": "Describir pa los usuarios con dificultat visual",
"upload_form.edit": "Editar", "upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar miniatura",
"upload_form.video_description": "Describir pa personas con problemas auditivos u visuals",
"upload_modal.analyzing_picture": "Analisando imachen…",
"upload_modal.apply": "Aplicar",
"upload_modal.applying": "Aplicando…",
"upload_modal.choose_image": "Triar imachen",
"upload_modal.description_placeholder": "Una rapida rabosa marrón blinca sobre lo can perezoso",
"upload_modal.detect_text": "Detectar texto d'a imachen",
"upload_modal.edit_media": "Editar multimedia",
"upload_modal.hint": "Faiga clic u arrociegue lo cerclo en a vista previa pa triar lo punto focal que siempre será a la vista en totas las miniaturas.",
"upload_modal.preparing_ocr": "Preparando OCR…",
"upload_modal.preview_label": "Vista previa ({ratio})",
"upload_progress.label": "Puyando...", "upload_progress.label": "Puyando...",
"upload_progress.processing": "Procesando…", "upload_progress.processing": "Procesando…",
"video.close": "Zarrar video", "video.close": "Zarrar video",

View file

@ -755,21 +755,7 @@
"upload_button.label": "إضافة وسائط", "upload_button.label": "إضافة وسائط",
"upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.", "upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.",
"upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.", "upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.",
"upload_form.audio_description": "وصف للأشخاص ذي قِصر السمع",
"upload_form.description": "وصف للمعاقين بصريا",
"upload_form.edit": "تعديل", "upload_form.edit": "تعديل",
"upload_form.thumbnail": "غيّر الصورة المصغرة",
"upload_form.video_description": "وصف للمعاقين بصريا أو لِذي قِصر السمع",
"upload_modal.analyzing_picture": "جارٍ فحص الصورة…",
"upload_modal.apply": "طبّق",
"upload_modal.applying": "جارٍ التطبيق…",
"upload_modal.choose_image": "اختر صورة",
"upload_modal.description_placeholder": "نصٌّ حكيمٌ لهُ سِرٌّ قاطِعٌ وَذُو شَأنٍ عَظيمٍ مكتوبٌ على ثوبٍ أخضرَ ومُغلفٌ بجلدٍ أزرق",
"upload_modal.detect_text": "اكتشف النص مِن الصورة",
"upload_modal.edit_media": "تعديل الوسائط",
"upload_modal.hint": "اضغط أو اسحب الدائرة على خانة المعاينة لاختيار نقطة التركيز التي ستُعرَض دائمًا على كل المصغرات.",
"upload_modal.preparing_ocr": "جار إعداد OCR (تعرف ضوئي على الرموز)…",
"upload_modal.preview_label": "معاينة ({ratio})",
"upload_progress.label": "يرفع...", "upload_progress.label": "يرفع...",
"upload_progress.processing": "تتم المعالجة…", "upload_progress.processing": "تتم المعالجة…",
"username.taken": "اسم المستخدم هذا مأخوذ. الرجاء محاولة اسم اخر", "username.taken": "اسم المستخدم هذا مأخوذ. الرجاء محاولة اسم اخر",

View file

@ -58,6 +58,7 @@
"account.unendorse": "Dexar de destacar nel perfil", "account.unendorse": "Dexar de destacar nel perfil",
"account.unfollow": "Dexar de siguir", "account.unfollow": "Dexar de siguir",
"account.unmute": "Activar los avisos de @{name}", "account.unmute": "Activar los avisos de @{name}",
"account.unmute_notifications_short": "Dexar de silenciar notificaciones",
"account.unmute_short": "Activar los avisos", "account.unmute_short": "Activar los avisos",
"account_note.placeholder": "Calca equí p'amestar una nota", "account_note.placeholder": "Calca equí p'amestar una nota",
"admin.dashboard.retention.average": "Media", "admin.dashboard.retention.average": "Media",
@ -70,9 +71,13 @@
"announcement.announcement": "Anunciu", "announcement.announcement": "Anunciu",
"annual_report.summary.followers.followers": "siguidores", "annual_report.summary.followers.followers": "siguidores",
"annual_report.summary.new_posts.new_posts": "artículos nuevos", "annual_report.summary.new_posts.new_posts": "artículos nuevos",
"annual_report.summary.thanks": "Gracies por ser parte de Mastodon!",
"attachments_list.unprocessed": "(ensin procesar)", "attachments_list.unprocessed": "(ensin procesar)",
"block_modal.show_less": "Amosar menos", "block_modal.show_less": "Amosar menos",
"block_modal.show_more": "Amosar más", "block_modal.show_more": "Amosar más",
"block_modal.they_cant_mention": "Nun van poder mencionate o siguite.",
"block_modal.they_cant_see_posts": "Nun pueden ver les tos espublizaciones y tu nun podrás ver les suyes.",
"block_modal.you_wont_see_mentions": "Nun verás espublizaciones que-yos mencionen.",
"bundle_column_error.error.body": "La páxina solicitada nun se pudo renderizar. Ye posible que seya pola mor d'un fallu nel códigu o por un problema de compatibilidá del restolador.", "bundle_column_error.error.body": "La páxina solicitada nun se pudo renderizar. Ye posible que seya pola mor d'un fallu nel códigu o por un problema de compatibilidá del restolador.",
"bundle_column_error.error.title": "¡Oh, non!", "bundle_column_error.error.title": "¡Oh, non!",
"bundle_column_error.network.body": "Hebo un error al tentar de cargar esta páxina. Esto pudo ser pola mor d'un problema temporal cola conexón a internet o con esti sirvidor.", "bundle_column_error.network.body": "Hebo un error al tentar de cargar esta páxina. Esto pudo ser pola mor d'un problema temporal cola conexón a internet o con esti sirvidor.",
@ -116,6 +121,7 @@
"compose.language.search": "Buscar llingües…", "compose.language.search": "Buscar llingües…",
"compose.published.body": "Espublizóse l'artículu.", "compose.published.body": "Espublizóse l'artículu.",
"compose.published.open": "Abrir", "compose.published.open": "Abrir",
"compose.saved.body": "Post guardáu.",
"compose_form.direct_message_warning_learn_more": "Saber más", "compose_form.direct_message_warning_learn_more": "Saber más",
"compose_form.encryption_warning": "Los artículos de Mastodon nun tán cifraos de puntu a puntu. Nun compartas nengún tipu d'información sensible per Mastodon.", "compose_form.encryption_warning": "Los artículos de Mastodon nun tán cifraos de puntu a puntu. Nun compartas nengún tipu d'información sensible per Mastodon.",
"compose_form.lock_disclaimer": "La to cuenta nun ye {locked}. Cualesquier perfil pue siguite pa ver los artículos que son namás pa siguidores.", "compose_form.lock_disclaimer": "La to cuenta nun ye {locked}. Cualesquier perfil pue siguite pa ver los artículos que son namás pa siguidores.",
@ -512,14 +518,7 @@
"upload_area.title": "Arrastra y suelta pa xubir", "upload_area.title": "Arrastra y suelta pa xubir",
"upload_button.label": "Amestar ficheros multimedia", "upload_button.label": "Amestar ficheros multimedia",
"upload_error.poll": "La xuba de ficheros nun ta permitida coles encuestes.", "upload_error.poll": "La xuba de ficheros nun ta permitida coles encuestes.",
"upload_form.audio_description": "Describi'l conteníu pa persones sordes y/o ciegues",
"upload_form.edit": "Editar", "upload_form.edit": "Editar",
"upload_modal.analyzing_picture": "Analizando la semeya…",
"upload_modal.apply": "Aplicar",
"upload_modal.applying": "Aplicando…",
"upload_modal.detect_text": "Detectar 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 siempre va tar a la vista en toles miniatures.",
"upload_progress.label": "Xubiendo…", "upload_progress.label": "Xubiendo…",
"upload_progress.processing": "Procesando…", "upload_progress.processing": "Procesando…",
"video.close": "Zarrar el videu", "video.close": "Zarrar el videu",

View file

@ -140,16 +140,16 @@
"column.blocks": "Заблакіраваныя карыстальнікі", "column.blocks": "Заблакіраваныя карыстальнікі",
"column.bookmarks": "Закладкі", "column.bookmarks": "Закладкі",
"column.community": "Лакальная стужка", "column.community": "Лакальная стужка",
"column.create_list": "Стварыць сьпіс", "column.create_list": "Стварыць спіс",
"column.direct": "Асабістыя згадванні", "column.direct": "Асабістыя згадванні",
"column.directory": "Праглядзець профілі", "column.directory": "Праглядзець профілі",
"column.domain_blocks": "Заблакіраваныя дамены", "column.domain_blocks": "Заблакіраваныя дамены",
"column.edit_list": "Рэдагаваць сьпіс", "column.edit_list": "Рэдагаваць спіс",
"column.favourites": "Упадабанае", "column.favourites": "Упадабанае",
"column.firehose": "Стужкі", "column.firehose": "Стужкі",
"column.follow_requests": "Запыты на падпіску", "column.follow_requests": "Запыты на падпіску",
"column.home": "Галоўная", "column.home": "Галоўная",
"column.list_members": "Кіраваньне карыстальнікамі сьпіса", "column.list_members": "Кіраванне ўдзельнікамі спісу",
"column.lists": "Спісы", "column.lists": "Спісы",
"column.mutes": "Ігнараваныя карыстальнікі", "column.mutes": "Ігнараваныя карыстальнікі",
"column.notifications": "Апавяшчэнні", "column.notifications": "Апавяшчэнні",
@ -460,11 +460,17 @@
"link_preview.author": "Ад {name}", "link_preview.author": "Ад {name}",
"link_preview.more_from_author": "Больш ад {name}", "link_preview.more_from_author": "Больш ад {name}",
"link_preview.shares": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}", "link_preview.shares": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}",
"lists.add_member": "Дадаць",
"lists.create": "Стварыць",
"lists.create_list": "Стварыць спіс",
"lists.delete": "Выдаліць спіс", "lists.delete": "Выдаліць спіс",
"lists.edit": "Рэдагаваць спіс", "lists.edit": "Рэдагаваць спіс",
"lists.remove_member": "Выдаліць",
"lists.replies_policy.followed": "Любы карыстальнік, на якога вы падпісаліся", "lists.replies_policy.followed": "Любы карыстальнік, на якога вы падпісаліся",
"lists.replies_policy.list": "Удзельнікі гэтага спісу", "lists.replies_policy.list": "Удзельнікі гэтага спісу",
"lists.replies_policy.none": "Нікога", "lists.replies_policy.none": "Нікога",
"lists.save": "Захаваць",
"lists.search": "Пошук",
"load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}", "load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}",
"loading_indicator.label": "Загрузка…", "loading_indicator.label": "Загрузка…",
"media_gallery.hide": "Схаваць", "media_gallery.hide": "Схаваць",
@ -823,21 +829,7 @@
"upload_button.label": "Дадаць выяву, відэа- ці аўдыяфайл", "upload_button.label": "Дадаць выяву, відэа- ці аўдыяфайл",
"upload_error.limit": "Перавышана колькасць файлаў.", "upload_error.limit": "Перавышана колькасць файлаў.",
"upload_error.poll": "Немагчыма прымацаваць файл да апытання.", "upload_error.poll": "Немагчыма прымацаваць файл да апытання.",
"upload_form.audio_description": "Апісанне для людзей з парушэннямі слыху",
"upload_form.description": "Апісаць для людзей са слабым зрокам",
"upload_form.edit": "Рэдагаваць", "upload_form.edit": "Рэдагаваць",
"upload_form.thumbnail": "Змяніць мініяцюру",
"upload_form.video_description": "Апісанне для людзей з парушэннямі зроку і слыху",
"upload_modal.analyzing_picture": "Аналіз выявы…",
"upload_modal.apply": "Ужыць",
"upload_modal.applying": "Ужываецца…",
"upload_modal.choose_image": "Выбраць выяву",
"upload_modal.description_placeholder": "У рудога вераб’я ў сховішчы пад фатэлем ляжаць нейкія гаючыя зёлкі",
"upload_modal.detect_text": "Распазнаць тэкст з выявы",
"upload_modal.edit_media": "Рэдагаваць медыя",
"upload_modal.hint": "Націсніце ці перацягніце кружок на перадпрагляд каб выбраць фокусную кропку, што заўсёды будзе бачна на мініяцюрах.",
"upload_modal.preparing_ocr": "Падрыхтоўка OCR…",
"upload_modal.preview_label": "Перадпрагляд ({ratio})",
"upload_progress.label": "Запампоўванне...", "upload_progress.label": "Запампоўванне...",
"upload_progress.processing": "Апрацоўка…", "upload_progress.processing": "Апрацоўка…",
"username.taken": "Гэта імя карыстальніка занята. Паспрабуйце іншае", "username.taken": "Гэта імя карыстальніка занята. Паспрабуйце іншае",

View file

@ -875,26 +875,12 @@
"upload_button.label": "Добавете файл с образ, видео или звук", "upload_button.label": "Добавете файл с образ, видео или звук",
"upload_error.limit": "Превишено ограничението за качване на файлове.", "upload_error.limit": "Превишено ограничението за качване на файлове.",
"upload_error.poll": "Качването на файлове не е позволено с анкети.", "upload_error.poll": "Качването на файлове не е позволено с анкети.",
"upload_form.audio_description": "Опишете за хора, които са глухи или трудно чуват",
"upload_form.description": "Опишете за хора, които са слепи или имат слабо зрение",
"upload_form.drag_and_drop.instructions": "Натиснете интервал или enter, за да подберете мултимедийно прикачване. Провлачвайки, ползвайте клавишите със стрелки, за да премествате мултимедията във всяка дадена посока. Натиснете пак интервал или enter, за да се стовари мултимедийното прикачване в новото си положение или натиснете Esc за отмяна.", "upload_form.drag_and_drop.instructions": "Натиснете интервал или enter, за да подберете мултимедийно прикачване. Провлачвайки, ползвайте клавишите със стрелки, за да премествате мултимедията във всяка дадена посока. Натиснете пак интервал или enter, за да се стовари мултимедийното прикачване в новото си положение или натиснете Esc за отмяна.",
"upload_form.drag_and_drop.on_drag_cancel": "Провлачването е отменено. Мултимедийното прикачване {item} е спуснато.", "upload_form.drag_and_drop.on_drag_cancel": "Провлачването е отменено. Мултимедийното прикачване {item} е спуснато.",
"upload_form.drag_and_drop.on_drag_end": "Мултимедийното прикачване {item} е спуснато.", "upload_form.drag_and_drop.on_drag_end": "Мултимедийното прикачване {item} е спуснато.",
"upload_form.drag_and_drop.on_drag_over": "Мултимедийното прикачване {item} е преместено.", "upload_form.drag_and_drop.on_drag_over": "Мултимедийното прикачване {item} е преместено.",
"upload_form.drag_and_drop.on_drag_start": "Избрано мултимедийно прикачване {item}.", "upload_form.drag_and_drop.on_drag_start": "Избрано мултимедийно прикачване {item}.",
"upload_form.edit": "Редактиране", "upload_form.edit": "Редактиране",
"upload_form.thumbnail": "Промяна на миниобраза",
"upload_form.video_description": "Опишете за хора, които са глухи или трудно чуват, слепи или имат слабо зрение",
"upload_modal.analyzing_picture": "Снимков анализ…",
"upload_modal.apply": "Прилагане",
"upload_modal.applying": "Прилагане…",
"upload_modal.choose_image": "Избор на образ",
"upload_modal.description_placeholder": "Ах, чудна българска земьо, полюшвай цъфтящи жита",
"upload_modal.detect_text": "Откриване на текст от картина",
"upload_modal.edit_media": "Промяна на мултимедия",
"upload_modal.hint": "Щракнете или плъзнете кръга на визуализацията, за да изберете фокусна точка, която винаги ще бъде видима на всички миниатюри.",
"upload_modal.preparing_ocr": "Подготовка за оптично разпознаване на знаци…",
"upload_modal.preview_label": "Нагледно ({ratio})",
"upload_progress.label": "Качване...", "upload_progress.label": "Качване...",
"upload_progress.processing": "Обработка…", "upload_progress.processing": "Обработка…",
"username.taken": "Това потребителско име е взето. Опитайте друго", "username.taken": "Това потребителско име е взето. Опитайте друго",

View file

@ -425,19 +425,7 @@
"upload_button.label": "ছবি বা ভিডিও যুক্ত করতে (এসব ধরণের: JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "ছবি বা ভিডিও যুক্ত করতে (এসব ধরণের: JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "যা যুক্ত করতে চাচ্ছেন সেটি বেশি বড়, এখানকার সর্বাধিকের মেমোরির উপরে চলে গেছে।", "upload_error.limit": "যা যুক্ত করতে চাচ্ছেন সেটি বেশি বড়, এখানকার সর্বাধিকের মেমোরির উপরে চলে গেছে।",
"upload_error.poll": "নির্বাচনক্ষেত্রে কোনো ফাইল যুক্ত করা যাবেনা।", "upload_error.poll": "নির্বাচনক্ষেত্রে কোনো ফাইল যুক্ত করা যাবেনা।",
"upload_form.audio_description": "শ্রবণশক্তি লোকদের জন্য বর্ণনা করুন",
"upload_form.description": "যারা দেখতে পায়না তাদের জন্য এটা বর্ণনা করতে",
"upload_form.edit": "সম্পাদন", "upload_form.edit": "সম্পাদন",
"upload_form.thumbnail": "থাম্বনেল পরিবর্তন করুন",
"upload_form.video_description": "শ্রবণশক্তি হ্রাস বা চাক্ষুষ প্রতিবন্ধী ব্যক্তিদের জন্য বর্ণনা করুন",
"upload_modal.analyzing_picture": "চিত্র বিশ্লেষণ করা হচ্ছে…",
"upload_modal.apply": "প্রয়োগ করুন",
"upload_modal.applying": "প্রয়োগ করা হচ্ছে…",
"upload_modal.choose_image": "ছবি নির্বাচন করুন",
"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.close": "ভিডিওটি বন্ধ করতে",
"video.download": "ফাইলটি ডাউনলোড করুন", "video.download": "ফাইলটি ডাউনলোড করুন",

View file

@ -595,21 +595,7 @@
"upload_button.label": "Ouzhpennañ ur media", "upload_button.label": "Ouzhpennañ ur media",
"upload_error.limit": "Bevenn evit pellgargañ restroù a zo distremenet.", "upload_error.limit": "Bevenn evit pellgargañ restroù a zo distremenet.",
"upload_error.poll": "Pellgargañ restroù n'eo ket aotreet gant sontadegoù.", "upload_error.poll": "Pellgargañ restroù n'eo ket aotreet gant sontadegoù.",
"upload_form.audio_description": "Diskrivañ evit tud a zo kollet o c'hlev",
"upload_form.description": "Diskrivañ evit tud a zo kollet o gweled",
"upload_form.edit": "Kemmañ", "upload_form.edit": "Kemmañ",
"upload_form.thumbnail": "Kemmañ ar velvenn",
"upload_form.video_description": "Diskrivañ evit tud a zo kollet o gweled pe o c'hlev",
"upload_modal.analyzing_picture": "O tielfennañ ar skeudenn…",
"upload_modal.apply": "Arloañ",
"upload_modal.applying": "Oc'h arloañ…",
"upload_modal.choose_image": "Dibab ur skeudenn",
"upload_modal.description_placeholder": "Ul louarn gell mibin a zo o lammat a-zioc'h ar c'hi lezirek",
"upload_modal.detect_text": "Dinoiñ testenn diouzh ar skeudenn",
"upload_modal.edit_media": "Embann ar media",
"upload_modal.hint": "Klikit pe tennit ar c'helc'h war ar rakwel evit dibab al lerc'h kengreizel a vo gwelet atav war an holl melvennoù.",
"upload_modal.preparing_ocr": "Oc'h aozañ OCR…",
"upload_modal.preview_label": "Rakwel ({ratio})",
"upload_progress.label": "O pellgargañ...", "upload_progress.label": "O pellgargañ...",
"upload_progress.processing": "War ober…", "upload_progress.processing": "War ober…",
"username.taken": "Tapet eo an anv implijer-mañ dija. Klaskit skrivañ unan all", "username.taken": "Tapet eo an anv implijer-mañ dija. Klaskit skrivañ unan all",

View file

@ -61,8 +61,5 @@
"status.open": "Expand this status", "status.open": "Expand this status",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_progress.label": "Uploading…" "upload_progress.label": "Uploading…"
} }

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "S'ha produït un error inesperat.", "alert.unexpected.message": "S'ha produït un error inesperat.",
"alert.unexpected.title": "Vaja!", "alert.unexpected.title": "Vaja!",
"alt_text_badge.title": "Text alternatiu", "alt_text_badge.title": "Text alternatiu",
"alt_text_modal.add_alt_text": "Afegiu text alternatiu",
"alt_text_modal.add_text_from_image": "Afegiu text d'una imatge",
"alt_text_modal.cancel": "Cancel·la",
"alt_text_modal.change_thumbnail": "Canvia la miniatura",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Descriu això per a persones amb problemes d'audició…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Descriu això per a persones amb problemes visuals…",
"alt_text_modal.done": "Fet",
"announcement.announcement": "Anunci", "announcement.announcement": "Anunci",
"annual_report.summary.archetype.booster": "Sempre a la moda", "annual_report.summary.archetype.booster": "Sempre a la moda",
"annual_report.summary.archetype.lurker": "Tot ho llegeix", "annual_report.summary.archetype.lurker": "Tot ho llegeix",
@ -875,26 +882,12 @@
"upload_button.label": "Afegeix imatges, un vídeo o un fitxer d'àudio", "upload_button.label": "Afegeix imatges, un vídeo o un fitxer d'àudio",
"upload_error.limit": "S'ha superat el límit de càrrega d'arxius.", "upload_error.limit": "S'ha superat el límit de càrrega d'arxius.",
"upload_error.poll": "No es permet carregar fitxers a les enquestes.", "upload_error.poll": "No es permet carregar fitxers a les enquestes.",
"upload_form.audio_description": "Descriu-ho per a persones amb problemes d'audició",
"upload_form.description": "Descriu-ho per a persones amb problemes de visió",
"upload_form.drag_and_drop.instructions": "Per a agafar un fitxer multimèdia adjunt, premeu l'espai o la tecla Enter. Mentre l'arrossegueu, utilitzeu les fletxes per a moure l'adjunt en qualsevol direcció. Premeu espai o Enter un altre cop per a deixar-lo anar a la seva nova posició, o premeu la tecla d'escapament per cancel·lar.", "upload_form.drag_and_drop.instructions": "Per a agafar un fitxer multimèdia adjunt, premeu l'espai o la tecla Enter. Mentre l'arrossegueu, utilitzeu les fletxes per a moure l'adjunt en qualsevol direcció. Premeu espai o Enter un altre cop per a deixar-lo anar a la seva nova posició, o premeu la tecla d'escapament per cancel·lar.",
"upload_form.drag_and_drop.on_drag_cancel": "S'ha cancel·lat l'arrossegament. S'ha deixat anar l'adjunt multimèdia {item}.", "upload_form.drag_and_drop.on_drag_cancel": "S'ha cancel·lat l'arrossegament. S'ha deixat anar l'adjunt multimèdia {item}.",
"upload_form.drag_and_drop.on_drag_end": "S'ha deixat anar l'adjunt multimèdia {item}.", "upload_form.drag_and_drop.on_drag_end": "S'ha deixat anar l'adjunt multimèdia {item}.",
"upload_form.drag_and_drop.on_drag_over": "S'ha mogut l'adjunt multimèdia {item}.", "upload_form.drag_and_drop.on_drag_over": "S'ha mogut l'adjunt multimèdia {item}.",
"upload_form.drag_and_drop.on_drag_start": "S'ha agafat l'adjunt multimèdia {item}.", "upload_form.drag_and_drop.on_drag_start": "S'ha agafat l'adjunt multimèdia {item}.",
"upload_form.edit": "Edita", "upload_form.edit": "Edita",
"upload_form.thumbnail": "Canvia la miniatura",
"upload_form.video_description": "Descriu-ho per a persones amb problemes de visió o audició",
"upload_modal.analyzing_picture": "S'analitza la imatge…",
"upload_modal.apply": "Aplica",
"upload_modal.applying": "S'aplica…",
"upload_modal.choose_image": "Tria la imatge",
"upload_modal.description_placeholder": "Setze jutges d'un jutjat mengen fetge d'un penjat",
"upload_modal.detect_text": "Detecta el text de la imatge",
"upload_modal.edit_media": "Edita el Mèdia",
"upload_modal.hint": "Fes clic o arrossega el cercle en la previsualització per a triar el punt focal que sempre serà visible en totes les miniatures.",
"upload_modal.preparing_ocr": "Es prepara l'OCR…",
"upload_modal.preview_label": "Previsualitza ({ratio})",
"upload_progress.label": "Pujant...", "upload_progress.label": "Pujant...",
"upload_progress.processing": "En procés…", "upload_progress.processing": "En procés…",
"username.taken": "Aquest nom d'usuari ja està agafat. Prova un altre", "username.taken": "Aquest nom d'usuari ja està agafat. Prova un altre",

View file

@ -554,21 +554,7 @@
"upload_button.label": "وێنە، ڤیدیۆ یان پەیامی دەنگی زیاد بکە", "upload_button.label": "وێنە، ڤیدیۆ یان پەیامی دەنگی زیاد بکە",
"upload_error.limit": "سنووری بەرزکردنەوەت بەزاندووە.", "upload_error.limit": "سنووری بەرزکردنەوەت بەزاندووە.",
"upload_error.poll": "فایل و ڕاپرسی پێکەوە ڕێپێنەدراون.", "upload_error.poll": "فایل و ڕاپرسی پێکەوە ڕێپێنەدراون.",
"upload_form.audio_description": "پەیامەکەت بۆ نابیستەکان",
"upload_form.description": "پەیامەکەت بۆ نابیناکان",
"upload_form.edit": "دەستکاری", "upload_form.edit": "دەستکاری",
"upload_form.thumbnail": "گۆڕانی وینۆچکە",
"upload_form.video_description": "پەیامەکەت بۆ نابیست و نابیناکان",
"upload_modal.analyzing_picture": "وێنەکە شی دەکرێتەوە…",
"upload_modal.apply": "بیسەپێنە",
"upload_modal.applying": "داواکاری…",
"upload_modal.choose_image": "وێنە هەڵبژێرە",
"upload_modal.description_placeholder": "بە دڵ کەین با بە نەشئەی مەی غوباری میحنەتی دونیا",
"upload_modal.detect_text": "نووسینی ناو وێنەکە دەستنیشان بکە",
"upload_modal.edit_media": "دەستکاریکردنی میدیا",
"upload_modal.hint": "گەر وێنە چکۆلە یان بڕاوەبێت، خاڵی ناوەندی دیار دەکەوێت. خاڵی ناوەندی وێنە بە کرتە یان جێبەجیکردنی رێکبخەن.",
"upload_modal.preparing_ocr": "نووسینەکە دەستنیشان دەکرێت…",
"upload_modal.preview_label": "پێشبینین ({ratio})",
"upload_progress.label": "بار دەکرێت...", "upload_progress.label": "بار دەکرێت...",
"upload_progress.processing": "جێبەجێکردن...", "upload_progress.processing": "جێبەجێکردن...",
"video.close": "داخستنی ڤیدیۆ", "video.close": "داخستنی ڤیدیۆ",

View file

@ -333,21 +333,7 @@
"upload_button.label": "Aghjunghje un media", "upload_button.label": "Aghjunghje un media",
"upload_error.limit": "Limita di caricamentu di fugliali trapassata.", "upload_error.limit": "Limita di caricamentu di fugliali trapassata.",
"upload_error.poll": "Ùn si pò micca caricà fugliali cù i scandagli.", "upload_error.poll": "Ùn si pò micca caricà fugliali cù i scandagli.",
"upload_form.audio_description": "Discrizzione per i ciochi",
"upload_form.description": "Discrizzione per i malvistosi",
"upload_form.edit": "Mudificà", "upload_form.edit": "Mudificà",
"upload_form.thumbnail": "Cambià vignetta",
"upload_form.video_description": "Discrizzione per i ciochi o cechi",
"upload_modal.analyzing_picture": "Analisi di u ritrattu…",
"upload_modal.apply": "Affettà",
"upload_modal.applying": "Appiegazione…",
"upload_modal.choose_image": "Cambià ritrattu",
"upload_modal.description_placeholder": "Chì tempi brevi ziu, quandu solfeghji",
"upload_modal.detect_text": "Ditettà testu da u ritrattu",
"upload_modal.edit_media": "Cambià media",
"upload_modal.hint": "Cliccate o sguillate u chjerchju nant'à a vista per sceglie u puntu fucale chì sarà sempre in vista indè tutte e miniature.",
"upload_modal.preparing_ocr": "Priparazione di l'OCR…",
"upload_modal.preview_label": "Vista ({ratio})",
"upload_progress.label": "Caricamentu...", "upload_progress.label": "Caricamentu...",
"video.close": "Chjudà a video", "video.close": "Chjudà a video",
"video.download": "Scaricà fugliale", "video.download": "Scaricà fugliale",

View file

@ -875,26 +875,12 @@
"upload_button.label": "Přidat obrázky, video nebo audio soubor", "upload_button.label": "Přidat obrázky, video nebo audio soubor",
"upload_error.limit": "Byl překročen limit nahraných souborů.", "upload_error.limit": "Byl překročen limit nahraných souborů.",
"upload_error.poll": "Nahrávání souborů není povoleno s anketami.", "upload_error.poll": "Nahrávání souborů není povoleno s anketami.",
"upload_form.audio_description": "Popis pro sluchově postižené",
"upload_form.description": "Popis pro zrakově postižené",
"upload_form.drag_and_drop.instructions": "Chcete-li zvednout přílohu, stiskněte mezerník nebo enter. Při přetažení použijte klávesnicové šipky k přesunutí mediální přílohy v libovolném směru. Stiskněte mezerník nebo enter pro vložení přílohy do nové pozice, nebo stiskněte Esc pro ukončení.", "upload_form.drag_and_drop.instructions": "Chcete-li zvednout přílohu, stiskněte mezerník nebo enter. Při přetažení použijte klávesnicové šipky k přesunutí mediální přílohy v libovolném směru. Stiskněte mezerník nebo enter pro vložení přílohy do nové pozice, nebo stiskněte Esc pro ukončení.",
"upload_form.drag_and_drop.on_drag_cancel": "Přetažení bylo zrušeno. Příloha {item} byla vrácena.", "upload_form.drag_and_drop.on_drag_cancel": "Přetažení bylo zrušeno. Příloha {item} byla vrácena.",
"upload_form.drag_and_drop.on_drag_end": "Příloha {item} byla vrácena.", "upload_form.drag_and_drop.on_drag_end": "Příloha {item} byla vrácena.",
"upload_form.drag_and_drop.on_drag_over": "Příloha {item} byla přesunuta.", "upload_form.drag_and_drop.on_drag_over": "Příloha {item} byla přesunuta.",
"upload_form.drag_and_drop.on_drag_start": "Zvednuta příloha {item}.", "upload_form.drag_and_drop.on_drag_start": "Zvednuta příloha {item}.",
"upload_form.edit": "Upravit", "upload_form.edit": "Upravit",
"upload_form.thumbnail": "Změnit miniaturu",
"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.applying": "Aplikuji…",
"upload_modal.choose_image": "Vybrat obrázek",
"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 oblast, která bude na všech náhledech vždy zobrazen.",
"upload_modal.preparing_ocr": "Příprava OCR…",
"upload_modal.preview_label": "Náhled ({ratio})",
"upload_progress.label": "Nahrávání...", "upload_progress.label": "Nahrávání...",
"upload_progress.processing": "Zpracovávání…", "upload_progress.processing": "Zpracovávání…",
"username.taken": "Toto uživatelské jméno je obsazeno. Zkuste jiné", "username.taken": "Toto uživatelské jméno je obsazeno. Zkuste jiné",

View file

@ -874,26 +874,12 @@
"upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Wedi pasio'r uchafswm llwytho.", "upload_error.limit": "Wedi pasio'r uchafswm llwytho.",
"upload_error.poll": "Nid oes modd llwytho ffeiliau â phleidleisiau.", "upload_error.poll": "Nid oes modd llwytho 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.drag_and_drop.instructions": "I godi atodiad cyfryngau, pwyswch y space neu enter. Wrth lusgo, defnyddiwch y bysellau saeth i symud yr atodiad cyfryngau i unrhyw gyfeiriad penodol. Pwyswch space neu enter eto i ollwng yr atodiad cyfryngau yn ei safle newydd, neu pwyswch escape i ddiddymu.", "upload_form.drag_and_drop.instructions": "I godi atodiad cyfryngau, pwyswch y space neu enter. Wrth lusgo, defnyddiwch y bysellau saeth i symud yr atodiad cyfryngau i unrhyw gyfeiriad penodol. Pwyswch space neu enter eto i ollwng yr atodiad cyfryngau yn ei safle newydd, neu pwyswch escape i ddiddymu.",
"upload_form.drag_and_drop.on_drag_cancel": "Cafodd llusgo ei ddiddymu. Cafodd atodiad cyfryngau {item} ei ollwng.", "upload_form.drag_and_drop.on_drag_cancel": "Cafodd llusgo ei ddiddymu. Cafodd atodiad cyfryngau {item} ei ollwng.",
"upload_form.drag_and_drop.on_drag_end": "Cafodd atodiad cyfryngau {item} ei ollwng.", "upload_form.drag_and_drop.on_drag_end": "Cafodd atodiad cyfryngau {item} ei ollwng.",
"upload_form.drag_and_drop.on_drag_over": "Symudwyd atodiad cyfryngau {item}.", "upload_form.drag_and_drop.on_drag_over": "Symudwyd atodiad cyfryngau {item}.",
"upload_form.drag_and_drop.on_drag_start": "Atodiad cyfryngau godwyd {item}.", "upload_form.drag_and_drop.on_drag_start": "Atodiad cyfryngau godwyd {item}.",
"upload_form.edit": "Golygu", "upload_form.edit": "Golygu",
"upload_form.thumbnail": "Newid llun bach",
"upload_form.video_description": "Disgrifio ar gyfer pobl sydd â cholled clyw neu amhariad golwg",
"upload_modal.analyzing_picture": "Yn dadansoddi llun…",
"upload_modal.apply": "Gosod",
"upload_modal.applying": "Yn gosod…",
"upload_modal.choose_image": "Dewis delwedd",
"upload_modal.description_placeholder": "Mae ei phen bach llawn jocs, 'run peth a fy nghot golff, rhai dyddiau",
"upload_modal.detect_text": "Canfod testun o'r llun",
"upload_modal.edit_media": "Golygu cyfryngau",
"upload_modal.hint": "Cliciwch neu llusgwch y cylch ar y rhagolwg i ddewis y canolbwynt a fydd bob amser i'w weld ar bob llun bach.",
"upload_modal.preparing_ocr": "Yn paratoi OCR…",
"upload_modal.preview_label": "Rhagolwg ({ratio})",
"upload_progress.label": "Yn llwytho...", "upload_progress.label": "Yn llwytho...",
"upload_progress.processing": "Wrthi'n prosesu…", "upload_progress.processing": "Wrthi'n prosesu…",
"username.taken": "Mae'r enw defnyddiwr hwnnw'n cael ei ddefnyddio eisoes. Rhowch gynnig ar un arall", "username.taken": "Mae'r enw defnyddiwr hwnnw'n cael ei ddefnyddio eisoes. Rhowch gynnig ar un arall",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "En uventet fejl opstod.", "alert.unexpected.message": "En uventet fejl opstod.",
"alert.unexpected.title": "Ups!", "alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Alt text", "alt_text_badge.title": "Alt text",
"alt_text_modal.add_alt_text": "Tilføj alternativ tekst",
"alt_text_modal.add_text_from_image": "Tilføj tekst fra billede",
"alt_text_modal.cancel": "Afbryd",
"alt_text_modal.change_thumbnail": "Skift miniature",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Beskriv dette for personer med nedsat hørelse…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Beskriv dette for personer med nedsat syn…",
"alt_text_modal.done": "Færdig",
"announcement.announcement": "Bekendtgørelse", "announcement.announcement": "Bekendtgørelse",
"annual_report.summary.archetype.booster": "Cool-hunter", "annual_report.summary.archetype.booster": "Cool-hunter",
"annual_report.summary.archetype.lurker": "Lurker", "annual_report.summary.archetype.lurker": "Lurker",
@ -875,26 +882,12 @@
"upload_button.label": "Tilføj billed-, video- eller lydfil(er)", "upload_button.label": "Tilføj billed-, video- eller lydfil(er)",
"upload_error.limit": "Grænse for filupload nået.", "upload_error.limit": "Grænse for filupload nået.",
"upload_error.poll": "Filupload ikke tilladt for afstemninger.", "upload_error.poll": "Filupload ikke tilladt for afstemninger.",
"upload_form.audio_description": "Beskrivelse til hørehæmmede",
"upload_form.description": "Beskrivelse til svagtseende",
"upload_form.drag_and_drop.instructions": "For at opsamle en medievedhæftning, tryk på Mellemrum eller Retur. Mens der trækkes, benyt piletasterne til at flytte medievedhæftningen i en given retning. Tryk på Mellemrum eller Retur igen for at slippe medievedhæftningen på den nye position, eller tryk på Escape for at afbryde.", "upload_form.drag_and_drop.instructions": "For at opsamle en medievedhæftning, tryk på Mellemrum eller Retur. Mens der trækkes, benyt piletasterne til at flytte medievedhæftningen i en given retning. Tryk på Mellemrum eller Retur igen for at slippe medievedhæftningen på den nye position, eller tryk på Escape for at afbryde.",
"upload_form.drag_and_drop.on_drag_cancel": "Træk blev afbrudt. Medievedhæftningen {item} blev sluppet.", "upload_form.drag_and_drop.on_drag_cancel": "Træk blev afbrudt. Medievedhæftningen {item} blev sluppet.",
"upload_form.drag_and_drop.on_drag_end": "Medievedhæftningen {item} er sluppet.", "upload_form.drag_and_drop.on_drag_end": "Medievedhæftningen {item} er sluppet.",
"upload_form.drag_and_drop.on_drag_over": "Medievedhæftningen {item} er flyttet.", "upload_form.drag_and_drop.on_drag_over": "Medievedhæftningen {item} er flyttet.",
"upload_form.drag_and_drop.on_drag_start": "Opsamlede medievedhæftningen {item}.", "upload_form.drag_and_drop.on_drag_start": "Opsamlede medievedhæftningen {item}.",
"upload_form.edit": "Redigér", "upload_form.edit": "Redigér",
"upload_form.thumbnail": "Skift miniature",
"upload_form.video_description": "Beskrivelse for hørehæmmede eller synshandicappede personer",
"upload_modal.analyzing_picture": "Analyserer billede…",
"upload_modal.apply": "Anvend",
"upload_modal.applying": "Effektuerer…",
"upload_modal.choose_image": "Vælg billede",
"upload_modal.description_placeholder": "En hurtig brun ræv hopper over den dovne hund",
"upload_modal.detect_text": "Detektér tekst i billede",
"upload_modal.edit_media": "Redigér medie",
"upload_modal.hint": "Klik eller træk cirklen i forhåndsvisningen for at vælge det fokuspunkt, der altid vil være synligt på alle miniaturer.",
"upload_modal.preparing_ocr": "Klargør OCR…",
"upload_modal.preview_label": "Forhåndsvisning ({ratio})",
"upload_progress.label": "Uploader...", "upload_progress.label": "Uploader...",
"upload_progress.processing": "Behandler…", "upload_progress.processing": "Behandler…",
"username.taken": "Brugernavnet er taget. Prøv et andet", "username.taken": "Brugernavnet er taget. Prøv et andet",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.", "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.",
"alert.unexpected.title": "Oha!", "alert.unexpected.title": "Oha!",
"alt_text_badge.title": "Bildbeschreibung", "alt_text_badge.title": "Bildbeschreibung",
"alt_text_modal.add_alt_text": "Bildbeschreibung hinzufügen",
"alt_text_modal.add_text_from_image": "Text aus Bild hinzufügen",
"alt_text_modal.cancel": "Abbrechen",
"alt_text_modal.change_thumbnail": "Vorschaubild ändern",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Beschreibe den Inhalt für Menschen mit Schwerhörigkeit …",
"alt_text_modal.describe_for_people_with_visual_impairments": "Beschreibe den Inhalt für Menschen mit Sehschwäche …",
"alt_text_modal.done": "Fertig",
"announcement.announcement": "Ankündigung", "announcement.announcement": "Ankündigung",
"annual_report.summary.archetype.booster": "Trendjäger*in", "annual_report.summary.archetype.booster": "Trendjäger*in",
"annual_report.summary.archetype.lurker": "Beobachter*in", "annual_report.summary.archetype.lurker": "Beobachter*in",
@ -875,26 +882,12 @@
"upload_button.label": "Bilder, Video oder Audio hinzufügen", "upload_button.label": "Bilder, Video oder Audio hinzufügen",
"upload_error.limit": "Dateiupload-Limit überschritten.", "upload_error.limit": "Dateiupload-Limit überschritten.",
"upload_error.poll": "Medien-Anhänge sind zusammen mit Umfragen nicht erlaubt.", "upload_error.poll": "Medien-Anhänge sind zusammen mit Umfragen nicht erlaubt.",
"upload_form.audio_description": "Beschreibe für Menschen mit Hörbehinderung",
"upload_form.description": "Beschreibe für Menschen mit Sehbehinderung",
"upload_form.drag_and_drop.instructions": "Drücke zum Aufnehmen eines Medienanhangs die Eingabe- oder Leertaste. Verwende beim Ziehen die Pfeiltasten, um den Medienanhang zur gewünschten Position zu bewegen. Drücke erneut die Eingabe- oder Leertaste, um den Medienanhang an der gewünschten Position abzulegen. Mit der Escape-Taste kannst du den Vorgang abbrechen.", "upload_form.drag_and_drop.instructions": "Drücke zum Aufnehmen eines Medienanhangs die Eingabe- oder Leertaste. Verwende beim Ziehen die Pfeiltasten, um den Medienanhang zur gewünschten Position zu bewegen. Drücke erneut die Eingabe- oder Leertaste, um den Medienanhang an der gewünschten Position abzulegen. Mit der Escape-Taste kannst du den Vorgang abbrechen.",
"upload_form.drag_and_drop.on_drag_cancel": "Das Ziehen wurde abgebrochen und der Medienanhang {item} wurde abgelegt.", "upload_form.drag_and_drop.on_drag_cancel": "Das Ziehen wurde abgebrochen und der Medienanhang {item} wurde abgelegt.",
"upload_form.drag_and_drop.on_drag_end": "Der Medienanhang {item} wurde abgelegt.", "upload_form.drag_and_drop.on_drag_end": "Der Medienanhang {item} wurde abgelegt.",
"upload_form.drag_and_drop.on_drag_over": "Der Medienanhang {item} wurde bewegt.", "upload_form.drag_and_drop.on_drag_over": "Der Medienanhang {item} wurde bewegt.",
"upload_form.drag_and_drop.on_drag_start": "Der Medienanhang {item} wurde aufgenommen.", "upload_form.drag_and_drop.on_drag_start": "Der Medienanhang {item} wurde aufgenommen.",
"upload_form.edit": "Bearbeiten", "upload_form.edit": "Bearbeiten",
"upload_form.thumbnail": "Vorschaubild ändern",
"upload_form.video_description": "Beschreibe für Menschen mit einer Hör- oder Sehbehinderung",
"upload_modal.analyzing_picture": "Bild wird analysiert …",
"upload_modal.apply": "Übernehmen",
"upload_modal.applying": "Wird übernommen …",
"upload_modal.choose_image": "Bild auswählen",
"upload_modal.description_placeholder": "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich",
"upload_modal.detect_text": "Text aus Bild erkennen",
"upload_modal.edit_media": "Medien bearbeiten",
"upload_modal.hint": "Ziehe den Kreis auf die Stelle deines Bildes, um den Fokuspunkt festzulegen, der bei Vorschaubildern immer zu sehen sein soll.",
"upload_modal.preparing_ocr": "Texterkennung wird vorbereitet …",
"upload_modal.preview_label": "Vorschau ({ratio})",
"upload_progress.label": "Wird hochgeladen …", "upload_progress.label": "Wird hochgeladen …",
"upload_progress.processing": "Wird verarbeitet…", "upload_progress.processing": "Wird verarbeitet…",
"username.taken": "Dieser Profilname ist vergeben. Versuche einen anderen", "username.taken": "Dieser Profilname ist vergeben. Versuche einen anderen",

View file

@ -873,26 +873,12 @@
"upload_button.label": "Πρόσθεσε εικόνες, ένα βίντεο ή ένα αρχείο ήχου", "upload_button.label": "Πρόσθεσε εικόνες, ένα βίντεο ή ένα αρχείο ήχου",
"upload_error.limit": "Υπέρβαση ορίου μεγέθους ανεβασμένων αρχείων.", "upload_error.limit": "Υπέρβαση ορίου μεγέθους ανεβασμένων αρχείων.",
"upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.", "upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.",
"upload_form.audio_description": "Περιγραφή για άτομα με προβλήματα ακοής",
"upload_form.description": "Περιγραφή για άτομα με προβλήματα όρασης",
"upload_form.drag_and_drop.instructions": "Για να επιλέξετε ένα συνημμένο αρχείο πολυμέσων, πατήστε το Space ή το Enter. Ενώ το σέρνετε, χρησιμοποιήστε τα πλήκτρα βέλους για να μετακινήσετε το συνημμένο αρχείο πολυμέσων προς οποιαδήποτε κατεύθυνση. Πατήστε ξανά το Space ή το Enter για να αποθέσετε το συνημμένο αρχείο πολυμέσων στη νέα του θέση ή πατήστε το Escape για ακύρωση.", "upload_form.drag_and_drop.instructions": "Για να επιλέξετε ένα συνημμένο αρχείο πολυμέσων, πατήστε το Space ή το Enter. Ενώ το σέρνετε, χρησιμοποιήστε τα πλήκτρα βέλους για να μετακινήσετε το συνημμένο αρχείο πολυμέσων προς οποιαδήποτε κατεύθυνση. Πατήστε ξανά το Space ή το Enter για να αποθέσετε το συνημμένο αρχείο πολυμέσων στη νέα του θέση ή πατήστε το Escape για ακύρωση.",
"upload_form.drag_and_drop.on_drag_cancel": "Η μετακίνηση ακυρώθηκε. Έγινε απόθεση του συνημμένου αρχείου πολυμέσων «{item}».", "upload_form.drag_and_drop.on_drag_cancel": "Η μετακίνηση ακυρώθηκε. Έγινε απόθεση του συνημμένου αρχείου πολυμέσων «{item}».",
"upload_form.drag_and_drop.on_drag_end": "Έγινε απόθεση του συνημμένου αρχείου πολυμέσων «{item}».", "upload_form.drag_and_drop.on_drag_end": "Έγινε απόθεση του συνημμένου αρχείου πολυμέσων «{item}».",
"upload_form.drag_and_drop.on_drag_over": "Έγινε μετακίνηση του συνημμένου αρχείου πολυμέσων «{item}».", "upload_form.drag_and_drop.on_drag_over": "Έγινε μετακίνηση του συνημμένου αρχείου πολυμέσων «{item}».",
"upload_form.drag_and_drop.on_drag_start": "Έγινε επιλογή του συνημμένου αρχείου πολυμέσων «{item}».", "upload_form.drag_and_drop.on_drag_start": "Έγινε επιλογή του συνημμένου αρχείου πολυμέσων «{item}».",
"upload_form.edit": "Επεξεργασία", "upload_form.edit": "Επεξεργασία",
"upload_form.thumbnail": "Αλλαγή μικρογραφίας",
"upload_form.video_description": "Περιγραφή για άτομα με προβλήματα ακοής ή όρασης",
"upload_modal.analyzing_picture": "Ανάλυση εικόνας…",
"upload_modal.apply": "Εφαρμογή",
"upload_modal.applying": "Εφαρμογή…",
"upload_modal.choose_image": "Επιλογή εικόνας",
"upload_modal.description_placeholder": "Αρνάκι άσπρο και παχύ της μάνας του καμάρι",
"upload_modal.detect_text": "Αναγνώριση κειμένου από την εικόνα",
"upload_modal.edit_media": "Επεξεργασία Πολυμέσων",
"upload_modal.hint": "Κάνε κλικ ή σείρε τον κύκλο στην προεπισκόπηση για να επιλέξεις το σημείο εστίασης που θα είναι πάντα εμφανές σε όλες τις μικρογραφίες.",
"upload_modal.preparing_ocr": "Προετοιμασία αναγνώρισης κειμένου…",
"upload_modal.preview_label": "Προεπισκόπηση ({ratio})",
"upload_progress.label": "Μεταφόρτωση...", "upload_progress.label": "Μεταφόρτωση...",
"upload_progress.processing": "Επεξεργασία…", "upload_progress.processing": "Επεξεργασία…",
"username.taken": "Αυτό το όνομα χρήστη χρησιμοποιείται. Δοκίμασε ένα άλλο", "username.taken": "Αυτό το όνομα χρήστη χρησιμοποιείται. Δοκίμασε ένα άλλο",

View file

@ -103,6 +103,7 @@
"annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag", "annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag",
"annual_report.summary.most_used_hashtag.none": "None", "annual_report.summary.most_used_hashtag.none": "None",
"annual_report.summary.new_posts.new_posts": "new posts", "annual_report.summary.new_posts.new_posts": "new posts",
"annual_report.summary.percentile.text": "<topLabel>That puts you in the top</topLabel><percentage></percentage><bottomLabel>of {domain} users.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.", "annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.",
"annual_report.summary.thanks": "Thanks for being part of Mastodon!", "annual_report.summary.thanks": "Thanks for being part of Mastodon!",
"attachments_list.unprocessed": "(unprocessed)", "attachments_list.unprocessed": "(unprocessed)",
@ -128,6 +129,7 @@
"bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
"bundle_column_error.routing.title": "404", "bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Close", "bundle_modal_error.close": "Close",
"bundle_modal_error.message": "Something went wrong while loading this screen.",
"bundle_modal_error.retry": "Try again", "bundle_modal_error.retry": "Try again",
"closed_registrations.other_server_instructions": "Since Mastodon is decentralised, you can create an account on another server and still interact with this one.", "closed_registrations.other_server_instructions": "Since Mastodon is decentralised, you can create an account on another server and still interact with this one.",
"closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
@ -203,6 +205,9 @@
"confirmations.edit.confirm": "Edit", "confirmations.edit.confirm": "Edit",
"confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
"confirmations.edit.title": "Overwrite post?", "confirmations.edit.title": "Overwrite post?",
"confirmations.follow_to_list.confirm": "Follow and add to list",
"confirmations.follow_to_list.message": "You need to be following {name} to add them to a list.",
"confirmations.follow_to_list.title": "Follow user?",
"confirmations.logout.confirm": "Log out", "confirmations.logout.confirm": "Log out",
"confirmations.logout.message": "Are you sure you want to log out?", "confirmations.logout.message": "Are you sure you want to log out?",
"confirmations.logout.title": "Log out?", "confirmations.logout.title": "Log out?",
@ -234,6 +239,10 @@
"disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
"dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
"dismissable_banner.dismiss": "Dismiss", "dismissable_banner.dismiss": "Dismiss",
"dismissable_banner.explore_links": "These news stories are being shared the most on the Fediverse today. Newer news stories posted by more different people are ranked higher.",
"dismissable_banner.explore_statuses": "These posts from across the Fediverse are gaining traction today. Newer posts with more boosts and favourites are ranked higher.",
"dismissable_banner.explore_tags": "These hashtags are gaining traction on the Fediverse today. Hashtags that are used by more different people are ranked higher.",
"dismissable_banner.public_timeline": "These are the most recent public posts from people on the Fediverse that people on {domain} follow.",
"domain_block_modal.block": "Block server", "domain_block_modal.block": "Block server",
"domain_block_modal.block_account_instead": "Block @{name} instead", "domain_block_modal.block_account_instead": "Block @{name} instead",
"domain_block_modal.they_can_interact_with_old_posts": "People from this server can interact with your old posts.", "domain_block_modal.they_can_interact_with_old_posts": "People from this server can interact with your old posts.",
@ -353,8 +362,10 @@
"footer.privacy_policy": "Privacy policy", "footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code", "footer.source_code": "View source code",
"footer.status": "Status", "footer.status": "Status",
"footer.terms_of_service": "Terms of service",
"generic.saved": "Saved", "generic.saved": "Saved",
"getting_started.heading": "Getting started", "getting_started.heading": "Getting started",
"hashtag.admin_moderation": "Open moderation interface for #{name}",
"hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.all": "and {additional}",
"hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.any": "or {additional}",
"hashtag.column_header.tag_mode.none": "without {additional}", "hashtag.column_header.tag_mode.none": "without {additional}",
@ -396,6 +407,13 @@
"ignore_notifications_modal.not_followers_title": "Ignore notifications from people not following you?", "ignore_notifications_modal.not_followers_title": "Ignore notifications from people not following you?",
"ignore_notifications_modal.not_following_title": "Ignore notifications from people you don't follow?", "ignore_notifications_modal.not_following_title": "Ignore notifications from people you don't follow?",
"ignore_notifications_modal.private_mentions_title": "Ignore notifications from unsolicited Private Mentions?", "ignore_notifications_modal.private_mentions_title": "Ignore notifications from unsolicited Private Mentions?",
"interaction_modal.action.favourite": "To continue, you need to favourite from your account.",
"interaction_modal.action.follow": "To continue, you need to follow from your account.",
"interaction_modal.action.reblog": "To continue, you need to reblog from your account.",
"interaction_modal.action.reply": "To continue, you need to reply from your account.",
"interaction_modal.action.vote": "To continue, you need to vote from your account.",
"interaction_modal.go": "Go",
"interaction_modal.no_account_yet": "Don't have an account yet?",
"interaction_modal.on_another_server": "On a different server", "interaction_modal.on_another_server": "On a different server",
"interaction_modal.on_this_server": "On this server", "interaction_modal.on_this_server": "On this server",
"interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.favourite": "Favourite {name}'s post",
@ -403,6 +421,7 @@
"interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reblog": "Boost {name}'s post",
"interaction_modal.title.reply": "Reply to {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post",
"interaction_modal.title.vote": "Vote in {name}'s poll", "interaction_modal.title.vote": "Vote in {name}'s poll",
"interaction_modal.username_prompt": "E.g. {example}",
"intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@ -438,6 +457,7 @@
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "Show/hide media", "keyboard_shortcuts.toggle_sensitivity": "Show/hide media",
"keyboard_shortcuts.toot": "to start a brand new post", "keyboard_shortcuts.toot": "to start a brand new post",
"keyboard_shortcuts.translate": "to translate a post",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "Move up in the list", "keyboard_shortcuts.up": "Move up in the list",
"lightbox.close": "Close", "lightbox.close": "Close",
@ -474,6 +494,7 @@
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "No one",
"lists.save": "Save", "lists.save": "Save",
"lists.search": "Search",
"lists.show_replies_to": "Include replies from list members to", "lists.show_replies_to": "Include replies from list members to",
"load_pending": "{count, plural, one {# new item} other {# new items}}", "load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading…", "loading_indicator.label": "Loading…",
@ -527,6 +548,8 @@
"notification.annual_report.view": "View #Wrapstodon", "notification.annual_report.view": "View #Wrapstodon",
"notification.favourite": "{name} favourited your post", "notification.favourite": "{name} favourited your post",
"notification.favourite.name_and_others_with_link": "{name} and <a>{count, plural, one {# other} other {# others}}</a> favourited your post", "notification.favourite.name_and_others_with_link": "{name} and <a>{count, plural, one {# other} other {# others}}</a> favourited your post",
"notification.favourite_pm": "{name} favourited your private mention",
"notification.favourite_pm.name_and_others_with_link": "{name} and <a>{count, plural, one {# other} other {# others}}</a> favourited your private mention",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
"notification.follow.name_and_others": "{name} and <a>{count, plural, one {# other} other {# others}}</a> followed you", "notification.follow.name_and_others": "{name} and <a>{count, plural, one {# other} other {# others}}</a> followed you",
"notification.follow_request": "{name} has requested to follow you", "notification.follow_request": "{name} has requested to follow you",
@ -673,6 +696,8 @@
"privacy_policy.title": "Privacy Policy", "privacy_policy.title": "Privacy Policy",
"recommended": "Recommended", "recommended": "Recommended",
"refresh": "Refresh", "refresh": "Refresh",
"regeneration_indicator.please_stand_by": "Please stand by.",
"regeneration_indicator.preparing_your_home_feed": "Preparing your home feed…",
"relative_time.days": "{number}d", "relative_time.days": "{number}d",
"relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
"relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
@ -756,8 +781,11 @@
"search_results.accounts": "Profiles", "search_results.accounts": "Profiles",
"search_results.all": "All", "search_results.all": "All",
"search_results.hashtags": "Hashtags", "search_results.hashtags": "Hashtags",
"search_results.no_results": "No results.",
"search_results.no_search_yet": "Try searching for posts, profiles or hashtags.",
"search_results.see_all": "See all", "search_results.see_all": "See all",
"search_results.statuses": "Posts", "search_results.statuses": "Posts",
"search_results.title": "Search for \"{q}\"",
"server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
"server_banner.active_users": "active users", "server_banner.active_users": "active users",
"server_banner.administered_by": "Administered by:", "server_banner.administered_by": "Administered by:",
@ -809,6 +837,7 @@
"status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft", "status.redraft": "Delete & re-draft",
"status.remove_bookmark": "Remove bookmark", "status.remove_bookmark": "Remove bookmark",
"status.remove_favourite": "Remove from favourites",
"status.replied_in_thread": "Replied in thread", "status.replied_in_thread": "Replied in thread",
"status.replied_to": "Replied to {name}", "status.replied_to": "Replied to {name}",
"status.reply": "Reply", "status.reply": "Reply",
@ -830,6 +859,7 @@
"subscribed_languages.target": "Change subscribed languages for {target}", "subscribed_languages.target": "Change subscribed languages for {target}",
"tabs_bar.home": "Home", "tabs_bar.home": "Home",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"terms_of_service.title": "Terms of Service",
"time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
@ -845,26 +875,12 @@
"upload_button.label": "Add images, a video or an audio file", "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.", "upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.", "upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people who are deaf or hard of hearing",
"upload_form.description": "Describe for people who are blind or have low vision",
"upload_form.drag_and_drop.instructions": "To pick up a media attachment, press space or enter. While dragging, use the arrow keys to move the media attachment in any given direction. Press space or enter again to drop the media attachment in its new position, or press escape to cancel.", "upload_form.drag_and_drop.instructions": "To pick up a media attachment, press space or enter. While dragging, use the arrow keys to move the media attachment in any given direction. Press space or enter again to drop the media attachment in its new position, or press escape to cancel.",
"upload_form.drag_and_drop.on_drag_cancel": "Dragging was cancelled. Media attachment {item} was dropped.", "upload_form.drag_and_drop.on_drag_cancel": "Dragging was cancelled. Media attachment {item} was dropped.",
"upload_form.drag_and_drop.on_drag_end": "Media attachment {item} was dropped.", "upload_form.drag_and_drop.on_drag_end": "Media attachment {item} was dropped.",
"upload_form.drag_and_drop.on_drag_over": "Media attachment {item} was moved.", "upload_form.drag_and_drop.on_drag_over": "Media attachment {item} was moved.",
"upload_form.drag_and_drop.on_drag_start": "Picked up media attachment {item}.", "upload_form.drag_and_drop.on_drag_start": "Picked up media attachment {item}.",
"upload_form.edit": "Edit", "upload_form.edit": "Edit",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.video_description": "Describe for people who are deaf, hard of hearing, blind or have low vision",
"upload_modal.analyzing_picture": "Analysing picture…",
"upload_modal.apply": "Apply",
"upload_modal.applying": "Applying…",
"upload_modal.choose_image": "Choose image",
"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.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…", "upload_progress.label": "Uploading…",
"upload_progress.processing": "Processing…", "upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another", "username.taken": "That username is taken. Try another",

View file

@ -99,6 +99,13 @@
"alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!", "alert.unexpected.title": "Oops!",
"alt_text_badge.title": "Alt text", "alt_text_badge.title": "Alt text",
"alt_text_modal.add_alt_text": "Add alt text",
"alt_text_modal.add_text_from_image": "Add text from image",
"alt_text_modal.cancel": "Cancel",
"alt_text_modal.change_thumbnail": "Change thumbnail",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Describe this for people with hearing impairments…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Describe this for people with visual impairments…",
"alt_text_modal.done": "Done",
"announcement.announcement": "Announcement", "announcement.announcement": "Announcement",
"annual_report.summary.archetype.booster": "The cool-hunter", "annual_report.summary.archetype.booster": "The cool-hunter",
"annual_report.summary.archetype.lurker": "The lurker", "annual_report.summary.archetype.lurker": "The lurker",
@ -1091,26 +1098,12 @@
"upload_button.label": "Add images, a video or an audio file", "upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.", "upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.", "upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people who are deaf or hard of hearing",
"upload_form.description": "Describe for people who are blind or have low vision",
"upload_form.drag_and_drop.instructions": "To pick up a media attachment, press space or enter. While dragging, use the arrow keys to move the media attachment in any given direction. Press space or enter again to drop the media attachment in its new position, or press escape to cancel.", "upload_form.drag_and_drop.instructions": "To pick up a media attachment, press space or enter. While dragging, use the arrow keys to move the media attachment in any given direction. Press space or enter again to drop the media attachment in its new position, or press escape to cancel.",
"upload_form.drag_and_drop.on_drag_cancel": "Dragging was cancelled. Media attachment {item} was dropped.", "upload_form.drag_and_drop.on_drag_cancel": "Dragging was cancelled. Media attachment {item} was dropped.",
"upload_form.drag_and_drop.on_drag_end": "Media attachment {item} was dropped.", "upload_form.drag_and_drop.on_drag_end": "Media attachment {item} was dropped.",
"upload_form.drag_and_drop.on_drag_over": "Media attachment {item} was moved.", "upload_form.drag_and_drop.on_drag_over": "Media attachment {item} was moved.",
"upload_form.drag_and_drop.on_drag_start": "Picked up media attachment {item}.", "upload_form.drag_and_drop.on_drag_start": "Picked up media attachment {item}.",
"upload_form.edit": "Edit", "upload_form.edit": "Edit",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.video_description": "Describe for people who are deaf, hard of hearing, blind or have low vision",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.applying": "Applying…",
"upload_modal.choose_image": "Choose image",
"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.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading...", "upload_progress.label": "Uploading...",
"upload_progress.processing": "Processing…", "upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another", "username.taken": "That username is taken. Try another",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Neatendita eraro okazis.", "alert.unexpected.message": "Neatendita eraro okazis.",
"alert.unexpected.title": "Aj!", "alert.unexpected.title": "Aj!",
"alt_text_badge.title": "Alt-teksto", "alt_text_badge.title": "Alt-teksto",
"alt_text_modal.add_alt_text": "Aldoni alttekston",
"alt_text_modal.add_text_from_image": "Aldoni tekston de bildo",
"alt_text_modal.cancel": "Nuligi",
"alt_text_modal.change_thumbnail": "Ŝanĝi bildeton",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Priskribi ĉi tion por homoj kun aŭdmalkapabloj…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Priskribi ĉi tion por homoj kun vidaj malkapabloj…",
"alt_text_modal.done": "Farita",
"announcement.announcement": "Anonco", "announcement.announcement": "Anonco",
"annual_report.summary.archetype.booster": "La Ĉasanto de Mojoso", "annual_report.summary.archetype.booster": "La Ĉasanto de Mojoso",
"annual_report.summary.archetype.lurker": "La vidanto", "annual_report.summary.archetype.lurker": "La vidanto",
@ -875,26 +882,12 @@
"upload_button.label": "Aldonu bildojn, filmeton aŭ sondosieron", "upload_button.label": "Aldonu bildojn, filmeton aŭ sondosieron",
"upload_error.limit": "Limo de dosiera alŝutado transpasita.", "upload_error.limit": "Limo de dosiera alŝutado transpasita.",
"upload_error.poll": "Alŝuto de dosiero ne permesita kun balotenketo.", "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 personoj, kiuj estas blindaj aŭ havas vidmalsufiĉon",
"upload_form.drag_and_drop.instructions": "Por preni amaskomunikilaron aldonaĵon, premu spacoklavon aŭ enen-klavon. Dum trenado, uzu la sagoklavojn por movi la amaskomunikilaron aldonaĵon en iu ajn direkto. Premu spacoklavon aŭ enen-klavon denove por faligi la amaskomunikilaron aldonaĵon en ĝia nova pozicio, aŭ premu eskapan klavon por nuligi.", "upload_form.drag_and_drop.instructions": "Por preni amaskomunikilaron aldonaĵon, premu spacoklavon aŭ enen-klavon. Dum trenado, uzu la sagoklavojn por movi la amaskomunikilaron aldonaĵon en iu ajn direkto. Premu spacoklavon aŭ enen-klavon denove por faligi la amaskomunikilaron aldonaĵon en ĝia nova pozicio, aŭ premu eskapan klavon por nuligi.",
"upload_form.drag_and_drop.on_drag_cancel": "Trenado estis nuligita. Amaskomunikila aldonaĵo {item} estis forigita.", "upload_form.drag_and_drop.on_drag_cancel": "Trenado estis nuligita. Amaskomunikila aldonaĵo {item} estis forigita.",
"upload_form.drag_and_drop.on_drag_end": "Amaskomunikila aldonaĵo {item} estis forigita.", "upload_form.drag_and_drop.on_drag_end": "Amaskomunikila aldonaĵo {item} estis forigita.",
"upload_form.drag_and_drop.on_drag_over": "Amaskomunikila aldonaĵo {item} estis movita.", "upload_form.drag_and_drop.on_drag_over": "Amaskomunikila aldonaĵo {item} estis movita.",
"upload_form.drag_and_drop.on_drag_start": "Prenis amaskomunikilan aldonaĵon {item}.", "upload_form.drag_and_drop.on_drag_start": "Prenis amaskomunikilan aldonaĵon {item}.",
"upload_form.edit": "Redakti", "upload_form.edit": "Redakti",
"upload_form.thumbnail": "Ŝanĝi etigita bildo",
"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.applying": "Apliki…",
"upload_modal.choose_image": "Elekti bildon",
"upload_modal.description_placeholder": "Laŭ Ludoviko Zamenhof bongustas freŝa ĉeĥa manĝaĵo kun spicoj",
"upload_modal.detect_text": "Detekti tekston de la bildo",
"upload_modal.edit_media": "Redakti la plurmedion",
"upload_modal.hint": "Klaku aŭ trenu la cirklon en la antaŭvidilo por elekti la fokuspunkton kiu ĉiam videblos en ĉiuj etigitaj bildoj.",
"upload_modal.preparing_ocr": "Preparante OSR…",
"upload_modal.preview_label": "Antaŭvido ({ratio})",
"upload_progress.label": "Alŝutante...", "upload_progress.label": "Alŝutante...",
"upload_progress.processing": "Traktante…", "upload_progress.processing": "Traktante…",
"username.taken": "La uzantnomo estas jam posedita. Provu alion", "username.taken": "La uzantnomo estas jam posedita. Provu alion",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Ocurrió un error.", "alert.unexpected.message": "Ocurrió un error.",
"alert.unexpected.title": "¡Epa!", "alert.unexpected.title": "¡Epa!",
"alt_text_badge.title": "Texto alternativo", "alt_text_badge.title": "Texto alternativo",
"alt_text_modal.add_alt_text": "Agregar texto alternativo",
"alt_text_modal.add_text_from_image": "Agregar texto a partir de la imagen",
"alt_text_modal.cancel": "Cancelar",
"alt_text_modal.change_thumbnail": "Cambiar miniatura",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Describí esto para personas con dificultades auditivas…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Describí esto para personas con dificultades visuales…",
"alt_text_modal.done": "Listo",
"announcement.announcement": "Anuncio", "announcement.announcement": "Anuncio",
"annual_report.summary.archetype.booster": "Corrió la voz", "annual_report.summary.archetype.booster": "Corrió la voz",
"annual_report.summary.archetype.lurker": "El acechador", "annual_report.summary.archetype.lurker": "El acechador",
@ -814,7 +821,7 @@
"status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}",
"status.embed": "Obtener código para insertar", "status.embed": "Obtener código para insertar",
"status.favourite": "Marcar como favorito", "status.favourite": "Marcar como favorito",
"status.favourites": "{count, plural, one {# voto} other {# votos}}", "status.favourites": "{count, plural, one {# vez marcado como favorito} other {# veces marcado como favorito}}",
"status.filter": "Filtrar este mensaje", "status.filter": "Filtrar este mensaje",
"status.history.created": "Creado por {name}, {date}", "status.history.created": "Creado por {name}, {date}",
"status.history.edited": "Editado por {name}, {date}", "status.history.edited": "Editado por {name}, {date}",
@ -875,26 +882,12 @@
"upload_button.label": "Agregá imágenes, o un archivo de audio o video", "upload_button.label": "Agregá imágenes, o un archivo de audio o video",
"upload_error.limit": "Se excedió el límite de subida de archivos.", "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_error.poll": "No se permite la subida de archivos en encuestas.",
"upload_form.audio_description": "Agregá una descripción para personas con dificultades auditivas",
"upload_form.description": "Agregá una descripción para personas con dificultades visuales",
"upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsá la barra espaciadora o la tecla Enter. Mientras arrastrás, usá las teclas de flecha para mover el archivo multimedia en cualquier dirección. Volvé a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsá la tecla Escape para cancelar.", "upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsá la barra espaciadora o la tecla Enter. Mientras arrastrás, usá las teclas de flecha para mover el archivo multimedia en cualquier dirección. Volvé a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsá la tecla Escape para cancelar.",
"upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.", "upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.",
"upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} fue soltado.", "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} fue soltado.",
"upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} fue movido.", "upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} fue movido.",
"upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.", "upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.",
"upload_form.edit": "Editar", "upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar miniatura",
"upload_form.video_description": "Agregá una descripción para personas con dificultades auditivas o visuales",
"upload_modal.analyzing_picture": "Analizando imagen…",
"upload_modal.apply": "Aplicar",
"upload_modal.applying": "Aplicando…",
"upload_modal.choose_image": "Elegir imagen",
"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.",
"upload_modal.detect_text": "Detectar texto de la imagen",
"upload_modal.edit_media": "Editar medio",
"upload_modal.hint": "Hacé clic o arrastrá el círculo en la previsualización para elegir el punto focal que siempre estará a la vista en todas las miniaturas.",
"upload_modal.preparing_ocr": "Preparando OCR…",
"upload_modal.preview_label": "Previsualización ({ratio})",
"upload_progress.label": "Subiendo...", "upload_progress.label": "Subiendo...",
"upload_progress.processing": "Procesando…", "upload_progress.processing": "Procesando…",
"username.taken": "Ese nombre de usuario está ocupado. Probá con otro", "username.taken": "Ese nombre de usuario está ocupado. Probá con otro",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Hubo un error inesperado.", "alert.unexpected.message": "Hubo un error inesperado.",
"alert.unexpected.title": "¡Ups!", "alert.unexpected.title": "¡Ups!",
"alt_text_badge.title": "Texto alternativo", "alt_text_badge.title": "Texto alternativo",
"alt_text_modal.add_alt_text": "Añadir texto alternativo",
"alt_text_modal.add_text_from_image": "Añadir texto de la imagen",
"alt_text_modal.cancel": "Cancelar",
"alt_text_modal.change_thumbnail": "Cambiar miniatura",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Describe esto para personas con discapacidad auditiva…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Describe esto para personas con discapacidad visual…",
"alt_text_modal.done": "Hecho",
"announcement.announcement": "Anuncio", "announcement.announcement": "Anuncio",
"annual_report.summary.archetype.booster": "El cazador de tendencias", "annual_report.summary.archetype.booster": "El cazador de tendencias",
"annual_report.summary.archetype.lurker": "El merodeador", "annual_report.summary.archetype.lurker": "El merodeador",
@ -875,26 +882,12 @@
"upload_button.label": "Subir multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Subir multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Límite de subida de archivos excedido.", "upload_error.limit": "Límite de subida de archivos excedido.",
"upload_error.poll": "Subida de archivos no permitida con encuestas.", "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.drag_and_drop.instructions": "Para recoger un archivo adjunto, pulsa la barra espaciadora o la tecla Intro. Mientras arrastras, usa las teclas de flecha para mover el archivo adjunto en cualquier dirección. Vuelve a pulsar la barra espaciadora o la tecla Intro para soltar el archivo adjunto en su nueva posición, o pulsa la tecla Escape para cancelar.", "upload_form.drag_and_drop.instructions": "Para recoger un archivo adjunto, pulsa la barra espaciadora o la tecla Intro. Mientras arrastras, usa las teclas de flecha para mover el archivo adjunto en cualquier dirección. Vuelve a pulsar la barra espaciadora o la tecla Intro para soltar el archivo adjunto en su nueva posición, o pulsa la tecla Escape para cancelar.",
"upload_form.drag_and_drop.on_drag_cancel": "Arrastre cancelado. El archivo adjunto {item} fue eliminado.", "upload_form.drag_and_drop.on_drag_cancel": "Arrastre cancelado. El archivo adjunto {item} fue eliminado.",
"upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} fue eliminado.", "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} fue eliminado.",
"upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} fue movido.", "upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} fue movido.",
"upload_form.drag_and_drop.on_drag_start": "Recogidos los archivos adjuntos {item}.", "upload_form.drag_and_drop.on_drag_start": "Recogidos los archivos adjuntos {item}.",
"upload_form.edit": "Editar", "upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar miniatura",
"upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
"upload_modal.analyzing_picture": "Analizando imagen…",
"upload_modal.apply": "Aplicar",
"upload_modal.applying": "Aplicando…",
"upload_modal.choose_image": "Elegir imagen",
"upload_modal.description_placeholder": "Un rápido zorro marrón salta sobre el perro perezoso",
"upload_modal.detect_text": "Detectar texto de la imagen",
"upload_modal.edit_media": "Editar multimedia",
"upload_modal.hint": "Haga clic o arrastre el círculo en la vista previa para elegir el punto focal que siempre estará a la vista en todas las miniaturas.",
"upload_modal.preparing_ocr": "Preparando OCR…",
"upload_modal.preview_label": "Vista previa ({ratio})",
"upload_progress.label": "Subiendo…", "upload_progress.label": "Subiendo…",
"upload_progress.processing": "Procesando…", "upload_progress.processing": "Procesando…",
"username.taken": "Ese nombre de usuario está ocupado. Prueba con otro", "username.taken": "Ese nombre de usuario está ocupado. Prueba con otro",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Hubo un error inesperado.", "alert.unexpected.message": "Hubo un error inesperado.",
"alert.unexpected.title": "¡Ups!", "alert.unexpected.title": "¡Ups!",
"alt_text_badge.title": "Texto alternativo", "alt_text_badge.title": "Texto alternativo",
"alt_text_modal.add_alt_text": "Añadir texto alternativo",
"alt_text_modal.add_text_from_image": "Añadir texto a partir de la imagen",
"alt_text_modal.cancel": "Cancelar",
"alt_text_modal.change_thumbnail": "Cambiar miniatura",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Descríbelo para personas con deficiencias auditivas…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Descríbelo para personas con discapacidad visual…",
"alt_text_modal.done": "Hecho",
"announcement.announcement": "Anuncio", "announcement.announcement": "Anuncio",
"annual_report.summary.archetype.booster": "El cazador de tendencias", "annual_report.summary.archetype.booster": "El cazador de tendencias",
"annual_report.summary.archetype.lurker": "El acechador", "annual_report.summary.archetype.lurker": "El acechador",
@ -875,26 +882,12 @@
"upload_button.label": "Subir multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Subir multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Límite de subida de archivos excedido.", "upload_error.limit": "Límite de subida de archivos excedido.",
"upload_error.poll": "No se permite la subida de archivos con encuestas.", "upload_error.poll": "No se permite la subida de archivos con encuestas.",
"upload_form.audio_description": "Describir para personas con problemas auditivos",
"upload_form.description": "Describir para personas con discapacidad visual",
"upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsa la barra espaciadora o la tecla Enter. Mientras arrastras, utiliza las teclas de flecha para mover el archivo multimedia en cualquier dirección. Vuelve a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsa Escape para cancelar.", "upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsa la barra espaciadora o la tecla Enter. Mientras arrastras, utiliza las teclas de flecha para mover el archivo multimedia en cualquier dirección. Vuelve a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsa Escape para cancelar.",
"upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.", "upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.",
"upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} ha sido eliminado.", "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} ha sido eliminado.",
"upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} se ha movido.", "upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} se ha movido.",
"upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.", "upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.",
"upload_form.edit": "Editar", "upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar miniatura",
"upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
"upload_modal.analyzing_picture": "Analizando imagen…",
"upload_modal.apply": "Aplicar",
"upload_modal.applying": "Aplicando…",
"upload_modal.choose_image": "Elegir imagen",
"upload_modal.description_placeholder": "Un rápido zorro marrón salta sobre el perro perezoso",
"upload_modal.detect_text": "Detectar texto de la imagen",
"upload_modal.edit_media": "Editar multimedia",
"upload_modal.hint": "Haga clic o arrastre el círculo en la vista previa para elegir el punto focal que siempre estará a la vista en todas las miniaturas.",
"upload_modal.preparing_ocr": "Preparando OCR…",
"upload_modal.preview_label": "Vista previa ({ratio})",
"upload_progress.label": "Subiendo…", "upload_progress.label": "Subiendo…",
"upload_progress.processing": "Procesando…", "upload_progress.processing": "Procesando…",
"username.taken": "Ese nombre de usuario ya está en uso. Prueba con otro", "username.taken": "Ese nombre de usuario ya está en uso. Prueba con otro",

View file

@ -864,26 +864,12 @@
"upload_button.label": "Lisa meedia (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Lisa meedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Faili üleslaadimise limiit ületatud.", "upload_error.limit": "Faili üleslaadimise limiit ületatud.",
"upload_error.poll": "Küsitlustes pole faili üleslaadimine lubatud.", "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.drag_and_drop.instructions": "Vajuta tühikut või enterit, et tõsta manus. Lohistamise ajal kasuta nooleklahve, et manust liigutada teatud suunas. Vajuta tühikut või enterit uuesti, et paigutada manus oma uuele kohale, või escape tühistamiseks.", "upload_form.drag_and_drop.instructions": "Vajuta tühikut või enterit, et tõsta manus. Lohistamise ajal kasuta nooleklahve, et manust liigutada teatud suunas. Vajuta tühikut või enterit uuesti, et paigutada manus oma uuele kohale, või escape tühistamiseks.",
"upload_form.drag_and_drop.on_drag_cancel": "Lohistamine tühistati. Manus {item} on asetatud.", "upload_form.drag_and_drop.on_drag_cancel": "Lohistamine tühistati. Manus {item} on asetatud.",
"upload_form.drag_and_drop.on_drag_end": "Manus {item} on asetatud.", "upload_form.drag_and_drop.on_drag_end": "Manus {item} on asetatud.",
"upload_form.drag_and_drop.on_drag_over": "Manus {item} on liigutatud.", "upload_form.drag_and_drop.on_drag_over": "Manus {item} on liigutatud.",
"upload_form.drag_and_drop.on_drag_start": "Tõstetud on manus {item}.", "upload_form.drag_and_drop.on_drag_start": "Tõstetud on manus {item}.",
"upload_form.edit": "Muuda", "upload_form.edit": "Muuda",
"upload_form.thumbnail": "Muuda pisipilti",
"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.applying": "Rakendan…",
"upload_modal.choose_image": "Vali pilt",
"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.preparing_ocr": "Valmistan masinlugemist…",
"upload_modal.preview_label": "Eelvaade ({ratio})",
"upload_progress.label": "Laeb üles....", "upload_progress.label": "Laeb üles....",
"upload_progress.processing": "Töötlen…", "upload_progress.processing": "Töötlen…",
"username.taken": "See kasutajanimi on juba kasutusel. Proovi teist", "username.taken": "See kasutajanimi on juba kasutusel. Proovi teist",

View file

@ -87,6 +87,16 @@
"alert.unexpected.title": "Ene!", "alert.unexpected.title": "Ene!",
"alt_text_badge.title": "Testu alternatiboa", "alt_text_badge.title": "Testu alternatiboa",
"announcement.announcement": "Iragarpena", "announcement.announcement": "Iragarpena",
"annual_report.summary.followers.followers": "jarraitzaileak",
"annual_report.summary.followers.total": "{count} guztira",
"annual_report.summary.highlighted_post.by_favourites": "egindako bidalketa gogokoena",
"annual_report.summary.highlighted_post.by_reblogs": "egindako bidalketa zabalduena",
"annual_report.summary.highlighted_post.by_replies": "erantzun gehien izan dituen bidalketa",
"annual_report.summary.most_used_app.most_used_app": "app erabiliena",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "traola erabiliena",
"annual_report.summary.most_used_hashtag.none": "Bat ere ez",
"annual_report.summary.new_posts.new_posts": "bidalketa berriak",
"annual_report.summary.thanks": "Eskerrik asko Mastodonen parte izateagatik!",
"attachments_list.unprocessed": "(prozesatu gabe)", "attachments_list.unprocessed": "(prozesatu gabe)",
"audio.hide": "Ezkutatu audioa", "audio.hide": "Ezkutatu audioa",
"block_modal.remote_users_caveat": "{domain} zerbitzariari zure erabakia errespeta dezan eskatuko diogu. Halere, araua beteko den ezin da bermatu, zerbitzari batzuk modu desberdinean kudeatzen baitituzte blokeoak. Baliteke argitalpen publikoak saioa hasi ez duten erabiltzaileentzat ikusgai egotea.", "block_modal.remote_users_caveat": "{domain} zerbitzariari zure erabakia errespeta dezan eskatuko diogu. Halere, araua beteko den ezin da bermatu, zerbitzari batzuk modu desberdinean kudeatzen baitituzte blokeoak. Baliteke argitalpen publikoak saioa hasi ez duten erabiltzaileentzat ikusgai egotea.",
@ -120,13 +130,16 @@
"column.blocks": "Blokeatutako erabiltzaileak", "column.blocks": "Blokeatutako erabiltzaileak",
"column.bookmarks": "Laster-markak", "column.bookmarks": "Laster-markak",
"column.community": "Denbora-lerro lokala", "column.community": "Denbora-lerro lokala",
"column.create_list": "Sortu zerrenda",
"column.direct": "Aipamen pribatuak", "column.direct": "Aipamen pribatuak",
"column.directory": "Arakatu profilak", "column.directory": "Arakatu profilak",
"column.domain_blocks": "Ezkutatutako domeinuak", "column.domain_blocks": "Ezkutatutako domeinuak",
"column.edit_list": "Editatu zerrenda",
"column.favourites": "Gogokoak", "column.favourites": "Gogokoak",
"column.firehose": "Zuzeneko jarioak", "column.firehose": "Zuzeneko jarioak",
"column.follow_requests": "Jarraitzeko eskaerak", "column.follow_requests": "Jarraitzeko eskaerak",
"column.home": "Hasiera", "column.home": "Hasiera",
"column.list_members": "Kudeatu zerrrendako partaideak",
"column.lists": "Zerrendak", "column.lists": "Zerrendak",
"column.mutes": "Mutututako erabiltzaileak", "column.mutes": "Mutututako erabiltzaileak",
"column.notifications": "Jakinarazpenak", "column.notifications": "Jakinarazpenak",
@ -139,6 +152,7 @@
"column_header.pin": "Finkatu", "column_header.pin": "Finkatu",
"column_header.show_settings": "Erakutsi ezarpenak", "column_header.show_settings": "Erakutsi ezarpenak",
"column_header.unpin": "Desfinkatu", "column_header.unpin": "Desfinkatu",
"column_search.cancel": "Utzi",
"column_subheading.settings": "Ezarpenak", "column_subheading.settings": "Ezarpenak",
"community.column_settings.local_only": "Lokala soilik", "community.column_settings.local_only": "Lokala soilik",
"community.column_settings.media_only": "Edukiak soilik", "community.column_settings.media_only": "Edukiak soilik",
@ -157,6 +171,7 @@
"compose_form.poll.duration": "Inkestaren iraupena", "compose_form.poll.duration": "Inkestaren iraupena",
"compose_form.poll.multiple": "Aukera aniza", "compose_form.poll.multiple": "Aukera aniza",
"compose_form.poll.option_placeholder": "{number}. aukera", "compose_form.poll.option_placeholder": "{number}. aukera",
"compose_form.poll.single": "Aukera bakarra",
"compose_form.poll.switch_to_multiple": "Aldatu inkesta hainbat aukera onartzeko", "compose_form.poll.switch_to_multiple": "Aldatu inkesta hainbat aukera onartzeko",
"compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko", "compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko",
"compose_form.poll.type": "Estiloa", "compose_form.poll.type": "Estiloa",
@ -198,6 +213,7 @@
"confirmations.unfollow.title": "Erabiltzailea jarraitzeari utzi?", "confirmations.unfollow.title": "Erabiltzailea jarraitzeari utzi?",
"content_warning.hide": "Tuta ezkutatu", "content_warning.hide": "Tuta ezkutatu",
"content_warning.show": "Erakutsi hala ere", "content_warning.show": "Erakutsi hala ere",
"content_warning.show_more": "Erakutsi gehiago",
"conversation.delete": "Ezabatu elkarrizketa", "conversation.delete": "Ezabatu elkarrizketa",
"conversation.mark_as_read": "Markatu irakurrita bezala", "conversation.mark_as_read": "Markatu irakurrita bezala",
"conversation.open": "Ikusi elkarrizketa", "conversation.open": "Ikusi elkarrizketa",
@ -298,6 +314,7 @@
"filter_modal.select_filter.subtitle": "Hautatu lehendik dagoen kategoria bat edo sortu berria", "filter_modal.select_filter.subtitle": "Hautatu lehendik dagoen kategoria bat edo sortu berria",
"filter_modal.select_filter.title": "Iragazi bidalketa hau", "filter_modal.select_filter.title": "Iragazi bidalketa hau",
"filter_modal.title.status": "Iragazi bidalketa bat", "filter_modal.title.status": "Iragazi bidalketa bat",
"filter_warning.matches_filter": "“<span>{title}</span>” iragazkiarekin bat dator",
"filtered_notifications_banner.pending_requests": "Ezagutu dezakezun {count, plural, =0 {inoren} one {pertsona baten} other {# pertsonen}}", "filtered_notifications_banner.pending_requests": "Ezagutu dezakezun {count, plural, =0 {inoren} one {pertsona baten} other {# pertsonen}}",
"filtered_notifications_banner.title": "Iragazitako jakinarazpenak", "filtered_notifications_banner.title": "Iragazitako jakinarazpenak",
"firehose.all": "Guztiak", "firehose.all": "Guztiak",
@ -329,8 +346,10 @@
"footer.privacy_policy": "Pribatutasun politika", "footer.privacy_policy": "Pribatutasun politika",
"footer.source_code": "Ikusi iturburu kodea", "footer.source_code": "Ikusi iturburu kodea",
"footer.status": "Egoera", "footer.status": "Egoera",
"footer.terms_of_service": "Erabilera baldintzak",
"generic.saved": "Gordea", "generic.saved": "Gordea",
"getting_started.heading": "Menua", "getting_started.heading": "Menua",
"hashtag.admin_moderation": "#{name}-(r)en moderazio-interfazea ireki",
"hashtag.column_header.tag_mode.all": "eta {osagarria}", "hashtag.column_header.tag_mode.all": "eta {osagarria}",
"hashtag.column_header.tag_mode.any": "edo {osagarria}", "hashtag.column_header.tag_mode.any": "edo {osagarria}",
"hashtag.column_header.tag_mode.none": "gabe {osagarria}", "hashtag.column_header.tag_mode.none": "gabe {osagarria}",
@ -372,12 +391,15 @@
"ignore_notifications_modal.not_followers_title": "Jarraitzen ez zaituzten pertsonen jakinarazpenei ez ikusiarena egin?", "ignore_notifications_modal.not_followers_title": "Jarraitzen ez zaituzten pertsonen jakinarazpenei ez ikusiarena egin?",
"ignore_notifications_modal.not_following_title": "Jarraitzen ez dituzun pertsonen jakinarazpenei ez ikusiarena egin?", "ignore_notifications_modal.not_following_title": "Jarraitzen ez dituzun pertsonen jakinarazpenei ez ikusiarena egin?",
"ignore_notifications_modal.private_mentions_title": "Eskatu gabeko aipamen pribatuen jakinarazpenei ez ikusiarena egin?", "ignore_notifications_modal.private_mentions_title": "Eskatu gabeko aipamen pribatuen jakinarazpenei ez ikusiarena egin?",
"interaction_modal.go": "Joan",
"interaction_modal.no_account_yet": "Ez al duzu konturik oraindik?",
"interaction_modal.on_another_server": "Beste zerbitzari batean", "interaction_modal.on_another_server": "Beste zerbitzari batean",
"interaction_modal.on_this_server": "Zerbitzari honetan", "interaction_modal.on_this_server": "Zerbitzari honetan",
"interaction_modal.title.favourite": "Egin gogoko {name}(r)en bidalketa", "interaction_modal.title.favourite": "Egin gogoko {name}(r)en bidalketa",
"interaction_modal.title.follow": "Jarraitu {name}(r)i", "interaction_modal.title.follow": "Jarraitu {name}(r)i",
"interaction_modal.title.reblog": "Bultzatu {name}(r)en bidalketa", "interaction_modal.title.reblog": "Bultzatu {name}(r)en bidalketa",
"interaction_modal.title.reply": "Erantzun {name}(r)en bidalketari", "interaction_modal.title.reply": "Erantzun {name}(r)en bidalketari",
"interaction_modal.username_prompt": "Adib. {example}",
"intervals.full.days": "{number, plural, one {egun #} other {# egun}}", "intervals.full.days": "{number, plural, one {egun #} other {# egun}}",
"intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}", "intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}",
"intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}", "intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}",
@ -423,7 +445,13 @@
"link_preview.author": "Egilea: {name}", "link_preview.author": "Egilea: {name}",
"link_preview.more_from_author": "{name} erabiltzaileaz gehiago jakin", "link_preview.more_from_author": "{name} erabiltzaileaz gehiago jakin",
"link_preview.shares": "{count, plural, one {{counter} bidalketa} other {{counter} bidalketa}}", "link_preview.shares": "{count, plural, one {{counter} bidalketa} other {{counter} bidalketa}}",
"lists.add_member": "Gehitu",
"lists.add_to_list": "Gehitu zerrendara",
"lists.add_to_lists": "Gehitu {name} zerrendetara",
"lists.create": "Sortu",
"lists.create_list": "Sortu zerrenda",
"lists.delete": "Ezabatu zerrenda", "lists.delete": "Ezabatu zerrenda",
"lists.done": "Egina",
"lists.edit": "Editatu zerrenda", "lists.edit": "Editatu zerrenda",
"lists.replies_policy.followed": "Jarraitutako edozein erabiltzaile", "lists.replies_policy.followed": "Jarraitutako edozein erabiltzaile",
"lists.replies_policy.list": "Zerrendako kideak", "lists.replies_policy.list": "Zerrendako kideak",
@ -576,7 +604,11 @@
"notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak", "notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak",
"notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.", "notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.",
"notifications_permission_banner.title": "Ez galdu ezer inoiz", "notifications_permission_banner.title": "Ez galdu ezer inoiz",
"onboarding.follows.back": "Atzera",
"onboarding.follows.done": "Egina",
"onboarding.follows.empty": "Zoritxarrez, ezin da emaitzik erakutsi orain. Bilaketa erabil dezakezu edo Arakatu orrian jendea bilatu jarraitzeko, edo saiatu geroago.", "onboarding.follows.empty": "Zoritxarrez, ezin da emaitzik erakutsi orain. Bilaketa erabil dezakezu edo Arakatu orrian jendea bilatu jarraitzeko, edo saiatu geroago.",
"onboarding.follows.search": "Bilatu",
"onboarding.follows.title": "Jarraitu jendea hasteko",
"onboarding.profile.discoverable": "Profila aurkitzeko moduan jarri", "onboarding.profile.discoverable": "Profila aurkitzeko moduan jarri",
"onboarding.profile.discoverable_hint": "Mastodon zure profila aurkitzeko moduan duzunean, zure mezuak bilaketa-emaitzetan eta jarraipenetan ager daitezke, eta zure profila antzeko interesa duen jendeari iradoki ahal zaio.", "onboarding.profile.discoverable_hint": "Mastodon zure profila aurkitzeko moduan duzunean, zure mezuak bilaketa-emaitzetan eta jarraipenetan ager daitezke, eta zure profila antzeko interesa duen jendeari iradoki ahal zaio.",
"onboarding.profile.display_name": "Bistaratzeko izena", "onboarding.profile.display_name": "Bistaratzeko izena",
@ -615,6 +647,7 @@
"recommended": "Gomendatua", "recommended": "Gomendatua",
"refresh": "Berritu", "refresh": "Berritu",
"regeneration_indicator.please_stand_by": "Itxaron, mesedez.", "regeneration_indicator.please_stand_by": "Itxaron, mesedez.",
"regeneration_indicator.preparing_your_home_feed": "Zure hasierako jarioa prestatzen…",
"relative_time.days": "{number}e", "relative_time.days": "{number}e",
"relative_time.full.days": "Duela {number, plural, one {egun #} other {# egun}}", "relative_time.full.days": "Duela {number, plural, one {egun #} other {# egun}}",
"relative_time.full.hours": "Duela {number, plural, one {ordu #} other {# ordu}}", "relative_time.full.hours": "Duela {number, plural, one {ordu #} other {# ordu}}",
@ -698,6 +731,7 @@
"search_results.accounts": "Profilak", "search_results.accounts": "Profilak",
"search_results.all": "Guztiak", "search_results.all": "Guztiak",
"search_results.hashtags": "Traolak", "search_results.hashtags": "Traolak",
"search_results.no_results": "Emaitzarik ez.",
"search_results.see_all": "Ikusi guztiak", "search_results.see_all": "Ikusi guztiak",
"search_results.statuses": "Bidalketak", "search_results.statuses": "Bidalketak",
"server_banner.about_active_users": "Azken 30 egunetan zerbitzari hau erabili duen jendea (hilabeteko erabiltzaile aktiboak)", "server_banner.about_active_users": "Azken 30 egunetan zerbitzari hau erabili duen jendea (hilabeteko erabiltzaile aktiboak)",
@ -787,21 +821,7 @@
"upload_button.label": "Gehitu multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Gehitu multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Fitxategi igoera muga gaindituta.", "upload_error.limit": "Fitxategi igoera muga gaindituta.",
"upload_error.poll": "Ez da inkestetan fitxategiak igotzea onartzen.", "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.edit": "Editatu",
"upload_form.thumbnail": "Aldatu koadro txikia",
"upload_form.video_description": "Deskribatu entzumen galera edo ikusmen urritasuna duten pertsonentzat",
"upload_modal.analyzing_picture": "Irudia aztertzen…",
"upload_modal.apply": "Aplikatu",
"upload_modal.applying": "Aplikatzen…",
"upload_modal.choose_image": "Aukeratu irudia",
"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.preparing_ocr": "OCR prestatzen…",
"upload_modal.preview_label": "Aurreikusi ({ratio})",
"upload_progress.label": "Igotzen...", "upload_progress.label": "Igotzen...",
"upload_progress.processing": "Prozesatzen…", "upload_progress.processing": "Prozesatzen…",
"username.taken": "Erabiltzailea hartuta dago. Saiatu beste batekin", "username.taken": "Erabiltzailea hartuta dago. Saiatu beste batekin",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "خطایی غیرمنتظره رخ داد.", "alert.unexpected.message": "خطایی غیرمنتظره رخ داد.",
"alert.unexpected.title": "ای وای!", "alert.unexpected.title": "ای وای!",
"alt_text_badge.title": "متن جایگزین", "alt_text_badge.title": "متن جایگزین",
"alt_text_modal.add_alt_text": "افزودن متن جایگزین",
"alt_text_modal.add_text_from_image": "افزودن متن از عکس",
"alt_text_modal.cancel": "لغو",
"alt_text_modal.change_thumbnail": "تغییر بندانگشتی",
"alt_text_modal.describe_for_people_with_hearing_impairments": "شرح برای افرادی با مشکلات شنوایی…",
"alt_text_modal.describe_for_people_with_visual_impairments": "شرح برای افرادی با مشکلات بینایی…",
"alt_text_modal.done": "انجام شد",
"announcement.announcement": "اعلامیه", "announcement.announcement": "اعلامیه",
"annual_report.summary.archetype.booster": "باحال‌یاب", "annual_report.summary.archetype.booster": "باحال‌یاب",
"annual_report.summary.archetype.lurker": "کم‌پیدا", "annual_report.summary.archetype.lurker": "کم‌پیدا",
@ -98,6 +105,7 @@
"annual_report.summary.highlighted_post.by_favourites": "پرپسندترین فرسته", "annual_report.summary.highlighted_post.by_favourites": "پرپسندترین فرسته",
"annual_report.summary.highlighted_post.by_reblogs": "پرتقویت‌ترین فرسته", "annual_report.summary.highlighted_post.by_reblogs": "پرتقویت‌ترین فرسته",
"annual_report.summary.highlighted_post.by_replies": "پرپاسخ‌ترین فرسته", "annual_report.summary.highlighted_post.by_replies": "پرپاسخ‌ترین فرسته",
"annual_report.summary.highlighted_post.possessive": "{name}",
"annual_report.summary.most_used_app.most_used_app": "پراستفاده‌ترین کاره", "annual_report.summary.most_used_app.most_used_app": "پراستفاده‌ترین کاره",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "پراستفاده‌ترین برچسب", "annual_report.summary.most_used_hashtag.most_used_hashtag": "پراستفاده‌ترین برچسب",
"annual_report.summary.most_used_hashtag.none": "هیچ‌کدام", "annual_report.summary.most_used_hashtag.none": "هیچ‌کدام",
@ -456,6 +464,7 @@
"keyboard_shortcuts.toggle_hidden": "نمایش/نهفتن نوشتهٔ پشت هشدار محتوا", "keyboard_shortcuts.toggle_hidden": "نمایش/نهفتن نوشتهٔ پشت هشدار محتوا",
"keyboard_shortcuts.toggle_sensitivity": "نمایش/نهفتن رسانه", "keyboard_shortcuts.toggle_sensitivity": "نمایش/نهفتن رسانه",
"keyboard_shortcuts.toot": "شروع یک فرستهٔ جدید", "keyboard_shortcuts.toot": "شروع یک فرستهٔ جدید",
"keyboard_shortcuts.translate": "برای ترجمه یک پست",
"keyboard_shortcuts.unfocus": "برداشتن تمرکز از ناحیهٔ نوشتن یا جست‌وجو", "keyboard_shortcuts.unfocus": "برداشتن تمرکز از ناحیهٔ نوشتن یا جست‌وجو",
"keyboard_shortcuts.up": "بالا بردن در سیاهه", "keyboard_shortcuts.up": "بالا بردن در سیاهه",
"lightbox.close": "بستن", "lightbox.close": "بستن",
@ -536,6 +545,9 @@
"navigation_bar.security": "امنیت", "navigation_bar.security": "امنیت",
"not_signed_in_indicator.not_signed_in": "برای دسترسی به این منبع باید وارد شوید.", "not_signed_in_indicator.not_signed_in": "برای دسترسی به این منبع باید وارد شوید.",
"notification.admin.report": "{name}، {target} را گزارش داد", "notification.admin.report": "{name}، {target} را گزارش داد",
"notification.admin.report_account": "{name} {count, plural, one {یک پست} other {پست}} از {target} برای {category} را گزارش داد",
"notification.admin.report_account_other": "{name} {count, plural, one {یک پست} other {پست}} از {target} را گزارش داد",
"notification.admin.report_statuses": "{name} {target} برای {category} را گزارش داد",
"notification.admin.report_statuses_other": "{name}، {target} را گزارش داد", "notification.admin.report_statuses_other": "{name}، {target} را گزارش داد",
"notification.admin.sign_up": "{name} ثبت نام کرد", "notification.admin.sign_up": "{name} ثبت نام کرد",
"notification.admin.sign_up.name_and_others": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} ثبت‌نام کردند", "notification.admin.sign_up.name_and_others": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} ثبت‌نام کردند",
@ -544,6 +556,7 @@
"notification.favourite": "{name} فرسته‌تان را برگزید", "notification.favourite": "{name} فرسته‌تان را برگزید",
"notification.favourite.name_and_others_with_link": "{name} و <a>{count, plural, one {# نفر دیگر} other {# نفر دیگر}}</a> فرسته‌تان را برگزیدند", "notification.favourite.name_and_others_with_link": "{name} و <a>{count, plural, one {# نفر دیگر} other {# نفر دیگر}}</a> فرسته‌تان را برگزیدند",
"notification.favourite_pm": "{name} ذکر خصوصی شما را مورد علاقه قرار داد", "notification.favourite_pm": "{name} ذکر خصوصی شما را مورد علاقه قرار داد",
"notification.favourite_pm.name_and_others_with_link": "{name} و <a>{count, plural, one {دیگری} other {دیگران}}</a> ذکر خصوصی شما را مورد علاقه قرار دادند",
"notification.follow": "{name} پی‌گیرتان شد", "notification.follow": "{name} پی‌گیرتان شد",
"notification.follow.name_and_others": "{name} و <a>{count, plural, other {#}} نفر دیگر</a> پیتان گرفتند", "notification.follow.name_and_others": "{name} و <a>{count, plural, other {#}} نفر دیگر</a> پیتان گرفتند",
"notification.follow_request": "{name} درخواست پی‌گیریتان را داد", "notification.follow_request": "{name} درخواست پی‌گیریتان را داد",
@ -569,16 +582,21 @@
"notification.reblog.name_and_others_with_link": "{name} و <a>{count, plural, one {# نفر دیگر} other {# نفر دیگر}}</a> فرسته‌تان را تقویت کردند", "notification.reblog.name_and_others_with_link": "{name} و <a>{count, plural, one {# نفر دیگر} other {# نفر دیگر}}</a> فرسته‌تان را تقویت کردند",
"notification.relationships_severance_event": "قطع ارتباط با {name}", "notification.relationships_severance_event": "قطع ارتباط با {name}",
"notification.relationships_severance_event.account_suspension": "یک سرپرست از {from} {target} را به حالت تعلیق درآورده است، به این معنی که دیگر نمی‌توانید به‌روزرسانی‌ها را از آنها دریافت کنید یا با آنها تعامل داشته باشید.", "notification.relationships_severance_event.account_suspension": "یک سرپرست از {from} {target} را به حالت تعلیق درآورده است، به این معنی که دیگر نمی‌توانید به‌روزرسانی‌ها را از آنها دریافت کنید یا با آنها تعامل داشته باشید.",
"notification.relationships_severance_event.domain_block": "یک سرپرست از {from} {target} را مسدود کرده است، از جمله {followersCount} از دنبال‌کنندگان شما و {followingCount, plural, one {حساب} other {حساب‌}} که دنبال می‌کنید.",
"notification.relationships_severance_event.learn_more": "بیشتر بدانید", "notification.relationships_severance_event.learn_more": "بیشتر بدانید",
"notification.relationships_severance_event.user_domain_block": "شما {target} را مسدود کرده‌اید، {followersCount} از دنبال‌کنندگان خود و {followingCount, plural, one {حساب} other {حساب}} که دنبال می‌کنید را حذف کرده‌اید.",
"notification.status": "{name} چیزی فرستاد", "notification.status": "{name} چیزی فرستاد",
"notification.update": "{name} فرسته‌ای را ویرایش کرد", "notification.update": "{name} فرسته‌ای را ویرایش کرد",
"notification_requests.accept": "پذیرش", "notification_requests.accept": "پذیرش",
"notification_requests.accept_multiple": "{count, plural, one {پذیرش درخواست…} other {پذیرش درخواست‌ها…}}",
"notification_requests.confirm_accept_multiple.button": "پذیرش {count, plural,one {درخواست} other {درخواست‌ها}}", "notification_requests.confirm_accept_multiple.button": "پذیرش {count, plural,one {درخواست} other {درخواست‌ها}}",
"notification_requests.confirm_accept_multiple.message": "در حال پذیرش {count, plural,one {یک}other {#}} درخواست آگاهی هستید. مطمئنید که می‌خواهید ادامه دهید؟", "notification_requests.confirm_accept_multiple.message": "در حال پذیرش {count, plural,one {یک}other {#}} درخواست آگاهی هستید. مطمئنید که می‌خواهید ادامه دهید؟",
"notification_requests.confirm_accept_multiple.title": "پذیرش درخواست‌های آگاهی؟", "notification_requests.confirm_accept_multiple.title": "پذیرش درخواست‌های آگاهی؟",
"notification_requests.confirm_dismiss_multiple.button": "رد {count, plural,one {درخواست} other {درخواست‌ها}}", "notification_requests.confirm_dismiss_multiple.button": "رد {count, plural,one {درخواست} other {درخواست‌ها}}",
"notification_requests.confirm_dismiss_multiple.message": "شما در شرف رد کردن {count, plural, one {یک درخواست آگاهی} other {درخواست آگاهی}} هستید. دیگر نمی توانید به راحتی به {count, plural, one {آن} other {آن‌ها}} دسترسی پیدا کنید. آیا مطمئن هستید که می خواهید ادامه دهید؟",
"notification_requests.confirm_dismiss_multiple.title": "رد کردن درخواست‌های آگاهی؟", "notification_requests.confirm_dismiss_multiple.title": "رد کردن درخواست‌های آگاهی؟",
"notification_requests.dismiss": "دورانداختن", "notification_requests.dismiss": "دورانداختن",
"notification_requests.dismiss_multiple": "{count, plural, one {دورانداختن درخواست…} other {دورانداختن درخواست‌ها…}}",
"notification_requests.edit_selection": "ویرایش", "notification_requests.edit_selection": "ویرایش",
"notification_requests.exit_selection": "انجام شد", "notification_requests.exit_selection": "انجام شد",
"notification_requests.explainer_for_limited_account": "اعلان‌های این حساب فیلتر شده‌اند زیرا حساب توسط یک ناظر محدود شده است.", "notification_requests.explainer_for_limited_account": "اعلان‌های این حساب فیلتر شده‌اند زیرا حساب توسط یک ناظر محدود شده است.",
@ -686,6 +704,7 @@
"recommended": "پیشنهادشده", "recommended": "پیشنهادشده",
"refresh": "نوسازی", "refresh": "نوسازی",
"regeneration_indicator.please_stand_by": "لطفا منتظر باشید.", "regeneration_indicator.please_stand_by": "لطفا منتظر باشید.",
"regeneration_indicator.preparing_your_home_feed": "در حال آماده کردن خوراک خانگی شما…",
"relative_time.days": "{number} روز", "relative_time.days": "{number} روز",
"relative_time.full.days": "{number, plural, one {# روز} other {# روز}} پیش", "relative_time.full.days": "{number, plural, one {# روز} other {# روز}} پیش",
"relative_time.full.hours": "{number, plural, one {# ساعت} other {# ساعت}} پیش", "relative_time.full.hours": "{number, plural, one {# ساعت} other {# ساعت}} پیش",
@ -825,6 +844,7 @@
"status.reblogs.empty": "هنوز هیچ کسی این فرسته را تقویت نکرده است. وقتی کسی چنین کاری کند، این‌جا نمایش داده خواهد شد.", "status.reblogs.empty": "هنوز هیچ کسی این فرسته را تقویت نکرده است. وقتی کسی چنین کاری کند، این‌جا نمایش داده خواهد شد.",
"status.redraft": "حذف و بازنویسی", "status.redraft": "حذف و بازنویسی",
"status.remove_bookmark": "برداشتن نشانک", "status.remove_bookmark": "برداشتن نشانک",
"status.remove_favourite": "حذف از موارد دلخواه",
"status.replied_in_thread": "در رشته پاسخ داده", "status.replied_in_thread": "در رشته پاسخ داده",
"status.replied_to": "به {name} پاسخ داد", "status.replied_to": "به {name} پاسخ داد",
"status.reply": "پاسخ", "status.reply": "پاسخ",
@ -862,26 +882,12 @@
"upload_button.label": "افزودن تصاویر، ویدیو یا یک پروندهٔ صوتی", "upload_button.label": "افزودن تصاویر، ویدیو یا یک پروندهٔ صوتی",
"upload_error.limit": "از حد مجاز بارگذاری پرونده فراتر رفتید.", "upload_error.limit": "از حد مجاز بارگذاری پرونده فراتر رفتید.",
"upload_error.poll": "بارگذاری پرونده در نظرسنجی‌ها مجاز نیست.", "upload_error.poll": "بارگذاری پرونده در نظرسنجی‌ها مجاز نیست.",
"upload_form.audio_description": "برای ناشنوایان توصیفش کنید",
"upload_form.description": "برای کم‌بینایان توصیفش کنید",
"upload_form.drag_and_drop.instructions": "برای دریافت پیوست رسانه، space را فشار دهید یا وارد کنید. در حین کشیدن، از کلیدهای جهت دار برای حرکت دادن پیوست رسانه در هر جهت معین استفاده کنید. برای رها کردن ضمیمه رسانه در موقعیت جدید خود، مجدداً space یا enter را فشار دهید، یا برای لغو، escape را فشار دهید.", "upload_form.drag_and_drop.instructions": "برای دریافت پیوست رسانه، space را فشار دهید یا وارد کنید. در حین کشیدن، از کلیدهای جهت دار برای حرکت دادن پیوست رسانه در هر جهت معین استفاده کنید. برای رها کردن ضمیمه رسانه در موقعیت جدید خود، مجدداً space یا enter را فشار دهید، یا برای لغو، escape را فشار دهید.",
"upload_form.drag_and_drop.on_drag_cancel": "کشیدن لغو شد. پیوست رسانه {item} حذف شد.", "upload_form.drag_and_drop.on_drag_cancel": "کشیدن لغو شد. پیوست رسانه {item} حذف شد.",
"upload_form.drag_and_drop.on_drag_end": "پیوست رسانه {item} حذف شد.", "upload_form.drag_and_drop.on_drag_end": "پیوست رسانه {item} حذف شد.",
"upload_form.drag_and_drop.on_drag_over": "پیوست رسانه {item} منتقل شد.", "upload_form.drag_and_drop.on_drag_over": "پیوست رسانه {item} منتقل شد.",
"upload_form.drag_and_drop.on_drag_start": "پیوست رسانه {item} برداشته شد.", "upload_form.drag_and_drop.on_drag_start": "پیوست رسانه {item} برداشته شد.",
"upload_form.edit": "ویرایش", "upload_form.edit": "ویرایش",
"upload_form.thumbnail": "تغییر بندانگشتی",
"upload_form.video_description": "برای کم‌بینایان یا ناشنوایان توصیفش کنید",
"upload_modal.analyzing_picture": "در حال پردازش تصویر…",
"upload_modal.apply": "اعمال",
"upload_modal.applying": "اعمال کردن…",
"upload_modal.choose_image": "گزینش تصویر",
"upload_modal.description_placeholder": "الا یا ایّها الساقی، ادر کأساً و ناولها",
"upload_modal.detect_text": "تشخیص متن درون عکس",
"upload_modal.edit_media": "ویرایش رسانه",
"upload_modal.hint": "حتی اگر تصویر بریده یا کوچک شود، نقطهٔ کانونی آن همیشه دیده خواهد شد. نقطهٔ کانونی را با کلیک یا جابه‌جا کردن آن تنظیم کنید.",
"upload_modal.preparing_ocr": "در حال آماده سازی OCR…",
"upload_modal.preview_label": "پیش‌نمایش ({ratio})",
"upload_progress.label": "در حال بارگذاری…", "upload_progress.label": "در حال بارگذاری…",
"upload_progress.processing": "در حال پردازش…", "upload_progress.processing": "در حال پردازش…",
"username.taken": "این نام کاربری گرفته شده. نام دیگری امتحان کنید", "username.taken": "این نام کاربری گرفته شده. نام دیگری امتحان کنید",

View file

@ -875,26 +875,12 @@
"upload_button.label": "Lisää kuvia, video tai äänitiedosto", "upload_button.label": "Lisää kuvia, video tai äänitiedosto",
"upload_error.limit": "Tiedostolähetysten rajoitus ylitetty.", "upload_error.limit": "Tiedostolähetysten rajoitus ylitetty.",
"upload_error.poll": "Tiedostojen lisääminen äänestysten oheen ei ole sallittua.", "upload_error.poll": "Tiedostojen lisääminen äänestysten oheen ei ole sallittua.",
"upload_form.audio_description": "Kuvaile sisältöä kuuroille ja kuulorajoitteisille",
"upload_form.description": "Kuvaile sisältöä sokeille ja näkörajoitteisille",
"upload_form.drag_and_drop.instructions": "Valitse medialiite painamalla välilyöntiä tai enteriä. Vetäessäsi käytä nuolinäppäimiä siirtääksesi medialiitettä vastaavaan suuntaan. Paina välilyöntiä tai enteriä uudelleen pudottaaksesi medialiitteen uuteen kohtaansa, tai peru siirto painamalla escape-näppäintä.", "upload_form.drag_and_drop.instructions": "Valitse medialiite painamalla välilyöntiä tai enteriä. Vetäessäsi käytä nuolinäppäimiä siirtääksesi medialiitettä vastaavaan suuntaan. Paina välilyöntiä tai enteriä uudelleen pudottaaksesi medialiitteen uuteen kohtaansa, tai peru siirto painamalla escape-näppäintä.",
"upload_form.drag_and_drop.on_drag_cancel": "Veto peruttiin. Medialiitettä {item} ei siirretty.", "upload_form.drag_and_drop.on_drag_cancel": "Veto peruttiin. Medialiitettä {item} ei siirretty.",
"upload_form.drag_and_drop.on_drag_end": "Medialiite {item} pudotettiin.", "upload_form.drag_and_drop.on_drag_end": "Medialiite {item} pudotettiin.",
"upload_form.drag_and_drop.on_drag_over": "Medialiitettä {item} siirrettiin.", "upload_form.drag_and_drop.on_drag_over": "Medialiitettä {item} siirrettiin.",
"upload_form.drag_and_drop.on_drag_start": "Valittiin medialiite {item}.", "upload_form.drag_and_drop.on_drag_start": "Valittiin medialiite {item}.",
"upload_form.edit": "Muokkaa", "upload_form.edit": "Muokkaa",
"upload_form.thumbnail": "Vaihda pienoiskuva",
"upload_form.video_description": "Kuvaile sisältöä kuuroille, kuulorajoitteisille, sokeille tai näkörajoitteisille",
"upload_modal.analyzing_picture": "Analysoidaan kuvaa…",
"upload_modal.apply": "Käytä",
"upload_modal.applying": "Otetaan käyttöön…",
"upload_modal.choose_image": "Valitse kuva",
"upload_modal.description_placeholder": "Nopea ruskea kettu hyppää laiskan koiran yli",
"upload_modal.detect_text": "Tunnista teksti kuvasta",
"upload_modal.edit_media": "Muokkaa mediaa",
"upload_modal.hint": "Napsauta tai vedä ympyrä esikatselussa valitaksesi keskipiste, joka näkyy aina pienoiskuvissa.",
"upload_modal.preparing_ocr": "Valmistellaan tekstintunnistusta…",
"upload_modal.preview_label": "Esikatselu ({ratio})",
"upload_progress.label": "Lähetetään…", "upload_progress.label": "Lähetetään…",
"upload_progress.processing": "Käsitellään…", "upload_progress.processing": "Käsitellään…",
"username.taken": "Tämä käyttäjänimi on jo käytössä. Kokeile toista", "username.taken": "Tämä käyttäjänimi on jo käytössä. Kokeile toista",

View file

@ -378,8 +378,5 @@
"time_remaining.days": "{number, plural, one {# araw} other {# na araw}} ang natitira", "time_remaining.days": "{number, plural, one {# araw} other {# na araw}} ang natitira",
"time_remaining.hours": "{number, plural, one {# oras} other {# na oras}} ang natitira", "time_remaining.hours": "{number, plural, one {# oras} other {# na oras}} ang natitira",
"time_remaining.minutes": "{number, plural, one {# minuto} other {# na minuto}} ang natitira", "time_remaining.minutes": "{number, plural, one {# minuto} other {# na minuto}} ang natitira",
"time_remaining.seconds": "{number, plural, one {# segundo} other {# na segundo}} ang natitira", "time_remaining.seconds": "{number, plural, one {# segundo} other {# na segundo}} ang natitira"
"upload_modal.apply": "Ilapat",
"upload_modal.applying": "Nilalapat…",
"upload_modal.choose_image": "Pumili ng larawan"
} }

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Ein óvæntaður feilur kom fyri.", "alert.unexpected.message": "Ein óvæntaður feilur kom fyri.",
"alert.unexpected.title": "Ups!", "alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Annar tekstur", "alt_text_badge.title": "Annar tekstur",
"alt_text_modal.add_alt_text": "Legg alternativan tekst afturat",
"alt_text_modal.add_text_from_image": "Legg tekst frá mynd afturat",
"alt_text_modal.cancel": "Angra",
"alt_text_modal.change_thumbnail": "Broyt smámynd",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Lýs hetta fyri fólk við tey, ið hava niðursetta hoyrn…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Lýs hetta fyri fólk við tey, ið hava avmarkaða sjón…",
"alt_text_modal.done": "Liðugt",
"announcement.announcement": "Kunngerð", "announcement.announcement": "Kunngerð",
"annual_report.summary.archetype.booster": "Kuli jagarin", "annual_report.summary.archetype.booster": "Kuli jagarin",
"annual_report.summary.archetype.lurker": "Lúrarin", "annual_report.summary.archetype.lurker": "Lúrarin",
@ -875,26 +882,12 @@
"upload_button.label": "Legg myndir, sjónfílu ella ljóðfílu afturat", "upload_button.label": "Legg myndir, sjónfílu ella ljóðfílu afturat",
"upload_error.limit": "Farið er um markið fyri fíluuppsending.", "upload_error.limit": "Farið er um markið fyri fíluuppsending.",
"upload_error.poll": "Ikki loyvt at leggja fílur upp í spurnarkanningum.", "upload_error.poll": "Ikki loyvt at leggja fílur upp í spurnarkanningum.",
"upload_form.audio_description": "Lýs fyri teimum, sum eru deyv ella hava ringa hoyrn",
"upload_form.description": "Lýs fyri teimum, sum eru blind ella eru sjónveik",
"upload_form.drag_and_drop.instructions": "Fyri at heinta eitt miðlaviðfesti, trýst á millumrúm ella returknapp. Meðan tú dregur, brúka pílarnar fyri at flyta miðaviðfesti í einhvønn rætning. Trýst á millumrúm ella returknapp aftur fyri at sleppa miðlaviðfestinum í nýggja staðnum ella trýst á esc-knappin fyri at angra.", "upload_form.drag_and_drop.instructions": "Fyri at heinta eitt miðlaviðfesti, trýst á millumrúm ella returknapp. Meðan tú dregur, brúka pílarnar fyri at flyta miðaviðfesti í einhvønn rætning. Trýst á millumrúm ella returknapp aftur fyri at sleppa miðlaviðfestinum í nýggja staðnum ella trýst á esc-knappin fyri at angra.",
"upload_form.drag_and_drop.on_drag_cancel": "Draging varð steðgað. Miðlaviðfestið {item} varð slept.", "upload_form.drag_and_drop.on_drag_cancel": "Draging varð steðgað. Miðlaviðfestið {item} varð slept.",
"upload_form.drag_and_drop.on_drag_end": "Miðlaviðfestið {item} var slept.", "upload_form.drag_and_drop.on_drag_end": "Miðlaviðfestið {item} var slept.",
"upload_form.drag_and_drop.on_drag_over": "Miðlaviðfestið {item} var flutt.", "upload_form.drag_and_drop.on_drag_over": "Miðlaviðfestið {item} var flutt.",
"upload_form.drag_and_drop.on_drag_start": "Heintaði miðlaviðfestið {item}.", "upload_form.drag_and_drop.on_drag_start": "Heintaði miðlaviðfestið {item}.",
"upload_form.edit": "Rætta", "upload_form.edit": "Rætta",
"upload_form.thumbnail": "Broyt smámynd",
"upload_form.video_description": "Lýs fyri teimum, sum eru deyv, hava ringa hoyrn, eru blind ella eru sjónveik",
"upload_modal.analyzing_picture": "Greini mynd…",
"upload_modal.apply": "Ger virkið",
"upload_modal.applying": "Geri virkið…",
"upload_modal.choose_image": "Vel mynd",
"upload_modal.description_placeholder": "Ein skjótur brúnur revur loypur uppum dovna hundin",
"upload_modal.detect_text": "Finn text á mynd",
"upload_modal.edit_media": "Broyt miðil",
"upload_modal.hint": "Klikk ella drag sirkulin á undanvísingini fyri at velja brennidepilspunktið, sum altíð fer at vera sjónligt á øllum smámyndum.",
"upload_modal.preparing_ocr": "Fyrireiki OCR…",
"upload_modal.preview_label": "Undanvísing ({ratio})",
"upload_progress.label": "Leggi upp...", "upload_progress.label": "Leggi upp...",
"upload_progress.processing": "Viðgeri…", "upload_progress.processing": "Viðgeri…",
"username.taken": "Brúkaranavnið er tikið. Royn eitt annað", "username.taken": "Brúkaranavnið er tikið. Royn eitt annað",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Une erreur inattendue sest produite.", "alert.unexpected.message": "Une erreur inattendue sest produite.",
"alert.unexpected.title": "Oups!", "alert.unexpected.title": "Oups!",
"alt_text_badge.title": "Texte alternatif", "alt_text_badge.title": "Texte alternatif",
"alt_text_modal.add_alt_text": "Ajouter un texte alternatif",
"alt_text_modal.add_text_from_image": "Ajouter le texte provenant de l'image",
"alt_text_modal.cancel": "Annuler",
"alt_text_modal.change_thumbnail": "Changer la vignette",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Décrire pour les personnes ayant des difficultés daudition…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Décrire pour les personnes ayant des problèmes de vue…",
"alt_text_modal.done": "Terminé",
"announcement.announcement": "Annonce", "announcement.announcement": "Annonce",
"annual_report.summary.archetype.booster": "Le chasseur de sang-froid", "annual_report.summary.archetype.booster": "Le chasseur de sang-froid",
"annual_report.summary.archetype.lurker": "Le faucheur", "annual_report.summary.archetype.lurker": "Le faucheur",
@ -875,26 +882,12 @@
"upload_button.label": "Ajouter des images, une vidéo ou un fichier audio", "upload_button.label": "Ajouter des images, une vidéo ou un fichier audio",
"upload_error.limit": "Taille maximale d'envoi de fichier dépassée.", "upload_error.limit": "Taille maximale d'envoi de fichier dépassée.",
"upload_error.poll": "Lenvoi de fichiers nest pas autorisé avec les sondages.", "upload_error.poll": "Lenvoi de fichiers nest pas autorisé avec les sondages.",
"upload_form.audio_description": "Décrire pour les personnes ayant des difficultés daudition",
"upload_form.description": "Décrire pour les malvoyants",
"upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.",
"upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.", "upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.",
"upload_form.drag_and_drop.on_drag_end": "La pièce jointe du média {item} a été déplacée.", "upload_form.drag_and_drop.on_drag_end": "La pièce jointe du média {item} a été déplacée.",
"upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.", "upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.",
"upload_form.drag_and_drop.on_drag_start": "A récupéré la pièce jointe {item}.", "upload_form.drag_and_drop.on_drag_start": "A récupéré la pièce jointe {item}.",
"upload_form.edit": "Modifier", "upload_form.edit": "Modifier",
"upload_form.thumbnail": "Changer la vignette",
"upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition",
"upload_modal.analyzing_picture": "Analyse de limage en cours…",
"upload_modal.apply": "Appliquer",
"upload_modal.applying": "Application en cours…",
"upload_modal.choose_image": "Choisir une image",
"upload_modal.description_placeholder": "Buvez de ce whisky que le patron juge fameux",
"upload_modal.detect_text": "Détecter le texte de limage",
"upload_modal.edit_media": "Modifier le média",
"upload_modal.hint": "Cliquez ou faites glisser le cercle sur laperçu pour choisir le point focal qui sera toujours visible sur toutes les miniatures.",
"upload_modal.preparing_ocr": "Préparation de la ROC…",
"upload_modal.preview_label": "Aperçu ({ratio})",
"upload_progress.label": "Envoi en cours...", "upload_progress.label": "Envoi en cours...",
"upload_progress.processing": "Traitement en cours…", "upload_progress.processing": "Traitement en cours…",
"username.taken": "Ce nom d'utilisateur est déjà pris. Essayez-en en autre", "username.taken": "Ce nom d'utilisateur est déjà pris. Essayez-en en autre",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Une erreur inattendue sest produite.", "alert.unexpected.message": "Une erreur inattendue sest produite.",
"alert.unexpected.title": "Oups!", "alert.unexpected.title": "Oups!",
"alt_text_badge.title": "Texte alternatif", "alt_text_badge.title": "Texte alternatif",
"alt_text_modal.add_alt_text": "Ajouter un texte alternatif",
"alt_text_modal.add_text_from_image": "Ajouter le texte provenant de l'image",
"alt_text_modal.cancel": "Annuler",
"alt_text_modal.change_thumbnail": "Changer la vignette",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Décrire pour les personnes ayant des difficultés daudition…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Décrire pour les personnes ayant des problèmes de vue…",
"alt_text_modal.done": "Terminé",
"announcement.announcement": "Annonce", "announcement.announcement": "Annonce",
"annual_report.summary.archetype.booster": "Le chasseur de sang-froid", "annual_report.summary.archetype.booster": "Le chasseur de sang-froid",
"annual_report.summary.archetype.lurker": "Le faucheur", "annual_report.summary.archetype.lurker": "Le faucheur",
@ -875,26 +882,12 @@
"upload_button.label": "Ajouter des images, une vidéo ou un fichier audio", "upload_button.label": "Ajouter des images, une vidéo ou un fichier audio",
"upload_error.limit": "Taille maximale d'envoi de fichier dépassée.", "upload_error.limit": "Taille maximale d'envoi de fichier dépassée.",
"upload_error.poll": "Lenvoi de fichiers nest pas autorisé avec les sondages.", "upload_error.poll": "Lenvoi de fichiers nest pas autorisé avec les sondages.",
"upload_form.audio_description": "Décrire pour les personnes ayant des difficultés daudition",
"upload_form.description": "Décrire pour les malvoyant·e·s",
"upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.",
"upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.", "upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.",
"upload_form.drag_and_drop.on_drag_end": "La pièce jointe du média {item} a été déplacée.", "upload_form.drag_and_drop.on_drag_end": "La pièce jointe du média {item} a été déplacée.",
"upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.", "upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.",
"upload_form.drag_and_drop.on_drag_start": "A récupéré la pièce jointe {item}.", "upload_form.drag_and_drop.on_drag_start": "A récupéré la pièce jointe {item}.",
"upload_form.edit": "Modifier", "upload_form.edit": "Modifier",
"upload_form.thumbnail": "Changer la vignette",
"upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition",
"upload_modal.analyzing_picture": "Analyse de limage en cours…",
"upload_modal.apply": "Appliquer",
"upload_modal.applying": "Application en cours…",
"upload_modal.choose_image": "Choisir une image",
"upload_modal.description_placeholder": "Buvez de ce whisky que le patron juge fameux",
"upload_modal.detect_text": "Détecter le texte de limage",
"upload_modal.edit_media": "Modifier le média",
"upload_modal.hint": "Cliquez ou faites glisser le cercle sur laperçu pour choisir le point focal qui sera toujours visible sur toutes les miniatures.",
"upload_modal.preparing_ocr": "Préparation de lOCR…",
"upload_modal.preview_label": "Aperçu ({ratio})",
"upload_progress.label": "Envoi en cours…", "upload_progress.label": "Envoi en cours…",
"upload_progress.processing": "En cours…", "upload_progress.processing": "En cours…",
"username.taken": "Ce nom d'utilisateur est déjà pris. Essayez d'en prendre un autre", "username.taken": "Ce nom d'utilisateur est déjà pris. Essayez d'en prendre un autre",

View file

@ -804,26 +804,12 @@
"upload_button.label": "Ofbyldingen, in fideo- of in lûdsbestân tafoegje", "upload_button.label": "Ofbyldingen, in fideo- of in lûdsbestân tafoegje",
"upload_error.limit": "Oer de oplaadlimyt fan bestân.", "upload_error.limit": "Oer de oplaadlimyt fan bestân.",
"upload_error.poll": "It opladen fan bestannen is yn enkêten net tastien.", "upload_error.poll": "It opladen fan bestannen is yn enkêten net tastien.",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.drag_and_drop.instructions": "Druk op spaasje of Enter om in mediabylage op te pakken. Bruk de pylktoetsen om de bylage yn in bepaalde rjochting te ferpleatsen. Druk opnij op de spaasjebalke of Enter om de mediabylage op de nije posysje te pleatsen, of druk op Esc om te annulearjen.", "upload_form.drag_and_drop.instructions": "Druk op spaasje of Enter om in mediabylage op te pakken. Bruk de pylktoetsen om de bylage yn in bepaalde rjochting te ferpleatsen. Druk opnij op de spaasjebalke of Enter om de mediabylage op de nije posysje te pleatsen, of druk op Esc om te annulearjen.",
"upload_form.drag_and_drop.on_drag_cancel": "Slepen is annulearre. Mediabylage {item} is net ferpleatst.", "upload_form.drag_and_drop.on_drag_cancel": "Slepen is annulearre. Mediabylage {item} is net ferpleatst.",
"upload_form.drag_and_drop.on_drag_end": "Mediabylage {item} is net ferpleatst.", "upload_form.drag_and_drop.on_drag_end": "Mediabylage {item} is net ferpleatst.",
"upload_form.drag_and_drop.on_drag_over": "Mediabylage {item} is ferpleatst.", "upload_form.drag_and_drop.on_drag_over": "Mediabylage {item} is ferpleatst.",
"upload_form.drag_and_drop.on_drag_start": "Mediabylage {item} is oppakt.", "upload_form.drag_and_drop.on_drag_start": "Mediabylage {item} is oppakt.",
"upload_form.edit": "Bewurkje", "upload_form.edit": "Bewurkje",
"upload_form.thumbnail": "Miniatuerôfbylding wizigje",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Ofbylding analysearje…",
"upload_modal.apply": "Tapasse",
"upload_modal.applying": "Oan it tapassen…",
"upload_modal.choose_image": "Kies in ôfbylding",
"upload_modal.description_placeholder": "Heit syn wize foks ljept tûk oar de loaie hûn",
"upload_modal.detect_text": "Tekst yn in ôfbylding detektearje",
"upload_modal.edit_media": "Media bewurkje",
"upload_modal.hint": "Klik of sleep de sirkel yn de foarfertoaning nei in sintraal fokuspunt dat op elke thumbnail sichtber bliuwe moat.",
"upload_modal.preparing_ocr": "OCR tariede…",
"upload_modal.preview_label": "Foarfertoaning ({ratio})",
"upload_progress.label": "Uploading…", "upload_progress.label": "Uploading…",
"upload_progress.processing": "Dwaande…", "upload_progress.processing": "Dwaande…",
"username.taken": "Dy brûkersnamme is al yn gebrûk. Probearje in oare", "username.taken": "Dy brûkersnamme is al yn gebrûk. Probearje in oare",

View file

@ -875,26 +875,12 @@
"upload_button.label": "Cuir íomhánna, físeán nó comhad fuaime leis", "upload_button.label": "Cuir íomhánna, físeán nó comhad fuaime leis",
"upload_error.limit": "Sáraíodh an teorainn uaslódála comhaid.", "upload_error.limit": "Sáraíodh an teorainn uaslódála comhaid.",
"upload_error.poll": "Ní cheadaítear uaslódáil comhad le pobalbhreith.", "upload_error.poll": "Ní cheadaítear uaslódáil comhad le pobalbhreith.",
"upload_form.audio_description": "Déan cur síos ar dhaoine bodhra nó lagéisteachta",
"upload_form.description": "Describe for the visually impaired",
"upload_form.drag_and_drop.instructions": "Chun ceangaltán meán a phiocadh suas, brúigh spás nó cuir isteach. Agus tú ag tarraingt, bain úsáid as na heochracha saigheada chun an ceangaltán meán a bhogadh i dtreo ar bith. Brúigh spás nó cuir isteach arís chun an ceangaltán meán a scaoileadh ina phost nua, nó brúigh éalú chun cealú.", "upload_form.drag_and_drop.instructions": "Chun ceangaltán meán a phiocadh suas, brúigh spás nó cuir isteach. Agus tú ag tarraingt, bain úsáid as na heochracha saigheada chun an ceangaltán meán a bhogadh i dtreo ar bith. Brúigh spás nó cuir isteach arís chun an ceangaltán meán a scaoileadh ina phost nua, nó brúigh éalú chun cealú.",
"upload_form.drag_and_drop.on_drag_cancel": "Cuireadh an tarraingt ar ceal. Scaoileadh ceangaltán meán {item}.", "upload_form.drag_and_drop.on_drag_cancel": "Cuireadh an tarraingt ar ceal. Scaoileadh ceangaltán meán {item}.",
"upload_form.drag_and_drop.on_drag_end": "Scaoileadh ceangaltán meán {item}.", "upload_form.drag_and_drop.on_drag_end": "Scaoileadh ceangaltán meán {item}.",
"upload_form.drag_and_drop.on_drag_over": "Bogadh ceangaltán meán {item}.", "upload_form.drag_and_drop.on_drag_over": "Bogadh ceangaltán meán {item}.",
"upload_form.drag_and_drop.on_drag_start": "Roghnaíodh ceangaltán meán {item}.", "upload_form.drag_and_drop.on_drag_start": "Roghnaíodh ceangaltán meán {item}.",
"upload_form.edit": "Cuir in eagar", "upload_form.edit": "Cuir in eagar",
"upload_form.thumbnail": "Athraigh mionsamhail",
"upload_form.video_description": "Déan cur síos ar dhaoine atá bodhar, lagéisteachta, dall nó lagamhairc",
"upload_modal.analyzing_picture": "Ag anailísiú íomhá…",
"upload_modal.apply": "Cuir i bhFeidhm",
"upload_modal.applying": "Á gcur i bhfeidhm…",
"upload_modal.choose_image": "Roghnaigh íomhá",
"upload_modal.description_placeholder": "Chuaigh bé mhórsách le dlúthspád fíorfhinn trí hata mo dhea-phorcáin bhig",
"upload_modal.detect_text": "Braith téacs ó phictiúr",
"upload_modal.edit_media": "Cuir gné in eagar",
"upload_modal.hint": "Cliceáil nó tarraing an ciorcal ar an réamhamharc chun an pointe fócasach a roghnú a bheidh le feiceáil i gcónaí ar na mionsamhlacha go léir.",
"upload_modal.preparing_ocr": "OCR á ullmhú…",
"upload_modal.preview_label": "Réamhamharc ({ratio})",
"upload_progress.label": "Ag uaslódáil...", "upload_progress.label": "Ag uaslódáil...",
"upload_progress.processing": "Ag próiseáil…", "upload_progress.processing": "Ag próiseáil…",
"username.taken": "Glactar leis an ainm úsáideora sin. Bain triail eile as", "username.taken": "Glactar leis an ainm úsáideora sin. Bain triail eile as",

View file

@ -817,26 +817,12 @@
"upload_button.label": "Cuir ris dealbhan, video no faidhle fuaime", "upload_button.label": "Cuir ris dealbhan, video no faidhle fuaime",
"upload_error.limit": "Luchdaich thu suas na tha ceadaichte dhut a dhfhaidhlichean mu thràth.", "upload_error.limit": "Luchdaich thu suas na tha ceadaichte dhut a dhfhaidhlichean mu thràth.",
"upload_error.poll": "Chan fhaod thu faidhle a luchdadh suas an cois cunntais-bheachd.", "upload_error.poll": "Chan fhaod thu faidhle a luchdadh suas an cois cunntais-bheachd.",
"upload_form.audio_description": "Mìnich e dhan fheadhainn le èisteachd bheag",
"upload_form.description": "Mìnich e dhan fheadhainn le cion-lèirsinne",
"upload_form.drag_and_drop.instructions": "Airson ceanglachan meadhain a thogail, brùth air space no enter. Fhad a bhios tu ga shlaodadh, cleachd na h-iuchraichean-saighde airson an ceanglachan meadhain a ghluasad gu comhair sam bith. Brùth air space no enter a-rithist airson an ceanglachen meadhain a leigeil às air an ionad ùr aige no brùth air escape airson sgur dheth.", "upload_form.drag_and_drop.instructions": "Airson ceanglachan meadhain a thogail, brùth air space no enter. Fhad a bhios tu ga shlaodadh, cleachd na h-iuchraichean-saighde airson an ceanglachan meadhain a ghluasad gu comhair sam bith. Brùth air space no enter a-rithist airson an ceanglachen meadhain a leigeil às air an ionad ùr aige no brùth air escape airson sgur dheth.",
"upload_form.drag_and_drop.on_drag_cancel": "Chaidh sgur dhen t-slaodadh. Chaidh an ceanglachan meadhain {item} a leigeil às.", "upload_form.drag_and_drop.on_drag_cancel": "Chaidh sgur dhen t-slaodadh. Chaidh an ceanglachan meadhain {item} a leigeil às.",
"upload_form.drag_and_drop.on_drag_end": "Chaidh an ceanglachan meadhain {item} a leigeil às.", "upload_form.drag_and_drop.on_drag_end": "Chaidh an ceanglachan meadhain {item} a leigeil às.",
"upload_form.drag_and_drop.on_drag_over": "Chaidh an ceanglachan meadhain {item} a ghluasad.", "upload_form.drag_and_drop.on_drag_over": "Chaidh an ceanglachan meadhain {item} a ghluasad.",
"upload_form.drag_and_drop.on_drag_start": "Chaidh an ceanglachan meadhain {item} a thogail.", "upload_form.drag_and_drop.on_drag_start": "Chaidh an ceanglachan meadhain {item} a thogail.",
"upload_form.edit": "Deasaich", "upload_form.edit": "Deasaich",
"upload_form.thumbnail": "Atharraich an dealbhag",
"upload_form.video_description": "Mìnich e dhan fheadhainn le èisteachd bheag no cion-lèirsinne",
"upload_modal.analyzing_picture": "A sgrùdadh an deilbh…",
"upload_modal.apply": "Cuir an sàs",
"upload_modal.applying": "Ga chur an sàs…",
"upload_modal.choose_image": "Tagh dealbh",
"upload_modal.description_placeholder": "Lorg Sìm fiù bò, cè ⁊ neup ad àth",
"upload_modal.detect_text": "Mothaich dhan teacsa on dealbh",
"upload_modal.edit_media": "Deasaich am meadhan",
"upload_modal.hint": "Briog no slaod an cearcall air an ro-shealladh airson puing an fhòcais a thaghadh a chithear air gach dealbhag dheth.",
"upload_modal.preparing_ocr": "Ag ullachadh OCR…",
"upload_modal.preview_label": "Ro-shealladh ({ratio})",
"upload_progress.label": "Ga luchdadh suas…", "upload_progress.label": "Ga luchdadh suas…",
"upload_progress.processing": "Ga phròiseasadh…", "upload_progress.processing": "Ga phròiseasadh…",
"username.taken": "Tha an t-ainm-cleachdaiche seo aig cuideigin eile. Feuch fear eile", "username.taken": "Tha an t-ainm-cleachdaiche seo aig cuideigin eile. Feuch fear eile",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Aconteceu un fallo non agardado.", "alert.unexpected.message": "Aconteceu un fallo non agardado.",
"alert.unexpected.title": "Vaites!", "alert.unexpected.title": "Vaites!",
"alt_text_badge.title": "Texto Alt", "alt_text_badge.title": "Texto Alt",
"alt_text_modal.add_alt_text": "Engadir texto descritivo",
"alt_text_modal.add_text_from_image": "Engadir texto desde a imaxe",
"alt_text_modal.cancel": "Desbotar",
"alt_text_modal.change_thumbnail": "Cambiar a miniatura",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Describe isto para as persoas con dificultades auditivas…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Describe isto para as persoas con dificultades visuais…",
"alt_text_modal.done": "Feito",
"announcement.announcement": "Anuncio", "announcement.announcement": "Anuncio",
"annual_report.summary.archetype.booster": "O Telexornal", "annual_report.summary.archetype.booster": "O Telexornal",
"annual_report.summary.archetype.lurker": "Volleur", "annual_report.summary.archetype.lurker": "Volleur",
@ -875,26 +882,12 @@
"upload_button.label": "Engadir imaxes, un vídeo ou ficheiro de audio", "upload_button.label": "Engadir imaxes, un vídeo ou ficheiro de audio",
"upload_error.limit": "Límite máximo do ficheiro a subir excedido.", "upload_error.limit": "Límite máximo do ficheiro a subir excedido.",
"upload_error.poll": "Non se poden subir ficheiros nas enquisas.", "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 cegas ou con problemas visuais",
"upload_form.drag_and_drop.instructions": "Preme en Espazo ou Enter para escoller un anexo multimedia. Ao arrastrar usa as teclas de frecha para mover o anexo en todas direccións.Preme Espazo ou Enter outra vez para soltalo na súa nova posición, ou preme Escape para desbotar.", "upload_form.drag_and_drop.instructions": "Preme en Espazo ou Enter para escoller un anexo multimedia. Ao arrastrar usa as teclas de frecha para mover o anexo en todas direccións.Preme Espazo ou Enter outra vez para soltalo na súa nova posición, ou preme Escape para desbotar.",
"upload_form.drag_and_drop.on_drag_cancel": "Cancelouse o movemento. O anexo {item} soltouse.", "upload_form.drag_and_drop.on_drag_cancel": "Cancelouse o movemento. O anexo {item} soltouse.",
"upload_form.drag_and_drop.on_drag_end": "Soltouse o anexo multimedia {item}.", "upload_form.drag_and_drop.on_drag_end": "Soltouse o anexo multimedia {item}.",
"upload_form.drag_and_drop.on_drag_over": "Moveuse o anexo multimedia {item}.", "upload_form.drag_and_drop.on_drag_over": "Moveuse o anexo multimedia {item}.",
"upload_form.drag_and_drop.on_drag_start": "Escolleuse o anexo multimedia {item}.", "upload_form.drag_and_drop.on_drag_start": "Escolleuse o anexo multimedia {item}.",
"upload_form.edit": "Editar", "upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar a miniatura",
"upload_form.video_description": "Describe para persoas con problemas visuais ou auditivos",
"upload_modal.analyzing_picture": "Estase a analizar a imaxe…",
"upload_modal.apply": "Aplicar",
"upload_modal.applying": "Aplicando…",
"upload_modal.choose_image": "Elixir imaxe",
"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 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.preparing_ocr": "Preparando OCR…",
"upload_modal.preview_label": "Vista previa ({ratio})",
"upload_progress.label": "Estase a subir...", "upload_progress.label": "Estase a subir...",
"upload_progress.processing": "Procesando…", "upload_progress.processing": "Procesando…",
"username.taken": "O identificador xa está pillado. Inténtao con outro", "username.taken": "O identificador xa está pillado. Inténtao con outro",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "אירעה שגיאה בלתי צפויה.", "alert.unexpected.message": "אירעה שגיאה בלתי צפויה.",
"alert.unexpected.title": "אופס!", "alert.unexpected.title": "אופס!",
"alt_text_badge.title": "כיתוב חלופי", "alt_text_badge.title": "כיתוב חלופי",
"alt_text_modal.add_alt_text": "הוספת מלל חלופי",
"alt_text_modal.add_text_from_image": "הוספת מלל מתוך התמונה",
"alt_text_modal.cancel": "ביטול",
"alt_text_modal.change_thumbnail": "החלפת התמונה הממוזערת",
"alt_text_modal.describe_for_people_with_hearing_impairments": "תיאור התוכן לכבדי שמיעה…",
"alt_text_modal.describe_for_people_with_visual_impairments": "תיאור התוכן לפגועי ראיה…",
"alt_text_modal.done": "סיום",
"announcement.announcement": "הכרזה", "announcement.announcement": "הכרזה",
"annual_report.summary.archetype.booster": "ההד-וניסט(ית)", "annual_report.summary.archetype.booster": "ההד-וניסט(ית)",
"annual_report.summary.archetype.lurker": "השורץ.ת השקט.ה", "annual_report.summary.archetype.lurker": "השורץ.ת השקט.ה",
@ -875,26 +882,12 @@
"upload_button.label": "הוספת מדיה", "upload_button.label": "הוספת מדיה",
"upload_error.limit": "קובץ להעלאה חורג מנפח מותר.", "upload_error.limit": "קובץ להעלאה חורג מנפח מותר.",
"upload_error.poll": "לא ניתן להעלות קובץ עם סקר.", "upload_error.poll": "לא ניתן להעלות קובץ עם סקר.",
"upload_form.audio_description": "תאר/י עבור לקויי שמיעה",
"upload_form.description": "תיאור לכבדי ראיה",
"upload_form.drag_and_drop.instructions": "כדי לבחור קובץ מוצמד, יש ללחוץ על מקש רווח או אנטר. בעת הגרירה, השתמשו במקשי החיצים כדי להזיז את הקובץ המוצמד בכל כיוון. לחצו רווח או אנטר בשנית כדי לעזוב את הקובץ במקומו החדש, או לחצו אסקייפ לביטול.", "upload_form.drag_and_drop.instructions": "כדי לבחור קובץ מוצמד, יש ללחוץ על מקש רווח או אנטר. בעת הגרירה, השתמשו במקשי החיצים כדי להזיז את הקובץ המוצמד בכל כיוון. לחצו רווח או אנטר בשנית כדי לעזוב את הקובץ במקומו החדש, או לחצו אסקייפ לביטול.",
"upload_form.drag_and_drop.on_drag_cancel": "הגרירה בוטלה. קובץ המדיה {item} נעזב.", "upload_form.drag_and_drop.on_drag_cancel": "הגרירה בוטלה. קובץ המדיה {item} נעזב.",
"upload_form.drag_and_drop.on_drag_end": "קובץ המדיה {item} נעזב.", "upload_form.drag_and_drop.on_drag_end": "קובץ המדיה {item} נעזב.",
"upload_form.drag_and_drop.on_drag_over": "קובץ המדיה {item} הוזז.", "upload_form.drag_and_drop.on_drag_over": "קובץ המדיה {item} הוזז.",
"upload_form.drag_and_drop.on_drag_start": "קובץ המדיה {item} נבחר.", "upload_form.drag_and_drop.on_drag_start": "קובץ המדיה {item} נבחר.",
"upload_form.edit": "עריכה", "upload_form.edit": "עריכה",
"upload_form.thumbnail": "שנה/י תמונה ממוזערת",
"upload_form.video_description": "תאר/י עבור לקויי שמיעה ולקויי ראייה",
"upload_modal.analyzing_picture": "מנתח תמונה…",
"upload_modal.apply": "החל",
"upload_modal.applying": "מחיל…",
"upload_modal.choose_image": "בחר/י תמונה",
"upload_modal.description_placeholder": "עטלף אבק נס דרך מזגן שהתפוצץ כי חם",
"upload_modal.detect_text": "זהה טקסט מתמונה",
"upload_modal.edit_media": "עריכת מדיה",
"upload_modal.hint": "הקליקי או גררי את המעגל על גבי התצוגה המקדימה על מנת לבחור בנקודת המוקד שתראה תמיד בכל התמונות הממוזערות.",
"upload_modal.preparing_ocr": "מכין OCR…",
"upload_modal.preview_label": "תצוגה ({ratio})",
"upload_progress.label": "עולה...", "upload_progress.label": "עולה...",
"upload_progress.processing": "מעבד…", "upload_progress.processing": "מעבד…",
"username.taken": "שם המשתמש הזה תפוס. נסו אחר", "username.taken": "שם המשתמש הזה תפוס. נסו אחר",

View file

@ -479,12 +479,7 @@
"tabs_bar.home": "होम", "tabs_bar.home": "होम",
"tabs_bar.notifications": "सूचनाएँ", "tabs_bar.notifications": "सूचनाएँ",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "संशोधन करें", "upload_form.edit": "संशोधन करें",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.apply": "लागू करें",
"upload_modal.edit_media": "मीडिया में संशोधन करें",
"upload_progress.label": "अपलोडिंग...", "upload_progress.label": "अपलोडिंग...",
"video.download": "फाइल डाउनलोड करें" "video.download": "फाइल डाउनलोड करें"
} }

View file

@ -474,20 +474,7 @@
"upload_button.label": "Dodajte slike, video ili audio datoteku", "upload_button.label": "Dodajte slike, video ili audio datoteku",
"upload_error.limit": "Ograničenje prijenosa datoteka je prekoračeno.", "upload_error.limit": "Ograničenje prijenosa datoteka je prekoračeno.",
"upload_error.poll": "Prijenos datoteka nije dopušten kod anketa.", "upload_error.poll": "Prijenos datoteka nije dopušten kod anketa.",
"upload_form.audio_description": "Opišite za ljude sa slabim sluhom",
"upload_form.description": "Opišite za ljude sa slabim vidom",
"upload_form.edit": "Uredi", "upload_form.edit": "Uredi",
"upload_form.thumbnail": "Promijeni pretpregled",
"upload_form.video_description": "Opišite za ljude sa slabim sluhom ili vidom",
"upload_modal.analyzing_picture": "Analiza slike…",
"upload_modal.apply": "Primijeni",
"upload_modal.applying": "Primjenjivanje…",
"upload_modal.choose_image": "Odaberite sliku",
"upload_modal.description_placeholder": "Gojazni đačić s biciklom drži hmelj i finu vatu u džepu nošnje",
"upload_modal.detect_text": "Detektiraj tekst sa slike",
"upload_modal.edit_media": "Uređivanje medija",
"upload_modal.preparing_ocr": "Pripremam OCR…",
"upload_modal.preview_label": "Pretpregled ({ratio})",
"upload_progress.label": "Prenošenje...", "upload_progress.label": "Prenošenje...",
"upload_progress.processing": "Obrada…", "upload_progress.processing": "Obrada…",
"video.close": "Zatvori video", "video.close": "Zatvori video",

View file

@ -875,26 +875,12 @@
"upload_button.label": "Képek, videó vagy audiófájl hozzáadása", "upload_button.label": "Képek, videó vagy audiófájl hozzáadása",
"upload_error.limit": "A fájlfeltöltési korlát elérésre került.", "upload_error.limit": "A fájlfeltöltési korlát elérésre került.",
"upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.", "upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.",
"upload_form.audio_description": "Leírás siket vagy hallássérült emberek számára",
"upload_form.description": "Leírás vak vagy gyengénlátó emberek számára",
"upload_form.drag_and_drop.instructions": "Egy médiamelléklet kiválasztásához nyomj Szóközt vagy Entert. Húzás közben használd a nyílgombokat a médiamelléklet adott irányba történő mozgatásához. A médiamelléklet új pozícióba helyezéséhez nyomd meg a Szóközt vagy az Entert, vagy a megszakításhoz nyomd meg az Esc gombot.", "upload_form.drag_and_drop.instructions": "Egy médiamelléklet kiválasztásához nyomj Szóközt vagy Entert. Húzás közben használd a nyílgombokat a médiamelléklet adott irányba történő mozgatásához. A médiamelléklet új pozícióba helyezéséhez nyomd meg a Szóközt vagy az Entert, vagy a megszakításhoz nyomd meg az Esc gombot.",
"upload_form.drag_and_drop.on_drag_cancel": "Az áthúzás megszakítva. A(z) {item} médiamelléklet el lett dobva.", "upload_form.drag_and_drop.on_drag_cancel": "Az áthúzás megszakítva. A(z) {item} médiamelléklet el lett dobva.",
"upload_form.drag_and_drop.on_drag_end": "A(z) {item} médiamelléklet el lett dobva.", "upload_form.drag_and_drop.on_drag_end": "A(z) {item} médiamelléklet el lett dobva.",
"upload_form.drag_and_drop.on_drag_over": "A(z) {item} médiamelléklet át lett helyezve.", "upload_form.drag_and_drop.on_drag_over": "A(z) {item} médiamelléklet át lett helyezve.",
"upload_form.drag_and_drop.on_drag_start": "A(z) {item} médiamelléklet fel lett véve.", "upload_form.drag_and_drop.on_drag_start": "A(z) {item} médiamelléklet fel lett véve.",
"upload_form.edit": "Szerkesztés", "upload_form.edit": "Szerkesztés",
"upload_form.thumbnail": "Bélyegkép megváltoztatása",
"upload_form.video_description": "Leírás siket, hallássérült, vak vagy gyengénlátó emberek számára",
"upload_modal.analyzing_picture": "Kép elemzése…",
"upload_modal.apply": "Alkalmaz",
"upload_modal.applying": "Alkalmazás…",
"upload_modal.choose_image": "Kép kiválasztása",
"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",
"upload_modal.hint": "Kattints vagy húzd a kört az előnézetben arra a fókuszpontra, mely minden bélyegképen látható kell, hogy legyen.",
"upload_modal.preparing_ocr": "OCR előkészítése…",
"upload_modal.preview_label": "Előnézet ({ratio})",
"upload_progress.label": "Feltöltés…", "upload_progress.label": "Feltöltés…",
"upload_progress.processing": "Feldolgozás…", "upload_progress.processing": "Feldolgozás…",
"username.taken": "Ez a felhasználónév foglalt. Válassz másikat.", "username.taken": "Ez a felhasználónév foglalt. Válassz másikat.",

View file

@ -464,21 +464,7 @@
"upload_button.label": "Աւելացնել մեդիա", "upload_button.label": "Աւելացնել մեդիա",
"upload_error.limit": "Նիշքի վերբեռնման սահմանաչափը գերազանցուած է։", "upload_error.limit": "Նիշքի վերբեռնման սահմանաչափը գերազանցուած է։",
"upload_error.poll": "Հարցումների հետ նիշք կցել հնարաւոր չէ։", "upload_error.poll": "Հարցումների հետ նիշք կցել հնարաւոր չէ։",
"upload_form.audio_description": "Նկարագրիր ձայնագրութեան բովանդակութիւնը լսողական խնդիրներով անձանց համար",
"upload_form.description": "Նկարագիր՝ տեսողական խնդիրներ ունեցողների համար",
"upload_form.edit": "Խմբագրել", "upload_form.edit": "Խմբագրել",
"upload_form.thumbnail": "Փոխել պատկերակը",
"upload_form.video_description": "Նկարագրիր տեսանիւթը լսողական կամ տեսողական խնդիրներով անձանց համար",
"upload_modal.analyzing_picture": "Լուսանկարի վերլուծում…",
"upload_modal.apply": "Կիրառել",
"upload_modal.applying": "Կիրառւում է...",
"upload_modal.choose_image": "Ընտրել նկար",
"upload_modal.description_placeholder": "Բել դղեակի ձախ ժամն օֆ ազգութեանը ցպահանջ չճշտած վնաս էր եւ փառք։",
"upload_modal.detect_text": "Յայտնաբերել տեքստը նկարից",
"upload_modal.edit_media": "Խմբագրել մեդիան",
"upload_modal.hint": "Սեղմէք եւ տեղաշարժէք նախադիտման շրջանակը՝ որ ընտրէք մանրապատկերում միշտ տեսանելի կէտը։",
"upload_modal.preparing_ocr": "Գրաճանաչման նախապատրաստում…",
"upload_modal.preview_label": "Նախադիտում ({ratio})",
"upload_progress.label": "Վերբեռնվում է…", "upload_progress.label": "Վերբեռնվում է…",
"upload_progress.processing": "Մշակուում է...", "upload_progress.processing": "Մշակուում է...",
"video.close": "Փակել տեսագրութիւնը", "video.close": "Փակել տեսագրութիւնը",

View file

@ -86,6 +86,9 @@
"alert.unexpected.message": "Un error inexpectate ha occurrite.", "alert.unexpected.message": "Un error inexpectate ha occurrite.",
"alert.unexpected.title": "Ups!", "alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Texto alternative", "alt_text_badge.title": "Texto alternative",
"alt_text_modal.add_text_from_image": "Adder texto ab imagine",
"alt_text_modal.cancel": "Cancellar",
"alt_text_modal.change_thumbnail": "Cambiar le miniatura",
"announcement.announcement": "Annuncio", "announcement.announcement": "Annuncio",
"annual_report.summary.archetype.booster": "Le impulsator", "annual_report.summary.archetype.booster": "Le impulsator",
"annual_report.summary.archetype.lurker": "Le lector", "annual_report.summary.archetype.lurker": "Le lector",
@ -380,7 +383,7 @@
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} message} other {{counter} messages}} hodie", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} message} other {{counter} messages}} hodie",
"hashtag.follow": "Sequer hashtag", "hashtag.follow": "Sequer hashtag",
"hashtag.unfollow": "Non sequer plus le hashtag", "hashtag.unfollow": "Non sequer plus le hashtag",
"hashtags.and_other": "…e {count, plural, one {}other {# plus}}", "hashtags.and_other": "…e {count, plural, one {un altere} other {# alteres}}",
"hints.profiles.followers_may_be_missing": "Le sequitores de iste profilo pote mancar.", "hints.profiles.followers_may_be_missing": "Le sequitores de iste profilo pote mancar.",
"hints.profiles.follows_may_be_missing": "Le profilos sequite per iste profilo pote mancar.", "hints.profiles.follows_may_be_missing": "Le profilos sequite per iste profilo pote mancar.",
"hints.profiles.posts_may_be_missing": "Alcun messages de iste profilo pote mancar.", "hints.profiles.posts_may_be_missing": "Alcun messages de iste profilo pote mancar.",
@ -875,26 +878,12 @@
"upload_button.label": "Adde imagines, un video o un file de audio", "upload_button.label": "Adde imagines, un video o un file de audio",
"upload_error.limit": "Limite de incargamento de files excedite.", "upload_error.limit": "Limite de incargamento de files excedite.",
"upload_error.poll": "Incargamento de files non permittite con sondages.", "upload_error.poll": "Incargamento de files non permittite con sondages.",
"upload_form.audio_description": "Describe lo pro le gente con difficultates auditive",
"upload_form.description": "Describe lo pro le gente con difficultates visual",
"upload_form.drag_and_drop.instructions": "Pro prender un annexo multimedial, preme sur le barra de spatios o Enter. Trahente lo, usa le claves de flecha pro displaciar le annexo multimedial in un certe direction. Preme le barra de spatios o Enter de novo pro deponer le annexo multimedial in su nove position, o preme sur Escape pro cancellar.", "upload_form.drag_and_drop.instructions": "Pro prender un annexo multimedial, preme sur le barra de spatios o Enter. Trahente lo, usa le claves de flecha pro displaciar le annexo multimedial in un certe direction. Preme le barra de spatios o Enter de novo pro deponer le annexo multimedial in su nove position, o preme sur Escape pro cancellar.",
"upload_form.drag_and_drop.on_drag_cancel": "Le displaciamento ha essite cancellate. Le annexo multimedial {item} ha essite deponite.", "upload_form.drag_and_drop.on_drag_cancel": "Le displaciamento ha essite cancellate. Le annexo multimedial {item} ha essite deponite.",
"upload_form.drag_and_drop.on_drag_end": "Le annexo multimedial {item} ha essite deponite.", "upload_form.drag_and_drop.on_drag_end": "Le annexo multimedial {item} ha essite deponite.",
"upload_form.drag_and_drop.on_drag_over": "Le annexo multimedial {item} ha essite displaciate.", "upload_form.drag_and_drop.on_drag_over": "Le annexo multimedial {item} ha essite displaciate.",
"upload_form.drag_and_drop.on_drag_start": "Le annexo multimedial {item} ha essite prendite.", "upload_form.drag_and_drop.on_drag_start": "Le annexo multimedial {item} ha essite prendite.",
"upload_form.edit": "Modificar", "upload_form.edit": "Modificar",
"upload_form.thumbnail": "Cambiar le miniatura",
"upload_form.video_description": "Describe lo pro le gente con difficultates auditive o visual",
"upload_modal.analyzing_picture": "Analysa imagine…",
"upload_modal.apply": "Applicar",
"upload_modal.applying": "Applicante…",
"upload_modal.choose_image": "Seliger un imagine",
"upload_modal.description_placeholder": "Cinque expertos del zoo jam bibeva whisky frigide",
"upload_modal.detect_text": "Deteger texto de un imagine",
"upload_modal.edit_media": "Modificar multimedia",
"upload_modal.hint": "Clicca o trahe le circulo sur le previsualisation pro eliger le puncto focal que essera sempre visibile sur tote le miniaturas.",
"upload_modal.preparing_ocr": "Preparation del OCR…",
"upload_modal.preview_label": "Previsualisation ({ratio})",
"upload_progress.label": "Incargante...", "upload_progress.label": "Incargante...",
"upload_progress.processing": "Processante…", "upload_progress.processing": "Processante…",
"username.taken": "Iste nomine de usator es ja in uso. Proba con un altere", "username.taken": "Iste nomine de usator es ja in uso. Proba con un altere",

View file

@ -601,21 +601,7 @@
"upload_button.label": "Tambahkan media", "upload_button.label": "Tambahkan media",
"upload_error.limit": "Batas unggah berkas terlampaui.", "upload_error.limit": "Batas unggah berkas terlampaui.",
"upload_error.poll": "Unggah berkas tak diizinkan di japat ini.", "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": "Sunting", "upload_form.edit": "Sunting",
"upload_form.thumbnail": "Ubah gambar kecil",
"upload_form.video_description": "Penjelasan untuk orang dengan gangguan pendengaran atau penglihatan",
"upload_modal.analyzing_picture": "Analisis gambar…",
"upload_modal.apply": "Terapkan",
"upload_modal.applying": "Menerapkan…",
"upload_modal.choose_image": "Pilih gambar",
"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.preparing_ocr": "Menyiapkan OCR…",
"upload_modal.preview_label": "Pratinjau ({ratio})",
"upload_progress.label": "Mengunggah...", "upload_progress.label": "Mengunggah...",
"upload_progress.processing": "Memproses…", "upload_progress.processing": "Memproses…",
"video.close": "Tutup video", "video.close": "Tutup video",

View file

@ -696,21 +696,7 @@
"upload_button.label": "Adjunter images, un video o un audio-file", "upload_button.label": "Adjunter images, un video o un audio-file",
"upload_error.limit": "Límite de medie-cargationes transpassat.", "upload_error.limit": "Límite de medie-cargationes transpassat.",
"upload_error.poll": "On ne es permisset cargar medie con balotationes.", "upload_error.poll": "On ne es permisset cargar medie con balotationes.",
"upload_form.audio_description": "Descrir por persones qui es surd o ne audi bon",
"upload_form.description": "Descrir por persones qui es ciec o have mal vision",
"upload_form.edit": "Redacter", "upload_form.edit": "Redacter",
"upload_form.thumbnail": "Changear previsual image",
"upload_form.video_description": "Descrir por persones qui es surd, ciec, ne audi bon, o have mal vision",
"upload_modal.analyzing_picture": "Analisant image…",
"upload_modal.apply": "Aplicar",
"upload_modal.applying": "Aplicant…",
"upload_modal.choose_image": "Selecter image",
"upload_modal.description_placeholder": "Li Europan lingues es membres del sam familie. Lor separat existentie es un mite",
"upload_modal.detect_text": "Detecter text del image",
"upload_modal.edit_media": "Redacter medie",
"upload_modal.hint": "Clicca o trena li circul por selecter li focal punctu quel va esser sempre visibil in omni previse-images.",
"upload_modal.preparing_ocr": "Preparant OCR…",
"upload_modal.preview_label": "Previse ({ratio})",
"upload_progress.label": "Cargant...", "upload_progress.label": "Cargant...",
"upload_progress.processing": "Tractant…", "upload_progress.processing": "Tractant…",
"username.taken": "Ti usator-nómine es ja prendet. Trova altri", "username.taken": "Ti usator-nómine es ja prendet. Trova altri",

View file

@ -149,9 +149,5 @@
"tabs_bar.notifications": "Nziọkwà", "tabs_bar.notifications": "Nziọkwà",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"trends.trending_now": "Na-ewu ewu kịta", "trends.trending_now": "Na-ewu ewu kịta",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.choose_image": "Họrọ onyonyo",
"upload_progress.label": "Uploading…" "upload_progress.label": "Uploading…"
} }

View file

@ -790,26 +790,12 @@
"upload_button.label": "Adjuntar kontenajo", "upload_button.label": "Adjuntar kontenajo",
"upload_error.limit": "Failadcharglimito ecesesis.", "upload_error.limit": "Failadcharglimito ecesesis.",
"upload_error.poll": "Failadchargo ne permisesas kun votposti.", "upload_error.poll": "Failadchargo ne permisesas kun votposti.",
"upload_form.audio_description": "Deskriptez por personi kun audnekapableso",
"upload_form.description": "Deskriptez por personi kun vidnekapableso",
"upload_form.drag_and_drop.instructions": "Por tenar mediatachajo, presez spaco o eniro. Presez spaco o eniro itere por destenar la mediatachajo en olua nova loko, o presez eskapo por anular.", "upload_form.drag_and_drop.instructions": "Por tenar mediatachajo, presez spaco o eniro. Presez spaco o eniro itere por destenar la mediatachajo en olua nova loko, o presez eskapo por anular.",
"upload_form.drag_and_drop.on_drag_cancel": "Tiro anulesis. Mediatachajo {item} destenesis.", "upload_form.drag_and_drop.on_drag_cancel": "Tiro anulesis. Mediatachajo {item} destenesis.",
"upload_form.drag_and_drop.on_drag_end": "Mediatachajo {item} destenesis.", "upload_form.drag_and_drop.on_drag_end": "Mediatachajo {item} destenesis.",
"upload_form.drag_and_drop.on_drag_over": "Mediatachajo {item} movigesis.", "upload_form.drag_and_drop.on_drag_over": "Mediatachajo {item} movigesis.",
"upload_form.drag_and_drop.on_drag_start": "Tenis mediatachajo {item}.", "upload_form.drag_and_drop.on_drag_start": "Tenis mediatachajo {item}.",
"upload_form.edit": "Modifikez", "upload_form.edit": "Modifikez",
"upload_form.thumbnail": "Chanjez imajeto",
"upload_form.video_description": "Deskriptez por personi kun audnekapableso o vidnekapableso",
"upload_modal.analyzing_picture": "Analizas imajo…",
"upload_modal.apply": "Aplikez",
"upload_modal.applying": "Aplikas…",
"upload_modal.choose_image": "Selektez imajo",
"upload_modal.description_placeholder": "Rapida bruna foxo saltas super la indolenta hundo",
"upload_modal.detect_text": "Deskovrez texto de imajo",
"upload_modal.edit_media": "Modifikez medii",
"upload_modal.hint": "Kliktez o tirez cirklo che prevido por selektar centrala punto quo sempre montresas kun omna imajeti.",
"upload_modal.preparing_ocr": "Preparas OCR…",
"upload_modal.preview_label": "Previdez ({ratio})",
"upload_progress.label": "Kargante...", "upload_progress.label": "Kargante...",
"upload_progress.processing": "Traktante…", "upload_progress.processing": "Traktante…",
"username.taken": "Ta uzantnomo ja es posedita. Provez altro", "username.taken": "Ta uzantnomo ja es posedita. Provez altro",

View file

@ -875,26 +875,12 @@
"upload_button.label": "Bæta við myndum, myndskeiði eða hljóðskrá", "upload_button.label": "Bæta við myndum, myndskeiði eða hljóðskrá",
"upload_error.limit": "Fór yfir takmörk á innsendingum skráa.", "upload_error.limit": "Fór yfir takmörk á innsendingum skráa.",
"upload_error.poll": "Innsending skráa er ekki leyfð í könnunum.", "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.drag_and_drop.instructions": "Til að taka í myndefnisviðhengi skaltu ýta á bilslána eða Enter. Til að draga geturðu notað örvalyklana til að færa viðhengið í samsvarandi áttir. Ýttu aftur á bilslána eða Enter til að sleppa viðhenginu á nýja staðinn, eða ýttu á Escape til að hætta við.", "upload_form.drag_and_drop.instructions": "Til að taka í myndefnisviðhengi skaltu ýta á bilslána eða Enter. Til að draga geturðu notað örvalyklana til að færa viðhengið í samsvarandi áttir. Ýttu aftur á bilslána eða Enter til að sleppa viðhenginu á nýja staðinn, eða ýttu á Escape til að hætta við.",
"upload_form.drag_and_drop.on_drag_cancel": "Hætt var við að draga. Myndefnisviðhenginu {item} var sleppt.", "upload_form.drag_and_drop.on_drag_cancel": "Hætt var við að draga. Myndefnisviðhenginu {item} var sleppt.",
"upload_form.drag_and_drop.on_drag_end": "Myndefnisviðhenginu {item} var sleppt.", "upload_form.drag_and_drop.on_drag_end": "Myndefnisviðhenginu {item} var sleppt.",
"upload_form.drag_and_drop.on_drag_over": "Myndefnisviðhengið {item} var fært.", "upload_form.drag_and_drop.on_drag_over": "Myndefnisviðhengið {item} var fært.",
"upload_form.drag_and_drop.on_drag_start": "Tók í myndefnisviðhengið {item}.", "upload_form.drag_and_drop.on_drag_start": "Tók í myndefnisviðhengið {item}.",
"upload_form.edit": "Breyta", "upload_form.edit": "Breyta",
"upload_form.thumbnail": "Skipta um smámynd",
"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.applying": "Beiti…",
"upload_modal.choose_image": "Veldu mynd",
"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.preparing_ocr": "Undirbý OCR-ljóslestur…",
"upload_modal.preview_label": "Forskoðun ({ratio})",
"upload_progress.label": "Er að senda inn...", "upload_progress.label": "Er að senda inn...",
"upload_progress.processing": "Meðhöndla…", "upload_progress.processing": "Meðhöndla…",
"username.taken": "Þetta notandanafn er frátekið. Prófaðu eitthvað annað", "username.taken": "Þetta notandanafn er frátekið. Prófaðu eitthvað annað",

View file

@ -86,6 +86,13 @@
"alert.unexpected.message": "Si è verificato un errore imprevisto.", "alert.unexpected.message": "Si è verificato un errore imprevisto.",
"alert.unexpected.title": "Oops!", "alert.unexpected.title": "Oops!",
"alt_text_badge.title": "Testo alternativo", "alt_text_badge.title": "Testo alternativo",
"alt_text_modal.add_alt_text": "Aggiungi testo alternativo",
"alt_text_modal.add_text_from_image": "Aggiungi testo dall'immagine",
"alt_text_modal.cancel": "Annulla",
"alt_text_modal.change_thumbnail": "Cambia la miniatura",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Descrivi questo per le persone con disturbi dell'udito…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Descrivi questo per le persone con disabilità visive…",
"alt_text_modal.done": "Fatto",
"announcement.announcement": "Annuncio", "announcement.announcement": "Annuncio",
"annual_report.summary.archetype.booster": "Cacciatore/trice di tendenze", "annual_report.summary.archetype.booster": "Cacciatore/trice di tendenze",
"annual_report.summary.archetype.lurker": "L'osservatore/trice", "annual_report.summary.archetype.lurker": "L'osservatore/trice",
@ -875,26 +882,12 @@
"upload_button.label": "Aggiungi un file immagine, video o audio", "upload_button.label": "Aggiungi un file immagine, video o audio",
"upload_error.limit": "Limite di caricamento dei file superato.", "upload_error.limit": "Limite di caricamento dei file superato.",
"upload_error.poll": "Caricamento del file non consentito con i sondaggi.", "upload_error.poll": "Caricamento del file non consentito con i sondaggi.",
"upload_form.audio_description": "Descrizione per persone con deficit uditivi",
"upload_form.description": "Descrizione per ipovedenti",
"upload_form.drag_and_drop.instructions": "Per selezionare un allegato multimediale, premi Spazio o Invio. Mentre trascini, usa i tasti con le frecce per spostare l'allegato multimediale in una qualsiasi direzione. Premi di nuovo Spazio o Invio per rilasciare l'allegato multimediale nella sua nuova posizione, oppure premi Esc per annullare.", "upload_form.drag_and_drop.instructions": "Per selezionare un allegato multimediale, premi Spazio o Invio. Mentre trascini, usa i tasti con le frecce per spostare l'allegato multimediale in una qualsiasi direzione. Premi di nuovo Spazio o Invio per rilasciare l'allegato multimediale nella sua nuova posizione, oppure premi Esc per annullare.",
"upload_form.drag_and_drop.on_drag_cancel": "Il trascinamento è stato annullato. L'allegato multimediale {item} è stato eliminato.", "upload_form.drag_and_drop.on_drag_cancel": "Il trascinamento è stato annullato. L'allegato multimediale {item} è stato eliminato.",
"upload_form.drag_and_drop.on_drag_end": "L'allegato multimediale {item} è stato eliminato.", "upload_form.drag_and_drop.on_drag_end": "L'allegato multimediale {item} è stato eliminato.",
"upload_form.drag_and_drop.on_drag_over": "L'allegato multimediale {item} è stato spostato.", "upload_form.drag_and_drop.on_drag_over": "L'allegato multimediale {item} è stato spostato.",
"upload_form.drag_and_drop.on_drag_start": "L'allegato multimediale {item} è stato ricevuto.", "upload_form.drag_and_drop.on_drag_start": "L'allegato multimediale {item} è stato ricevuto.",
"upload_form.edit": "Modifica", "upload_form.edit": "Modifica",
"upload_form.thumbnail": "Cambia la miniatura",
"upload_form.video_description": "Descrizione per persone con deficit uditivi o ipovedenti",
"upload_modal.analyzing_picture": "Analizzando l'immagine…",
"upload_modal.apply": "Applica",
"upload_modal.applying": "Applicazione…",
"upload_modal.choose_image": "Scegli l'immagine",
"upload_modal.description_placeholder": "Ma la volpe col suo balzo ha raggiunto il fiero Fido",
"upload_modal.detect_text": "Rileva il testo dall'immagine",
"upload_modal.edit_media": "Modifica il media",
"upload_modal.hint": "Clicca o trascina il cerchio sull'anteprima per scegliere il punto focale che sarà sempre visualizzato su tutte le miniature.",
"upload_modal.preparing_ocr": "Preparazione OCR…",
"upload_modal.preview_label": "Anteprima ({ratio})",
"upload_progress.label": "Caricamento...", "upload_progress.label": "Caricamento...",
"upload_progress.processing": "Elaborazione…", "upload_progress.processing": "Elaborazione…",
"username.taken": "Quel nome utente è già in uso. Prova con un altro", "username.taken": "Quel nome utente è già in uso. Prova con un altro",

View file

@ -1067,26 +1067,12 @@
"upload_button.label": "メディアを追加 (複数の画像または1つの動画か音声ファイル)", "upload_button.label": "メディアを追加 (複数の画像または1つの動画か音声ファイル)",
"upload_error.limit": "アップロードできる上限を超えています。", "upload_error.limit": "アップロードできる上限を超えています。",
"upload_error.poll": "アンケートではファイルをアップロードできません。", "upload_error.poll": "アンケートではファイルをアップロードできません。",
"upload_form.audio_description": "聴き取りが難しいユーザーへの説明",
"upload_form.description": "視覚的に閲覧が難しいユーザーへの説明",
"upload_form.drag_and_drop.instructions": "メディア添付ファイルを選択するには、スペースキーまたはエンターキーを押してください。ドラッグ中は、矢印キーを使ってメディア添付ファイルを任意の方向に移動できます。再度スペースキーまたはエンターキーを押すと新しい位置にメディア添付ファイルをドロップできます。キャンセルするにはエスケープキーを押してください。", "upload_form.drag_and_drop.instructions": "メディア添付ファイルを選択するには、スペースキーまたはエンターキーを押してください。ドラッグ中は、矢印キーを使ってメディア添付ファイルを任意の方向に移動できます。再度スペースキーまたはエンターキーを押すと新しい位置にメディア添付ファイルをドロップできます。キャンセルするにはエスケープキーを押してください。",
"upload_form.drag_and_drop.on_drag_cancel": "ドラッグがキャンセルされました。メディア添付ファイル {item} がドロップされました。", "upload_form.drag_and_drop.on_drag_cancel": "ドラッグがキャンセルされました。メディア添付ファイル {item} がドロップされました。",
"upload_form.drag_and_drop.on_drag_end": "メディア添付ファイル {item} がドロップされました。", "upload_form.drag_and_drop.on_drag_end": "メディア添付ファイル {item} がドロップされました。",
"upload_form.drag_and_drop.on_drag_over": "メディア添付ファイル {item} が移動されました。", "upload_form.drag_and_drop.on_drag_over": "メディア添付ファイル {item} が移動されました。",
"upload_form.drag_and_drop.on_drag_start": "メディア添付ファイル {item} を選択しました。", "upload_form.drag_and_drop.on_drag_start": "メディア添付ファイル {item} を選択しました。",
"upload_form.edit": "編集", "upload_form.edit": "編集",
"upload_form.thumbnail": "サムネイルを変更",
"upload_form.video_description": "聴き取りや視覚的に閲覧が難しいユーザーへの説明",
"upload_modal.analyzing_picture": "画像を解析中…",
"upload_modal.apply": "適用",
"upload_modal.applying": "適用中...",
"upload_modal.choose_image": "画像を選択",
"upload_modal.description_placeholder": "あのイーハトーヴォのすきとおった風",
"upload_modal.detect_text": "画像からテキストを検出",
"upload_modal.edit_media": "メディアを編集",
"upload_modal.hint": "サムネイルの焦点にしたい場所をクリックするか円形の枠をその場所にドラッグしてください。",
"upload_modal.preparing_ocr": "OCRの準備中…",
"upload_modal.preview_label": "プレビュー ({ratio})",
"upload_progress.label": "アップロード中...", "upload_progress.label": "アップロード中...",
"upload_progress.processing": "処理中…", "upload_progress.processing": "処理中…",
"username.taken": "このユーザー名はすでに使用されています。ほかのユーザー名を入力してください", "username.taken": "このユーザー名はすでに使用されています。ほかのユーザー名を入力してください",

View file

@ -228,9 +228,6 @@
"ui.beforeunload": "თქვენი დრაფტი გაუქმდება თუ დატოვებთ მასტოდონს.", "ui.beforeunload": "თქვენი დრაფტი გაუქმდება თუ დატოვებთ მასტოდონს.",
"upload_area.title": "გადმოწიეთ და ჩააგდეთ ასატვირთათ", "upload_area.title": "გადმოწიეთ და ჩააგდეთ ასატვირთათ",
"upload_button.label": "მედიის დამატება", "upload_button.label": "მედიის დამატება",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "აღწერილობა ვიზუალურად უფასურისთვის",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_progress.label": "იტვირთება...", "upload_progress.label": "იტვირთება...",
"video.close": "ვიდეოს დახურვა", "video.close": "ვიდეოს დახურვა",
"video.exit_fullscreen": "სრულ ეკრანზე ჩვენების გათიშვა", "video.exit_fullscreen": "სრულ ეკრანზე ჩვენების გათიშვა",

View file

@ -602,20 +602,7 @@
"upload_button.label": "Rnu taɣwalt", "upload_button.label": "Rnu taɣwalt",
"upload_error.limit": "Asali n ufaylu iεedda talast.", "upload_error.limit": "Asali n ufaylu iεedda talast.",
"upload_error.poll": "Ur ittusireg ara usali n ufaylu s tefranin.", "upload_error.poll": "Ur ittusireg ara usali n ufaylu s tefranin.",
"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.edit": "Ẓreg",
"upload_form.thumbnail": "Beddel tugna",
"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.applying": "Asnas…",
"upload_modal.choose_image": "Fren tugna",
"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 amidya",
"upload_modal.preparing_ocr": "Aheyyi n OCR…",
"upload_modal.preview_label": "Taskant ({ratio})",
"upload_progress.label": "Asali iteddu...", "upload_progress.label": "Asali iteddu...",
"upload_progress.processing": "Asesfer…", "upload_progress.processing": "Asesfer…",
"username.taken": "Yettwaṭṭef yisem-a n useqdac. Ɛreḍ wayeḍ", "username.taken": "Yettwaṭṭef yisem-a n useqdac. Ɛreḍ wayeḍ",

View file

@ -329,19 +329,7 @@
"upload_button.label": "Медиа қосу (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Медиа қосу (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Файл жүктеу лимитінен асып кеттіңіз.", "upload_error.limit": "Файл жүктеу лимитінен асып кеттіңіз.",
"upload_error.poll": "Сауалнамамен бірге файл жүктеуге болмайды.", "upload_error.poll": "Сауалнамамен бірге файл жүктеуге болмайды.",
"upload_form.audio_description": "Есту қабілеті нашар адамдарға сипаттама беріңіз",
"upload_form.description": "Көру қабілеті нашар адамдар үшін сипаттаңыз",
"upload_form.edit": "Түзету", "upload_form.edit": "Түзету",
"upload_form.thumbnail": "Суретті өзгерту",
"upload_form.video_description": "Есту немесе көру қабілеті нашар адамдарға сипаттама беріңіз",
"upload_modal.analyzing_picture": "Суретті анализ жасау…",
"upload_modal.apply": "Қолдану",
"upload_modal.choose_image": "Сурет таңдау",
"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.close": "Видеоны жабу",
"video.download": "Файлды түсіру", "video.download": "Файлды түсіру",

View file

@ -87,8 +87,5 @@
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_progress.label": "Uploading…" "upload_progress.label": "Uploading…"
} }

View file

@ -867,26 +867,12 @@
"upload_button.label": "이미지, 영상, 오디오 파일 추가", "upload_button.label": "이미지, 영상, 오디오 파일 추가",
"upload_error.limit": "파일 업로드 제한에 도달했습니다.", "upload_error.limit": "파일 업로드 제한에 도달했습니다.",
"upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없습니다.", "upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없습니다.",
"upload_form.audio_description": "청각장애인이나 저청각자를 위한 설명",
"upload_form.description": "시각장애인이나 저시력자를 위한 설명",
"upload_form.drag_and_drop.instructions": "미디어 첨부파일을 집으려면 스페이스나 엔터를 누르세요. 드래그 하는 동안 방향키를 이용해 원하는 방향으로 이동할 수 있습니다. 스페이스나 엔터를 다시 눌러 새 위치에 놓거나 ESC를 이용해 취소할 수 있습니다.", "upload_form.drag_and_drop.instructions": "미디어 첨부파일을 집으려면 스페이스나 엔터를 누르세요. 드래그 하는 동안 방향키를 이용해 원하는 방향으로 이동할 수 있습니다. 스페이스나 엔터를 다시 눌러 새 위치에 놓거나 ESC를 이용해 취소할 수 있습니다.",
"upload_form.drag_and_drop.on_drag_cancel": "드래그가 취소되었습니다. 미디어 첨부파일 {item}은 이동되지 않았습니다.", "upload_form.drag_and_drop.on_drag_cancel": "드래그가 취소되었습니다. 미디어 첨부파일 {item}은 이동되지 않았습니다.",
"upload_form.drag_and_drop.on_drag_end": "미디어 첨부파일 {item}은 이동되지 않았습니다.", "upload_form.drag_and_drop.on_drag_end": "미디어 첨부파일 {item}은 이동되지 않았습니다.",
"upload_form.drag_and_drop.on_drag_over": "미디어 첨부파일 {item}이 이동되었습니다.", "upload_form.drag_and_drop.on_drag_over": "미디어 첨부파일 {item}이 이동되었습니다.",
"upload_form.drag_and_drop.on_drag_start": "미디어 첨부파일 {item}을 집었습니다.", "upload_form.drag_and_drop.on_drag_start": "미디어 첨부파일 {item}을 집었습니다.",
"upload_form.edit": "수정", "upload_form.edit": "수정",
"upload_form.thumbnail": "썸네일 변경",
"upload_form.video_description": "청각장애인, 저청각자, 시각장애인, 저시력자를 위한 설명",
"upload_modal.analyzing_picture": "사진 분석 중…",
"upload_modal.apply": "적용",
"upload_modal.applying": "적용 중...",
"upload_modal.choose_image": "이미지 선택",
"upload_modal.description_placeholder": "다람쥐 헌 쳇바퀴 타고파",
"upload_modal.detect_text": "사진에서 문자 탐색",
"upload_modal.edit_media": "미디어 수정",
"upload_modal.hint": "미리보기를 클릭하거나 드래그 해서 초점을 맞추세요. 이 점은 썸네일에서 항상 보여질 부분을 나타냅니다.",
"upload_modal.preparing_ocr": "OCR 준비 중…",
"upload_modal.preview_label": "미리보기 ({ratio})",
"upload_progress.label": "업로드 중...", "upload_progress.label": "업로드 중...",
"upload_progress.processing": "처리 중...", "upload_progress.processing": "처리 중...",
"username.taken": "이미 쓰인 사용자명입니다. 다른 것으로 시도해보세요", "username.taken": "이미 쓰인 사용자명입니다. 다른 것으로 시도해보세요",

View file

@ -514,21 +514,7 @@
"upload_button.label": "Wêne, vîdeoyek an jî pelê dengî tevlî bike", "upload_button.label": "Wêne, vîdeoyek an jî pelê dengî tevlî bike",
"upload_error.limit": "Sînora barkirina pelan derbas bû.", "upload_error.limit": "Sînora barkirina pelan derbas bû.",
"upload_error.poll": "Di rapirsîyan de mafê barkirina pelan nayê dayîn.", "upload_error.poll": "Di rapirsîyan de mafê barkirina pelan nayê dayîn.",
"upload_form.audio_description": "Ji bona kesên kêm dibihîsin re pênase bike",
"upload_form.description": "Ji bona astengdarên dîtinê re vebêje",
"upload_form.edit": "Serrast bike", "upload_form.edit": "Serrast bike",
"upload_form.thumbnail": "Wêneyê biçûk biguherîne",
"upload_form.video_description": "Ji bo kesên kerr û lalan pênase bike",
"upload_modal.analyzing_picture": "Wêne tê analîzkirin…",
"upload_modal.apply": "Bisepîne",
"upload_modal.applying": "Tê sepandin…",
"upload_modal.choose_image": "Wêneyê hilbijêre",
"upload_modal.description_placeholder": "Rovîyek qehweyî û bilez li ser kûçikê tîral banz dide",
"upload_modal.detect_text": "Ji nivîsa wêneyê re serwext be",
"upload_modal.edit_media": "Medyayê sererast bike",
"upload_modal.hint": "Ji bo hilbijartina xala navendê her tim dîmenê piçûk de pêşdîtina çerxê bitikîne an jî kaş bike.",
"upload_modal.preparing_ocr": "OCR dihê amadekirin…",
"upload_modal.preview_label": "Pêşdîtin ({ratio})",
"upload_progress.label": "Tê barkirin...", "upload_progress.label": "Tê barkirin...",
"upload_progress.processing": "Kar tê kirin…", "upload_progress.processing": "Kar tê kirin…",
"video.close": "Vîdyoyê bigire", "video.close": "Vîdyoyê bigire",

View file

@ -331,20 +331,7 @@
"upload_button.label": "Keworra skeusennow, gwydhyow po sonadow", "upload_button.label": "Keworra skeusennow, gwydhyow po sonadow",
"upload_error.limit": "Finweth ughkarga a veu gorfassys.", "upload_error.limit": "Finweth ughkarga a veu gorfassys.",
"upload_error.poll": "Nyns yw gesys ughkarga restrennow gans sondyansow.", "upload_error.poll": "Nyns yw gesys ughkarga restrennow gans sondyansow.",
"upload_form.audio_description": "Deskrifewgh rag tus vodharek",
"upload_form.description": "Deskrifewgh rag tus dhallek",
"upload_form.edit": "Golegi", "upload_form.edit": "Golegi",
"upload_form.thumbnail": "Chanjya avenik",
"upload_form.video_description": "Deskrifa rag tus vodharek po dallek",
"upload_modal.analyzing_picture": "Ow tytratya skeusen…",
"upload_modal.apply": "Gweytha",
"upload_modal.choose_image": "Dewis aven",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Kilela tekst a skeusen",
"upload_modal.edit_media": "Golegi myski",
"upload_modal.hint": "Klykkyewgh po tenna'n kylgh war an gynwel dhe dhewis an poynt fogella neb a vydh pupprys gweladow yn pub avenik.",
"upload_modal.preparing_ocr": "Ow pareusi ANG…",
"upload_modal.preview_label": "Kynwel ({ratio})",
"upload_progress.label": "Owth ughkarga...", "upload_progress.label": "Owth ughkarga...",
"video.close": "Degea gwydhyow", "video.close": "Degea gwydhyow",
"video.download": "Iskarga restren", "video.download": "Iskarga restren",

View file

@ -240,9 +240,7 @@
"units.short.million": "{count} milionum", "units.short.million": "{count} milionum",
"units.short.thousand": "{count} millia", "units.short.thousand": "{count} millia",
"upload_button.label": "Imaginēs, vīdeō aut fīle audītūs adde", "upload_button.label": "Imaginēs, vīdeō aut fīle audītūs adde",
"upload_form.audio_description": "Describe for people who are hard of hearing",
"upload_form.edit": "Recolere", "upload_form.edit": "Recolere",
"upload_modal.description_placeholder": "A velox brunneis vulpes salit super piger canis",
"upload_progress.label": "Uploading…", "upload_progress.label": "Uploading…",
"video.mute": "Confutare soni" "video.mute": "Confutare soni"
} }

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