mirror of
https://iceshrimp.dev/blueb/Chuckya-fe-standalone.git
synced 2026-01-11 13:33:21 -08:00
Merge remote-tracking branch 'upstream/main'
This commit is contained in:
commit
4aa2f92bef
125 changed files with 706 additions and 243 deletions
|
|
@ -317,7 +317,7 @@ export function tenorSet(options) {
|
|||
|
||||
export function uploadCompose(files, alt = '') {
|
||||
return function (dispatch, getState) {
|
||||
const uploadLimit = 4;
|
||||
const uploadLimit = getState().getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments']);
|
||||
const media = getState().getIn(['compose', 'media_attachments']);
|
||||
const pending = getState().getIn(['compose', 'pending_media_attachments']);
|
||||
const progress = new Array(files.length).fill(0);
|
||||
|
|
@ -332,7 +332,7 @@ export function uploadCompose(files, alt = '') {
|
|||
dispatch(uploadComposeRequest());
|
||||
|
||||
for (const [i, f] of Array.from(files).entries()) {
|
||||
if (media.size + i > 3) break;
|
||||
if (media.size + i > (uploadLimit - 1)) break;
|
||||
|
||||
resizeImage(f).then(file => {
|
||||
const data = new FormData();
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
|
|||
return (
|
||||
<div className={classNames('account', { 'account--minimal': minimal })}>
|
||||
<div className='account__wrapper'>
|
||||
<Permalink key={account.get('id')} className='account__display-name' title={account.get('acct')} href={account.get('url')} to={`/@${account.get('acct')}`}>
|
||||
<Permalink key={account.get('id')} className='account__display-name' title={account.get('acct')} href={account.get('url')} to={`/@${account.get('acct')}`} data-hover-card-account={account.get('id')}>
|
||||
<div className='account__avatar-wrapper'>
|
||||
<Avatar account={account} size={size} />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ export const HoverCardController: React.FC = () => {
|
|||
useEffect(() => {
|
||||
let isScrolling = false;
|
||||
let currentAnchor: HTMLElement | null = null;
|
||||
let currentTitle: string | null = null;
|
||||
|
||||
const open = (target: HTMLElement) => {
|
||||
target.setAttribute('aria-describedby', 'hover-card');
|
||||
|
|
@ -75,6 +76,9 @@ export const HoverCardController: React.FC = () => {
|
|||
currentAnchor?.removeAttribute('aria-describedby');
|
||||
currentAnchor = target;
|
||||
|
||||
currentTitle = target.getAttribute('title');
|
||||
target.removeAttribute('title');
|
||||
|
||||
setEnterTimeout(() => {
|
||||
open(target);
|
||||
}, enterDelay);
|
||||
|
|
@ -90,11 +94,20 @@ export const HoverCardController: React.FC = () => {
|
|||
};
|
||||
|
||||
const handleMouseLeave = (e: MouseEvent) => {
|
||||
const { target } = e;
|
||||
|
||||
if (!currentAnchor) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.target === currentAnchor || e.target === cardRef.current) {
|
||||
if (
|
||||
currentTitle &&
|
||||
target instanceof HTMLElement &&
|
||||
target === currentAnchor
|
||||
)
|
||||
target.setAttribute('title', currentTitle);
|
||||
|
||||
if (target === currentAnchor || target === cardRef.current) {
|
||||
cancelEnterTimeout();
|
||||
|
||||
setLeaveTimeout(() => {
|
||||
|
|
|
|||
|
|
@ -311,7 +311,7 @@ class MediaGallery extends PureComponent {
|
|||
render () {
|
||||
const { media, lang, intl, sensitive, letterbox, fullwidth, defaultWidth, autoplay } = this.props;
|
||||
const { visible } = this.state;
|
||||
const size = media.take(4).size;
|
||||
const size = media.size;
|
||||
const uncached = media.every(attachment => attachment.get('type') === 'unknown');
|
||||
|
||||
const width = this.state.width || defaultWidth;
|
||||
|
|
@ -331,7 +331,7 @@ class MediaGallery extends PureComponent {
|
|||
if (this.isStandaloneEligible()) {
|
||||
children = <Item standalone autoplay={autoplay} onClick={this.handleClick} attachment={media.get(0)} lang={lang} displayWidth={width} visible={visible} />;
|
||||
} else {
|
||||
children = media.take(4).map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} lang={lang} size={size} letterbox={letterbox} displayWidth={width} visible={visible || uncached} />);
|
||||
children = media.map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} lang={lang} size={size} letterbox={letterbox} displayWidth={width} visible={visible || uncached} />);
|
||||
}
|
||||
|
||||
if (uncached) {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ const mapStateToProps = state => {
|
|||
const readyAttachmentsSize = state.getIn(['compose', 'media_attachments']).size ?? 0;
|
||||
const pendingAttachmentsSize = state.getIn(['compose', 'pending_media_attachments']).size ?? 0;
|
||||
const attachmentsSize = readyAttachmentsSize + pendingAttachmentsSize;
|
||||
const isOverLimit = attachmentsSize > 3;
|
||||
const isOverLimit = attachmentsSize > state.getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments'])-1;
|
||||
const hasVideoOrAudio = state.getIn(['compose', 'media_attachments']).some(m => ['video', 'audio'].includes(m.get('type')));
|
||||
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ export default class Card extends PureComponent {
|
|||
const showAuthor = !!card.getIn(['authors', 0, 'accountId']);
|
||||
|
||||
const description = (
|
||||
<div className='status-card__content'>
|
||||
<div className='status-card__content' dir='auto'>
|
||||
<span className='status-card__host'>
|
||||
<span lang={language}>{provider}</span>
|
||||
{card.get('published_at') && <> · <RelativeTimestamp timestamp={card.get('published_at')} /></>}
|
||||
|
|
|
|||
|
|
@ -11027,7 +11027,7 @@ noscript {
|
|||
gap: 4px;
|
||||
|
||||
dt {
|
||||
flex: 0 0 auto;
|
||||
flex: 0 1 auto;
|
||||
color: $dark-text-color;
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ export function submitComposeFail(error) {
|
|||
|
||||
export function uploadCompose(files) {
|
||||
return function (dispatch, getState) {
|
||||
const uploadLimit = 4;
|
||||
const uploadLimit = getState().getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments']);
|
||||
const media = getState().getIn(['compose', 'media_attachments']);
|
||||
const pending = getState().getIn(['compose', 'pending_media_attachments']);
|
||||
const progress = new Array(files.length).fill(0);
|
||||
|
|
@ -301,7 +301,7 @@ export function uploadCompose(files) {
|
|||
dispatch(uploadComposeRequest());
|
||||
|
||||
for (const [i, file] of Array.from(files).entries()) {
|
||||
if (media.size + i > 3) break;
|
||||
if (media.size + i > (uploadLimit - 1)) break;
|
||||
|
||||
const data = new FormData();
|
||||
data.append('file', file);
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
|
|||
return (
|
||||
<div className={classNames('account', { 'account--minimal': minimal })}>
|
||||
<div className='account__wrapper'>
|
||||
<Link key={account.get('id')} className='account__display-name' title={account.get('acct')} to={`/@${account.get('acct')}`}>
|
||||
<Link key={account.get('id')} className='account__display-name' title={account.get('acct')} to={`/@${account.get('acct')}`} data-hover-card-account={account.get('id')}>
|
||||
<div className='account__avatar-wrapper'>
|
||||
<Avatar account={account} size={size} />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ export const HoverCardController: React.FC = () => {
|
|||
useEffect(() => {
|
||||
let isScrolling = false;
|
||||
let currentAnchor: HTMLElement | null = null;
|
||||
let currentTitle: string | null = null;
|
||||
|
||||
const open = (target: HTMLElement) => {
|
||||
target.setAttribute('aria-describedby', 'hover-card');
|
||||
|
|
@ -75,6 +76,9 @@ export const HoverCardController: React.FC = () => {
|
|||
currentAnchor?.removeAttribute('aria-describedby');
|
||||
currentAnchor = target;
|
||||
|
||||
currentTitle = target.getAttribute('title');
|
||||
target.removeAttribute('title');
|
||||
|
||||
setEnterTimeout(() => {
|
||||
open(target);
|
||||
}, enterDelay);
|
||||
|
|
@ -90,11 +94,20 @@ export const HoverCardController: React.FC = () => {
|
|||
};
|
||||
|
||||
const handleMouseLeave = (e: MouseEvent) => {
|
||||
const { target } = e;
|
||||
|
||||
if (!currentAnchor) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.target === currentAnchor || e.target === cardRef.current) {
|
||||
if (
|
||||
currentTitle &&
|
||||
target instanceof HTMLElement &&
|
||||
target === currentAnchor
|
||||
)
|
||||
target.setAttribute('title', currentTitle);
|
||||
|
||||
if (target === currentAnchor || target === cardRef.current) {
|
||||
cancelEnterTimeout();
|
||||
|
||||
setLeaveTimeout(() => {
|
||||
|
|
|
|||
|
|
@ -305,13 +305,13 @@ class MediaGallery extends PureComponent {
|
|||
style.aspectRatio = '3 / 2';
|
||||
}
|
||||
|
||||
const size = media.take(4).size;
|
||||
const size = media.size;
|
||||
const uncached = media.every(attachment => attachment.get('type') === 'unknown');
|
||||
|
||||
if (this.isFullSizeEligible()) {
|
||||
children = <Item standalone autoplay={autoplay} onClick={this.handleClick} attachment={media.get(0)} lang={lang} displayWidth={width} visible={visible} />;
|
||||
} else {
|
||||
children = media.take(4).map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} lang={lang} size={size} displayWidth={width} visible={visible || uncached} />);
|
||||
children = media.map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} lang={lang} size={size} displayWidth={width} visible={visible || uncached} />);
|
||||
}
|
||||
|
||||
if (uncached) {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ const mapStateToProps = state => {
|
|||
const readyAttachmentsSize = state.getIn(['compose', 'media_attachments']).size ?? 0;
|
||||
const pendingAttachmentsSize = state.getIn(['compose', 'pending_media_attachments']).size ?? 0;
|
||||
const attachmentsSize = readyAttachmentsSize + pendingAttachmentsSize;
|
||||
const isOverLimit = attachmentsSize > 3;
|
||||
const isOverLimit = attachmentsSize > state.getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments'])-1;
|
||||
const hasVideoOrAudio = state.getIn(['compose', 'media_attachments']).some(m => ['video', 'audio'].includes(m.get('type')));
|
||||
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ export default class Card extends PureComponent {
|
|||
const showAuthor = !!card.getIn(['authors', 0, 'accountId']);
|
||||
|
||||
const description = (
|
||||
<div className='status-card__content'>
|
||||
<div className='status-card__content' dir='auto'>
|
||||
<span className='status-card__host'>
|
||||
<span lang={language}>{provider}</span>
|
||||
{card.get('published_at') && <> · <RelativeTimestamp timestamp={card.get('published_at')} /></>}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,9 @@
|
|||
"account.follow_back": "Последване взаимно",
|
||||
"account.followers": "Последователи",
|
||||
"account.followers.empty": "Още никой не следва потребителя.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} последовател} other {{counter} последователи}}",
|
||||
"account.following": "Последвано",
|
||||
"account.following_counter": "{count, plural, one {{counter} последван} other {{counter} последвани}}",
|
||||
"account.follows.empty": "Потребителят още никого не следва.",
|
||||
"account.go_to_profile": "Към профила",
|
||||
"account.hide_reblogs": "Скриване на подсилвания от @{name}",
|
||||
|
|
@ -61,6 +63,7 @@
|
|||
"account.requested_follow": "{name} поиска да ви последва",
|
||||
"account.share": "Споделяне на профила на @{name}",
|
||||
"account.show_reblogs": "Показване на подсилвания от @{name}",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} публикация} other {{counter} публикации}}",
|
||||
"account.unblock": "Отблокиране на @{name}",
|
||||
"account.unblock_domain": "Отблокиране на домейн {domain}",
|
||||
"account.unblock_short": "Отблокиране",
|
||||
|
|
|
|||
|
|
@ -411,6 +411,7 @@
|
|||
"limited_account_hint.action": "構わず表示する",
|
||||
"limited_account_hint.title": "このプロフィールは{domain}のモデレーターによって非表示にされています。",
|
||||
"link_preview.author": "{name}",
|
||||
"link_preview.more_from_author": "{name}さんの投稿をもっと読む",
|
||||
"lists.account.add": "リストに追加",
|
||||
"lists.account.remove": "リストから外す",
|
||||
"lists.delete": "リストを削除",
|
||||
|
|
@ -691,8 +692,11 @@
|
|||
"server_banner.about_active_users": "過去30日間にこのサーバーを使用している人 (月間アクティブユーザー)",
|
||||
"server_banner.active_users": "人のアクティブユーザー",
|
||||
"server_banner.administered_by": "管理者",
|
||||
"server_banner.is_one_of_many": "{domain} は、数々の独立したMastodonサーバーのうちのひとつです。サーバーに登録してFediverseのコミュニティに加わってみませんか。",
|
||||
"server_banner.server_stats": "サーバーの情報",
|
||||
"sign_in_banner.create_account": "アカウント作成",
|
||||
"sign_in_banner.follow_anyone": "連合内の誰でもフォローして投稿を時系列で見ることができます。アルゴリズム、広告、クリックベイトはありません。",
|
||||
"sign_in_banner.mastodon_is": "Mastodonに参加して、世界で起きていることを見つけよう。",
|
||||
"sign_in_banner.sign_in": "ログイン",
|
||||
"sign_in_banner.sso_redirect": "ログインまたは登録",
|
||||
"status.admin_account": "@{name}さんのモデレーション画面を開く",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
{
|
||||
"about.blocks": "Ulac agbur",
|
||||
"about.contact": "Anermis:",
|
||||
"about.disclaimer": "Mastodon d aseɣẓan ilelli, d aseɣẓan n uɣbalu yeldin, d tnezzut n Mastodon gGmbH.",
|
||||
"about.domain_blocks.preamble": "Maṣṭudun s umata yeḍmen-ak ad teẓreḍ agbur, ad tesdemreḍ akked yimseqdacen-nniḍen seg yal aqeddac deg fedivers. Ha-tent-an ɣur-k tsuraf i yellan deg uqeddac-agi.",
|
||||
"about.domain_blocks.silenced.title": "Ɣur-s talast",
|
||||
"about.domain_blocks.suspended.title": "Yeḥbes",
|
||||
"about.not_available": "Talɣut-a ur tettwabder ara deg uqeddac-a.",
|
||||
"about.powered_by": "Azeṭṭa inmetti yettwasɣelsen sɣur {mastodon}",
|
||||
"about.rules": "Ilugan n uqeddac",
|
||||
|
|
@ -166,6 +170,7 @@
|
|||
"dismissable_banner.explore_tags": "D wiyi i d ihacṭagen i d-yettawin tamyigawt deg web anmetti ass-a. Ihacṭagen i sseqdacen ugar n medden, εlayit d imezwura.",
|
||||
"domain_block_modal.block": "Sewḥel aqeddac",
|
||||
"domain_block_modal.they_cant_follow": "Yiwen ur yezmir ad k·m-id-yeḍfer seg uqeddac-a.",
|
||||
"domain_block_modal.title": "Sewḥel taɣult?",
|
||||
"domain_pill.activitypub_like_language": "ActivityPub am tutlayt yettmeslay Mastodon d izeḍwan inmettiyen nniḍen.",
|
||||
"domain_pill.server": "Aqeddac",
|
||||
"domain_pill.username": "Isem n useqdac",
|
||||
|
|
@ -214,6 +219,7 @@
|
|||
"filter_modal.added.review_and_configure_title": "Iɣewwaṛen n imzizdig",
|
||||
"filter_modal.added.settings_link": "asebter n yiɣewwaṛen",
|
||||
"filter_modal.added.short_explanation": "Tasuffeɣt-a tettwarna ɣer taggayt-a n yimsizdegen: {title}.",
|
||||
"filter_modal.added.title": "Yettwarna umsizdeg!",
|
||||
"filter_modal.select_filter.expired": "yemmut",
|
||||
"filter_modal.select_filter.prompt_new": "Taggayt tamaynutt : {name}",
|
||||
"filter_modal.select_filter.search": "Nadi neɣ snulfu-d",
|
||||
|
|
@ -224,9 +230,9 @@
|
|||
"firehose.remote": "Iqeddacen nniḍen",
|
||||
"follow_request.authorize": "Ssireg",
|
||||
"follow_request.reject": "Agi",
|
||||
"follow_suggestions.dismiss": "Ur ttɛawad ara ad t-id-sekneṭ",
|
||||
"follow_suggestions.dismiss": "Dayen ur t-id-skan ara",
|
||||
"follow_suggestions.view_all": "Wali-ten akk",
|
||||
"follow_suggestions.who_to_follow": "Menhu ara ḍefṛeḍ",
|
||||
"follow_suggestions.who_to_follow": "Ad tḍefreḍ?",
|
||||
"followed_tags": "Ihacṭagen yettwaḍfaren",
|
||||
"footer.about": "Ɣef",
|
||||
"footer.directory": "Akaram n imeɣna",
|
||||
|
|
@ -235,6 +241,7 @@
|
|||
"footer.keyboard_shortcuts": "Inegzumen n unasiw",
|
||||
"footer.privacy_policy": "Tasertit tabaḍnit",
|
||||
"footer.source_code": "Wali tangalt taɣbalut",
|
||||
"footer.status": "N tsuffeɣt",
|
||||
"generic.saved": "Yettwasekles",
|
||||
"getting_started.heading": "Bdu",
|
||||
"hashtag.column_header.tag_mode.all": "d {additional}",
|
||||
|
|
@ -313,11 +320,14 @@
|
|||
"lightbox.previous": "Ɣer deffir",
|
||||
"limited_account_hint.action": "Wali amaɣnu akken yebɣu yili",
|
||||
"link_preview.author": "S-ɣur {name}",
|
||||
"link_preview.more_from_author": "Ugar sɣur {name}",
|
||||
"link_preview.shares": "{count, plural, one {{counter} post} other {{counter} posts}}",
|
||||
"lists.account.add": "Rnu ɣer tebdart",
|
||||
"lists.account.remove": "Kkes seg tebdart",
|
||||
"lists.delete": "Kkes tabdart",
|
||||
"lists.edit": "Ẓreg tabdart",
|
||||
"lists.edit.submit": "Beddel azwel",
|
||||
"lists.exclusive": "Ffer tisuffaɣ-a seg ugejdan",
|
||||
"lists.new.create": "Rnu tabdart",
|
||||
"lists.new.title_placeholder": "Azwel amaynut n tebdart",
|
||||
"lists.replies_policy.followed": "Kra n useqdac i yettwaḍefren",
|
||||
|
|
@ -338,6 +348,7 @@
|
|||
"navigation_bar.bookmarks": "Ticraḍ",
|
||||
"navigation_bar.community_timeline": "Tasuddemt tadigant",
|
||||
"navigation_bar.compose": "Aru tajewwiqt tamaynut",
|
||||
"navigation_bar.direct": "Tibdarin tusligin",
|
||||
"navigation_bar.discover": "Ẓer",
|
||||
"navigation_bar.domain_blocks": "Tiɣula yeffren",
|
||||
"navigation_bar.explore": "Snirem",
|
||||
|
|
@ -357,9 +368,14 @@
|
|||
"navigation_bar.search": "Nadi",
|
||||
"navigation_bar.security": "Taɣellist",
|
||||
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
||||
"notification.admin.report": "Yemla-t-id {name} {target}",
|
||||
"notification.admin.sign_up": "Ijerred {name}",
|
||||
"notification.favourite": "{name} yesmenyaf addad-ik·im",
|
||||
"notification.follow": "iṭṭafar-ik·em-id {name}",
|
||||
"notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ",
|
||||
"notification.mention": "{name} yebder-ik-id",
|
||||
"notification.moderation-warning.learn_more": "Issin ugar",
|
||||
"notification.moderation_warning.action_suspend": "Yettwaseḥbes umiḍan-ik.",
|
||||
"notification.own_poll": "Tafrant-ik·im tfuk",
|
||||
"notification.poll": "Tfukk tefrant ideg tettekkaḍ",
|
||||
"notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen",
|
||||
|
|
@ -370,6 +386,7 @@
|
|||
"notification_requests.notifications_from": "Ilɣa sɣur {name}",
|
||||
"notifications.clear": "Sfeḍ tilɣa",
|
||||
"notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?",
|
||||
"notifications.column_settings.admin.report": "Ineqqisen imaynuten:",
|
||||
"notifications.column_settings.alert": "Tilɣa n tnarit",
|
||||
"notifications.column_settings.favourite": "Imenyafen:",
|
||||
"notifications.column_settings.filter_bar.advanced": "Sken-d akk taggayin",
|
||||
|
|
@ -384,6 +401,7 @@
|
|||
"notifications.column_settings.sound": "Rmed imesli",
|
||||
"notifications.column_settings.status": "Tisuffaɣ timaynutin :",
|
||||
"notifications.column_settings.unread_notifications.category": "Ilɣa ur nettwaɣra",
|
||||
"notifications.column_settings.update": "Iẓreg:",
|
||||
"notifications.filter.all": "Akk",
|
||||
"notifications.filter.boosts": "Seǧhed",
|
||||
"notifications.filter.favourites": "Imenyafen",
|
||||
|
|
@ -413,6 +431,7 @@
|
|||
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
|
||||
"onboarding.follows.title": "Ttwassnen deg Mastodon",
|
||||
"onboarding.profile.display_name": "Isem ara d-yettwaskanen",
|
||||
"onboarding.profile.display_name_hint": "Isem-ik·im ummid neɣ isem-ik·im n uqeṣṣer…",
|
||||
"onboarding.profile.note": "Tameddurt",
|
||||
"onboarding.profile.note_hint": "Tzemreḍ ad d-@tbedreḍ imdanen niḍen neɣ #ihacṭagen …",
|
||||
"onboarding.profile.save_and_continue": "Sekles, tkemmleḍ",
|
||||
|
|
@ -441,6 +460,7 @@
|
|||
"poll.total_votes": "{count, plural, one {# n udɣaṛ} other {# n yedɣaṛen}}",
|
||||
"poll.vote": "Dɣeṛ",
|
||||
"poll.voted": "Tdeɣṛeḍ ɣef tririt-ayi",
|
||||
"poll.votes": "{votes, plural, one {# n udɣaṛ} other {# n yedɣaṛen}}",
|
||||
"poll_button.add_poll": "Rnu asenqed",
|
||||
"poll_button.remove_poll": "Kkes asenqed",
|
||||
"privacy.change": "Seggem tabaḍnit n yizen",
|
||||
|
|
@ -465,9 +485,12 @@
|
|||
"relative_time.seconds": "{number}tas",
|
||||
"relative_time.today": "assa",
|
||||
"reply_indicator.cancel": "Sefsex",
|
||||
"reply_indicator.poll": "Afmiḍi",
|
||||
"report.block": "Sewḥel",
|
||||
"report.categories.legal": "Azerfan",
|
||||
"report.categories.other": "Tiyyaḍ",
|
||||
"report.categories.spam": "Aspam",
|
||||
"report.category.subtitle": "Fren amṣada akk ufrin",
|
||||
"report.category.title_account": "ameɣnu",
|
||||
"report.category.title_status": "tasuffeɣt",
|
||||
"report.close": "Immed",
|
||||
|
|
@ -476,13 +499,25 @@
|
|||
"report.next": "Uḍfiṛ",
|
||||
"report.placeholder": "Iwenniten-nniḍen",
|
||||
"report.reasons.dislike": "Ur t-ḥemmleɣ ara",
|
||||
"report.reasons.dislike_description": "D ayen akk ur bɣiɣ ara ad waliɣ",
|
||||
"report.reasons.other": "D ayen nniḍen",
|
||||
"report.reasons.other_description": "Ugur ur yemṣada ara akk d taggayin-nniḍen",
|
||||
"report.reasons.spam": "D aspam",
|
||||
"report.reasons.spam_description": "Yir iseɣwan, yir agman d tririyin i d-yettuɣalen",
|
||||
"report.reasons.violation": "Truẓi n yilugan n uqeddac",
|
||||
"report.reasons.violation_description": "Teẓriḍ y·tettruẓu kra n yilugan",
|
||||
"report.rules.subtitle": "Fren ayen akk yemṣadan",
|
||||
"report.rules.title": "Acu n yilugan i yettwarẓan?",
|
||||
"report.statuses.subtitle": "Fren ayen akk yemṣadan",
|
||||
"report.statuses.title": "Llant tsuffaɣ ara isdemren aneqqis-a?",
|
||||
"report.submit": "Azen",
|
||||
"report.target": "Mmel {target}",
|
||||
"report.thanks.take_action_actionable": "Ideg nekkni nessenqad tuttra-inek•inem, tzemreḍ ad tḥadreḍ mgal @{name}:",
|
||||
"report.thanks.title": "Ur tebɣiḍ ara ad twaliḍ aya?",
|
||||
"report.thanks.title_actionable": "Tanemmirt ɣef uneqqis, ad nwali deg waya.",
|
||||
"report.unfollow": "Seḥbes aḍfar n @{name}",
|
||||
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
|
||||
"report_notification.categories.legal": "Azerfan",
|
||||
"report_notification.categories.other": "Ayen nniḍen",
|
||||
"report_notification.categories.spam": "Aspam",
|
||||
"report_notification.open": "Ldi aneqqis",
|
||||
|
|
@ -497,6 +532,7 @@
|
|||
"search_popout.full_text_search_disabled_message": "Ur yelli ara deg {domain}.",
|
||||
"search_popout.language_code": "Tangalt ISO n tutlayt",
|
||||
"search_popout.options": "Iwellihen n unadi",
|
||||
"search_popout.quick_actions": "Tigawin tiruradin",
|
||||
"search_popout.recent": "Inadiyen ineggura",
|
||||
"search_popout.user": "amseqdac",
|
||||
"search_results.accounts": "Imeɣna",
|
||||
|
|
@ -505,7 +541,9 @@
|
|||
"search_results.see_all": "Wali-ten akk",
|
||||
"search_results.statuses": "Tisuffaɣ",
|
||||
"search_results.title": "Anadi ɣef {q}",
|
||||
"server_banner.active_users": "iseqdacen urmiden",
|
||||
"server_banner.administered_by": "Yettwadbel sɣur :",
|
||||
"server_banner.server_stats": "Tidaddanin n uqeddac:",
|
||||
"sign_in_banner.create_account": "Snulfu-d amiḍan",
|
||||
"sign_in_banner.sign_in": "Qqen",
|
||||
"sign_in_banner.sso_redirect": "Qqen neɣ jerred",
|
||||
|
|
@ -516,13 +554,20 @@
|
|||
"status.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen",
|
||||
"status.copy": "Nɣel assaɣ ɣer tasuffeɣt",
|
||||
"status.delete": "Kkes",
|
||||
"status.direct": "Bder-d @{name} weḥd-s",
|
||||
"status.direct_indicator": "Abdar uslig",
|
||||
"status.edit": "Ẓreg",
|
||||
"status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}",
|
||||
"status.embed": "Seddu",
|
||||
"status.favourite": "Amenyaf",
|
||||
"status.filter": "Sizdeg tassufeɣt-a",
|
||||
"status.filtered": "Yettwasizdeg",
|
||||
"status.hide": "Ffer tasuffeɣt",
|
||||
"status.history.created": "Yerna-t {name} {date}",
|
||||
"status.history.edited": "Ibeddel-it {name} {date}",
|
||||
"status.load_more": "Sali ugar",
|
||||
"status.media.open": "Sit i ulday",
|
||||
"status.media.show": "Sit i uskan",
|
||||
"status.media_hidden": "Amidya yettwaffer",
|
||||
"status.mention": "Bder-d @{name}",
|
||||
"status.more": "Ugar",
|
||||
|
|
@ -548,6 +593,7 @@
|
|||
"status.show_less_all": "Semẓi akk tisuffɣin",
|
||||
"status.show_more": "Ssken-d ugar",
|
||||
"status.show_more_all": "Ẓerr ugar lebda",
|
||||
"status.show_original": "Sken aɣbalu",
|
||||
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
|
||||
"status.translate": "Suqel",
|
||||
"status.translated_from_with": "Yettwasuqel seg {lang} s {provider}",
|
||||
|
|
@ -582,6 +628,7 @@
|
|||
"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",
|
||||
|
|
@ -589,6 +636,7 @@
|
|||
"upload_modal.preparing_ocr": "Aheyyi n OCR…",
|
||||
"upload_modal.preview_label": "Taskant ({ratio})",
|
||||
"upload_progress.label": "Asali iteddu...",
|
||||
"upload_progress.processing": "Asesfer…",
|
||||
"username.taken": "Yettwaṭṭef yisem-a n useqdac. Ɛreḍ wayeḍ",
|
||||
"video.close": "Mdel tabidyutt",
|
||||
"video.download": "Sidered afaylu",
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
"account.follow_back": "Sekot atpakaļ",
|
||||
"account.followers": "Sekotāji",
|
||||
"account.followers.empty": "Šim lietotājam vēl nav sekotāju.",
|
||||
"account.followers_counter": "{count, plural, zero {{count} sekotāju} one {{count} sekotājs} other {{count} sekotāji}}",
|
||||
"account.following": "Seko",
|
||||
"account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.",
|
||||
"account.go_to_profile": "Doties uz profilu",
|
||||
|
|
@ -312,9 +313,9 @@
|
|||
"home.column_settings.show_reblogs": "Rādīt pastiprinātos ierakstus",
|
||||
"home.column_settings.show_replies": "Rādīt atbildes",
|
||||
"home.hide_announcements": "Slēpt paziņojumus",
|
||||
"home.pending_critical_update.body": "Lūdzu, pēc iespējas ātrāk atjaunini savu Mastodon serveri!",
|
||||
"home.pending_critical_update.body": "Lūgums pēc iespējas drīzāk atjaunināt savu Mastodon serveri.",
|
||||
"home.pending_critical_update.link": "Skatīt jauninājumus",
|
||||
"home.pending_critical_update.title": "Pieejams kritisks drošības jauninājums!",
|
||||
"home.pending_critical_update.title": "Ir pieejams būtisks drošības atjauninājums.",
|
||||
"home.show_announcements": "Rādīt paziņojumus",
|
||||
"interaction_modal.description.favourite": "Ar Mastodon kontu tu vari pievienot šo ziņu izlasei, lai informētu autoru, ka to novērtē, un saglabātu to vēlākai lasīšanai.",
|
||||
"interaction_modal.description.follow": "Ar Mastodon kontu Tu vari sekot {name}, lai saņemtu lietotāja ierakstus savā mājas plūsmā.",
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
"about.contact": "Контакт:",
|
||||
"about.disclaimer": "Mastodon є задарьнов проґрамов из удпертым кодом тай торговов значков Mastodon gGmbH.",
|
||||
"about.domain_blocks.no_reason_available": "Причины не ясні",
|
||||
"about.domain_blocks.preamble": "Майбульш Mastodon поволят вам позирати контент тай комуніковати из хосновачами из другых федерованых серверув. Туй лиш уняткы учинені про сись конкретный сервер.",
|
||||
"about.domain_blocks.silenced.explanation": "Вы майбульш не будете видіти профілі тай контент из сього сервера, кидь не будете го самі глядати авадь пудпишете ся на нього.",
|
||||
"about.domain_blocks.silenced.title": "Обмежено",
|
||||
"about.domain_blocks.suspended.explanation": "Ниякі податкы из сього сервера не будут уброблені, усокочені ци поміняні, што чинит невозможнов хоть-яку інтеракцію ци зязок из хосновачами из сього сервера.",
|
||||
"about.domain_blocks.suspended.title": "Заблоковано",
|
||||
|
|
@ -20,6 +22,7 @@
|
|||
"account.browse_more_on_origin_server": "Позирайте бульше на ориґіналнум профілю",
|
||||
"account.cancel_follow_request": "Удмінити пудписку",
|
||||
"account.copy": "Зкопіровати удкликованя на профіл",
|
||||
"account.direct": "Пошептати @{name}",
|
||||
"account.disable_notifications": "Бульше не сповіщати ми коли {name} пише",
|
||||
"account.domain_blocked": "Домен заблокованый",
|
||||
"account.edit_profile": "Управити профіл",
|
||||
|
|
@ -39,8 +42,10 @@
|
|||
"account.joined_short": "Датум прикапчованя",
|
||||
"account.languages": "Поміняти убрані языкы",
|
||||
"account.link_verified_on": "Властность сього удкликованя было звірено {date}",
|
||||
"account.locked_info": "Сись профіл є замкнутый. Ґазда акаунта буде ручно провіряти тко го може зафоловити.",
|
||||
"account.media": "Медіа",
|
||||
"account.moved_to": "Хосновач {name} указав, ож новый профіл йим є:",
|
||||
"account.mention": "Спомянути @{name}",
|
||||
"account.moved_to": "Хосновач {name} указав, ож новый профіл му є:",
|
||||
"account.mute": "Стишити {name}",
|
||||
"account.mute_notifications_short": "Стишити голошіня",
|
||||
"account.mute_short": "Стишити",
|
||||
|
|
@ -60,9 +65,12 @@
|
|||
"account.unblock_short": "Розблоковати",
|
||||
"account.unendorse": "Не указовати на профілови",
|
||||
"account.unfollow": "Удписати ся",
|
||||
"account.unmute": "Указовати {name}",
|
||||
"account.unmute_notifications_short": "Указовати голошіня",
|
||||
"account.unmute_short": "Указовати",
|
||||
"account_note.placeholder": "Клопкніт обы додати примітку",
|
||||
"admin.dashboard.retention.average": "Середньоє",
|
||||
"admin.dashboard.retention.cohort": "Місяць прикапчованя",
|
||||
"admin.dashboard.retention.cohort_size": "Нові хосновачі",
|
||||
"admin.impact_report.instance_accounts": "Профілі из акаунтув, котрі ся удалят",
|
||||
"admin.impact_report.instance_followers": "Пудписникы, котрых стратят наші хосновачі",
|
||||
|
|
@ -70,11 +78,38 @@
|
|||
"admin.impact_report.title": "Вплыв цілком",
|
||||
"alert.rate_limited.message": "Попробуйте зась по {retry_time, time, medium}.",
|
||||
"alert.rate_limited.title": "Частота обмежена",
|
||||
"alert.unexpected.message": "Стала ся нечекана хыба.",
|
||||
"alert.unexpected.title": "Ийой!",
|
||||
"announcement.announcement": "Голошіня",
|
||||
"audio.hide": "Зпрятати звук",
|
||||
"block_modal.show_less": "Указати менше",
|
||||
"block_modal.show_more": "Указати бульше",
|
||||
"block_modal.they_cant_mention": "Они не можут вас споминати авадь слідовати.",
|
||||
"block_modal.they_cant_see_posts": "Они не можут видіти ваші публикації, тай наспак — вы йихні.",
|
||||
"block_modal.they_will_know": "Они видят, ож сут заблоковані.",
|
||||
"block_modal.title": "Заблоковати хосновача?",
|
||||
"block_modal.you_wont_see_mentions": "Не будете видіти публикації тай споминкы сього хосновача.",
|
||||
"boost_modal.combo": "Можете клынцнути {combo} другый раз обы сесе пропустити",
|
||||
"bundle_column_error.copy_stacktrace": "Укопіровати звіт за хыбу",
|
||||
"bundle_column_error.error.body": "Не годни сьме указати зажадану сторунку. Годно быти спозад хыбы у нашум сістемі, авадь проблемы зумісности бравзера.",
|
||||
"bundle_column_error.error.title": "Ийой!",
|
||||
"bundle_column_error.network.body": "Стала ся хыба як сьме пробовали напаровати сторунку. Годно ся йсе было стати спозад слабого споєня вашого інтернета, авадь сервера.",
|
||||
"bundle_column_error.network.title": "Хыба споєня",
|
||||
"bundle_column_error.retry": "Попробуйте зась",
|
||||
"bundle_column_error.return": "Вернути ся на головну",
|
||||
"bundle_column_error.routing.body": "Не можеме найти сяку сторунку. Бизувні сьте, ож URL у адресному шорикови є добрый?",
|
||||
"bundle_column_error.routing.title": "404",
|
||||
"bundle_modal_error.close": "Заперти",
|
||||
"bundle_modal_error.message": "Штось ся показило, закидь сьме ладовали сись компонент.",
|
||||
"bundle_modal_error.retry": "Попробовати зась",
|
||||
"closed_registrations.other_server_instructions": "Mastodon є децентралізованов платформов, можете си учинити профіл и на другому серверови тай комуніковати из сим."
|
||||
"closed_registrations.other_server_instructions": "Mastodon є децентралізованов платформов, можете си учинити профіл и на другому серверови тай комуніковати из сим.",
|
||||
"closed_registrations_modal.description": "Раз не мож учинити профіл на {domain}, айбо не мусите мати профіл ипен на серверови {domain} обы хосновати Mastodon.",
|
||||
"closed_registrations_modal.find_another_server": "Найти другый сервер",
|
||||
"column.about": "За сайт",
|
||||
"column.blocks": "Заблоковані хосновачі",
|
||||
"column.bookmarks": "Усокоченоє",
|
||||
"column.direct": "Шептаня",
|
||||
"column.directory": "Никати профілі",
|
||||
"column.domain_blocks": "Заблоковані домены",
|
||||
"column.favourites": "Убраноє"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
"account.featured_tags.last_status_never": "Немає дописів",
|
||||
"account.featured_tags.title": "{name} виділяє хештеґи",
|
||||
"account.follow": "Підписатися",
|
||||
"account.follow_back": "Підписатися взаємно",
|
||||
"account.follow_back": "Стежити також",
|
||||
"account.followers": "Підписники",
|
||||
"account.followers.empty": "Ніхто ще не підписаний на цього користувача.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} підписник} few {{counter} підписники} many {{counter} підписників} other {{counter} підписники}}",
|
||||
|
|
@ -217,18 +217,18 @@
|
|||
"domain_block_modal.title": "Заблокувати домен?",
|
||||
"domain_block_modal.you_will_lose_followers": "Усіх ваших підписників з цього сервера буде вилучено.",
|
||||
"domain_block_modal.you_wont_see_posts": "Ви не бачитимете дописів і сповіщень від користувачів на цьому сервері.",
|
||||
"domain_pill.activitypub_lets_connect": "Це дозволяє вам спілкуватися та взаємодіяти з людьми не лише на Mastodon, але й у різних соціальних додатках.",
|
||||
"domain_pill.activitypub_like_language": "ActivityPub - це як мова, якою Мастодонт розмовляє з іншими соціальними мережами.",
|
||||
"domain_pill.activitypub_lets_connect": "Це дозволяє вам спілкуватися та взаємодіяти з людьми не лише на Mastodon, але й у різних соціальних застосунках.",
|
||||
"domain_pill.activitypub_like_language": "ActivityPub - це як мова, якою Mastodon розмовляє з іншими соціальними мережами.",
|
||||
"domain_pill.server": "Сервер",
|
||||
"domain_pill.their_handle": "Їхня адреса:",
|
||||
"domain_pill.their_server": "Їхній цифровий дім, де живуть усі їхні пости.",
|
||||
"domain_pill.their_server": "Їхній цифровий дім, де живуть усі їхні дописи.",
|
||||
"domain_pill.their_username": "Їхній унікальний ідентифікатор на їхньому сервері. Ви можете знайти користувачів з однаковими іменами на різних серверах.",
|
||||
"domain_pill.username": "Ім'я користувача",
|
||||
"domain_pill.whats_in_a_handle": "Що є в адресі?",
|
||||
"domain_pill.who_they_are": "Оскільки дескриптори вказують, хто це і де він знаходиться, ви можете взаємодіяти з людьми через соціальну мережу платформ на основі <button>ActivityPub</button>.",
|
||||
"domain_pill.who_you_are": "Оскільки ваш нікнейм вказує, хто ви та де ви, люди можуть взаємодіяти з вами через соціальну мережу платформ на основі <button>ActivityPub</button>.",
|
||||
"domain_pill.your_handle": "Ваша адреса:",
|
||||
"domain_pill.your_server": "Ваш цифровий дім, де живуть усі ваші публікації. Не подобається цей? Перенесіть сервери в будь-який час і залучайте своїх підписників.",
|
||||
"domain_pill.your_server": "Ваш цифровий дім, де живуть усі ваші дописи. Не подобається цей? Перенесіть сервери в будь-який час і залучайте своїх підписників.",
|
||||
"domain_pill.your_username": "Ваш унікальний ідентифікатор на цьому сервері. Ви можете знайти користувачів з однаковими іменами на різних серверах.",
|
||||
"embed.instructions": "Вбудуйте цей допис до вашого вебсайту, скопіювавши код нижче.",
|
||||
"embed.preview": "Ось який вигляд це матиме:",
|
||||
|
|
@ -489,9 +489,9 @@
|
|||
"notification.reblog": "{name} поширює ваш допис",
|
||||
"notification.relationships_severance_event": "Втрачено з'єднання з {name}",
|
||||
"notification.relationships_severance_event.account_suspension": "Адміністратор з {from} призупинив {target}, що означає, що ви більше не можете отримувати оновлення від них або взаємодіяти з ними.",
|
||||
"notification.relationships_severance_event.domain_block": "Адміністратор з {from} заблокував {target}, включаючи {followersCount} ваших підписників і {{followingCount, plural, one {# account} other {# accounts}}, на які ви підписані.",
|
||||
"notification.relationships_severance_event.learn_more": "Дізнатися більше",
|
||||
"notification.relationships_severance_event.user_domain_block": "Ви заблокували {target}, видаливши {followersCount} ваших підписників і {followingCount, plural, one {# account} other {# accounts}}, за якими ви стежите.",
|
||||
"notification.relationships_severance_event.domain_block": "Адміністратор з {from} заблокував {target}, включаючи {followersCount} ваших підписників і {followingCount , plural, one {# обліковий запис} few {# облікові записи} many {# облікових записів} other {# обліковий запис}}, на які ви підписані.",
|
||||
"notification.relationships_severance_event.learn_more": "Докладніше",
|
||||
"notification.relationships_severance_event.user_domain_block": "Ви заблокували {target}, видаливши {followersCount} ваших підписників і {followingCount, plural, one {# обліковий запис} few {# облікові записи} many {# облікових записів} other {# обліковий запис}}, за якими ви стежите.",
|
||||
"notification.status": "{name} щойно дописує",
|
||||
"notification.update": "{name} змінює допис",
|
||||
"notification_requests.accept": "Прийняти",
|
||||
|
|
|
|||
|
|
@ -10453,7 +10453,7 @@ noscript {
|
|||
gap: 4px;
|
||||
|
||||
dt {
|
||||
flex: 0 0 auto;
|
||||
flex: 0 1 auto;
|
||||
color: $dark-text-color;
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue