Merge git://github.com/tootsuite/mastodon into tootsuite-master
1
Aptfile
@ -4,3 +4,4 @@ ffmpeg
|
|||||||
libxdamage1
|
libxdamage1
|
||||||
libxfixes3
|
libxfixes3
|
||||||
libicu-dev
|
libicu-dev
|
||||||
|
libidn11-dev
|
||||||
|
2
app.json
@ -2,7 +2,7 @@
|
|||||||
"name": "Mastodon",
|
"name": "Mastodon",
|
||||||
"description": "A GNU Social-compatible microblogging server",
|
"description": "A GNU Social-compatible microblogging server",
|
||||||
"repository": "https://github.com/tootsuite/mastodon",
|
"repository": "https://github.com/tootsuite/mastodon",
|
||||||
"logo": "https://github.com/tootsuite/mastodon/raw/master/app/assets/images/logo.png",
|
"logo": "https://github.com/tootsuite/mastodon/raw/master/app/javascript/images/logo.svg",
|
||||||
"env": {
|
"env": {
|
||||||
"HEROKU": {
|
"HEROKU": {
|
||||||
"description": "Leave this as true",
|
"description": "Leave this as true",
|
||||||
|
@ -20,9 +20,7 @@ class Api::V1::FavouritesController < Api::BaseController
|
|||||||
|
|
||||||
def cached_favourites
|
def cached_favourites
|
||||||
cache_collection(
|
cache_collection(
|
||||||
Status.where(
|
Status.reorder(nil).joins(:favourites).merge(results),
|
||||||
id: results.map(&:status_id)
|
|
||||||
),
|
|
||||||
Status
|
Status
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
@ -6,8 +6,8 @@ class Api::Web::PushSubscriptionsController < Api::BaseController
|
|||||||
before_action :require_user!
|
before_action :require_user!
|
||||||
|
|
||||||
def create
|
def create
|
||||||
params.require(:data).require(:endpoint)
|
params.require(:subscription).require(:endpoint)
|
||||||
params.require(:data).require(:keys).require([:auth, :p256dh])
|
params.require(:subscription).require(:keys).require([:auth, :p256dh])
|
||||||
|
|
||||||
active_session = current_session
|
active_session = current_session
|
||||||
|
|
||||||
@ -16,10 +16,23 @@ class Api::Web::PushSubscriptionsController < Api::BaseController
|
|||||||
active_session.update!(web_push_subscription: nil)
|
active_session.update!(web_push_subscription: nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Mobile devices do not support regular notifications, so we enable push notifications by default
|
||||||
|
alerts_enabled = active_session.detection.device.mobile? || active_session.detection.device.tablet?
|
||||||
|
|
||||||
|
data = {
|
||||||
|
alerts: {
|
||||||
|
follow: alerts_enabled,
|
||||||
|
favourite: alerts_enabled,
|
||||||
|
reblog: alerts_enabled,
|
||||||
|
mention: alerts_enabled,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
web_subscription = ::Web::PushSubscription.create!(
|
web_subscription = ::Web::PushSubscription.create!(
|
||||||
endpoint: params[:data][:endpoint],
|
endpoint: params[:subscription][:endpoint],
|
||||||
key_p256dh: params[:data][:keys][:p256dh],
|
key_p256dh: params[:subscription][:keys][:p256dh],
|
||||||
key_auth: params[:data][:keys][:auth]
|
key_auth: params[:subscription][:keys][:auth],
|
||||||
|
data: data
|
||||||
)
|
)
|
||||||
|
|
||||||
active_session.update!(web_push_subscription: web_subscription)
|
active_session.update!(web_push_subscription: web_subscription)
|
||||||
|
Before Width: | Height: | Size: 258 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 7.6 KiB |
@ -1 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" height="1000" width="1000"><path d="M500 0a500 500 0 0 0-353.553 146.447 500 500 0 1 0 707.106 707.106A500 500 0 0 0 500 0zm-.059 280.05h107.12c-19.071 13.424-26.187 51.016-27.12 73.843V562.05c0 44.32-35.68 80-80 80s-80-35.68-80-80v-202c0-44.32 35.68-80 80-80zm-.441 52c-15.464 0-28 12.537-28 28 0 15.465 12.536 28 28 28s28-12.535 28-28c0-15.463-12.536-28-28-28zm-279.059 7.9c44.32 0 80 35.68 80 80v206.157c.933 22.827 8.049 60.42 27.12 73.842H220.44c-44.32 0-80-35.68-80-80v-200c0-44.32 35.68-80 80-80zm559.12 0c44.32 0 80 35.68 80 80v200c0 44.32-35.68 80-80 80H672.44c19.071-13.424 26.187-51.016 27.12-73.843V419.95c0-44.32 35.68-80 80-80zM220 392c-15.464 0-28 12.536-28 28s12.536 28 28 28 28-12.536 28-28-12.536-28-28-28zm560 0c-15.464 0-28 12.536-28 28s12.536 28 28 28 28-12.536 28-28-12.536-28-28-28zm-280.5 40.05c-15.464 0-28 12.537-28 28 0 15.465 12.536 28 28 28s28-12.535 28-28c0-15.463-12.536-28-28-28zM220 491.95c-15.464 0-28 12.535-28 28 0 15.463 12.536 28 28 28s28-12.537 28-28c0-15.465-12.536-28-28-28zm560 0c-15.464 0-28 12.535-28 28 0 15.463 12.536 28 28 28s28-12.537 28-28c0-15.465-12.536-28-28-28zM499.5 532c-15.464 0-28 12.536-28 28s12.536 28 28 28 28-12.536 28-28-12.536-28-28-28zM220 591.95c-15.464 0-28 12.535-28 28 0 15.463 12.536 28 28 28s28-12.537 28-28c0-15.465-12.536-28-28-28zm560 0c-15.464 0-28 12.535-28 28 0 15.463 12.536 28 28 28s28-12.537 28-28c0-15.465-12.536-28-28-28z" fill="#fff"/></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" width="61.076954mm" height="65.47831mm" viewBox="0 0 216.4144 232.00976"><path d="M211.80734 139.0875c-3.18125 16.36625-28.4925 34.2775-57.5625 37.74875-15.15875 1.80875-30.08375 3.47125-45.99875 2.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125 0 2.53375.15625 4.94625.46875 7.2025 3.38375 25.68625 25.47 27.225 46.39125 27.9425 21.11625.7225 39.91875-5.20625 39.91875-5.20625l.8675 19.09s-14.77 7.93125-41.08125 9.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234 213.82 1.40609 165.31125.20859 116.09125c-.365-14.61375-.14-28.39375-.14-39.91875 0-50.33 32.97625-65.0825 32.97625-65.0825C49.67234 3.45375 78.20359.2425 107.86484 0h.72875c29.66125.2425 58.21125 3.45375 74.8375 11.09 0 0 32.975 14.7525 32.975 65.0825 0 0 .41375 37.13375-4.59875 62.915" fill="#3088d4"/><path d="M177.50984 80.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025 0-17.4175 7.5075-17.4175 22.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375 0-15.74 6.32875-15.74 18.7975v59.15H38.90484V80.077c0-12.455 3.17125-22.3525 9.54125-29.675 6.56875-7.3225 15.17125-11.07625 25.85-11.07625 12.355 0 21.71125 4.74875 27.8975 14.2475l6.01375 10.08125 6.015-10.08125c6.185-9.49875 15.54125-14.2475 27.8975-14.2475 10.6775 0 19.28 3.75375 25.85 11.07625 6.36875 7.3225 9.54 17.22 9.54 29.675" fill="#fff"/></svg>
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
1
app/javascript/images/logo_alt.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="61.077141mm" height="65.47831mm" viewBox="0 0 216.41507 232.00976"><path d="M211.80683 139.0875c-3.1825 16.36625-28.4925 34.2775-57.5625 37.74875-15.16 1.80875-30.0825 3.47125-45.99875 2.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125 0 2.53375.15625 4.94625.46875 7.2025 3.38375 25.68625 25.47 27.225 46.3925 27.9425 21.115.7225 39.91625-5.20625 39.91625-5.20625l.86875 19.09s-14.77 7.93125-41.08125 9.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23183 213.82 1.40558 165.31125.20808 116.09125c-.36375-14.61375-.14-28.39375-.14-39.91875 0-50.33 32.97625-65.0825 32.97625-65.0825C49.67058 3.45375 78.20308.2425 107.86433 0h.72875c29.66125.2425 58.21125 3.45375 74.8375 11.09 0 0 32.97625 14.7525 32.97625 65.0825 0 0 .4125 37.13375-4.6 62.915" fill="#3088d4"/><path d="M65.68743 96.45938c0 9.01375-7.3075 16.32125-16.3225 16.32125-9.01375 0-16.32-7.3075-16.32-16.32125 0-9.01375 7.30625-16.3225 16.32-16.3225 9.015 0 16.3225 7.30875 16.3225 16.3225M124.52893 96.45938c0 9.01375-7.30875 16.32125-16.3225 16.32125-9.01375 0-16.32125-7.3075-16.32125-16.32125 0-9.01375 7.3075-16.3225 16.32125-16.3225 9.01375 0 16.3225 7.30875 16.3225 16.3225M183.36933 96.45938c0 9.01375-7.3075 16.32125-16.32125 16.32125-9.01375 0-16.32125-7.3075-16.32125-16.32125 0-9.01375 7.3075-16.3225 16.32125-16.3225 9.01375 0 16.32125 7.30875 16.32125 16.3225" fill="#fff"/></svg>
|
After Width: | Height: | Size: 1.4 KiB |
1
app/javascript/images/logo_full.svg
Normal file
After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 131 KiB |
@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
import detectPassiveEvents from 'detect-passive-events';
|
||||||
import scrollTop from '../scroll';
|
import scrollTop from '../scroll';
|
||||||
|
|
||||||
export default class Column extends React.PureComponent {
|
export default class Column extends React.PureComponent {
|
||||||
@ -30,16 +31,19 @@ export default class Column extends React.PureComponent {
|
|||||||
this.node = c;
|
this.node = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentDidMount () {
|
||||||
|
this.node.addEventListener('wheel', this.handleWheel, detectPassiveEvents ? { passive: true } : false);
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount () {
|
||||||
|
this.node.removeEventListener('wheel', this.handleWheel);
|
||||||
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { children } = this.props;
|
const { children } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div role='region' className='column' ref={this.setRef}>
|
||||||
role='region'
|
|
||||||
className='column'
|
|
||||||
ref={this.setRef}
|
|
||||||
onWheel={this.handleWheel}
|
|
||||||
>
|
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -3,6 +3,7 @@ import { FormattedMessage } from 'react-intl';
|
|||||||
|
|
||||||
const LoadingIndicator = () => (
|
const LoadingIndicator = () => (
|
||||||
<div className='loading-indicator'>
|
<div className='loading-indicator'>
|
||||||
|
<div className='loading-indicator__figure' />
|
||||||
<FormattedMessage id='loading_indicator.label' defaultMessage='Loading...' />
|
<FormattedMessage id='loading_indicator.label' defaultMessage='Loading...' />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -15,6 +15,7 @@ const messages = defineMessages({
|
|||||||
mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' },
|
mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' },
|
||||||
block: { id: 'account.block', defaultMessage: 'Block @{name}' },
|
block: { id: 'account.block', defaultMessage: 'Block @{name}' },
|
||||||
reply: { id: 'status.reply', defaultMessage: 'Reply' },
|
reply: { id: 'status.reply', defaultMessage: 'Reply' },
|
||||||
|
share: { id: 'status.share', defaultMessage: 'Share' },
|
||||||
replyAll: { id: 'status.replyAll', defaultMessage: 'Reply to thread' },
|
replyAll: { id: 'status.replyAll', defaultMessage: 'Reply to thread' },
|
||||||
reblog: { id: 'status.reblog', defaultMessage: 'Boost' },
|
reblog: { id: 'status.reblog', defaultMessage: 'Boost' },
|
||||||
cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' },
|
cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' },
|
||||||
@ -60,6 +61,13 @@ export default class StatusActionBar extends ImmutablePureComponent {
|
|||||||
this.props.onReply(this.props.status, this.context.router.history);
|
this.props.onReply(this.props.status, this.context.router.history);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleShareClick = () => {
|
||||||
|
navigator.share({
|
||||||
|
text: this.props.status.get('search_index'),
|
||||||
|
url: this.props.status.get('url'),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
handleFavouriteClick = () => {
|
handleFavouriteClick = () => {
|
||||||
this.props.onFavourite(this.props.status);
|
this.props.onFavourite(this.props.status);
|
||||||
}
|
}
|
||||||
@ -139,11 +147,16 @@ export default class StatusActionBar extends ImmutablePureComponent {
|
|||||||
replyTitle = intl.formatMessage(messages.replyAll);
|
replyTitle = intl.formatMessage(messages.replyAll);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && (
|
||||||
|
<IconButton className='status__action-bar-button' title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShareClick} />
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='status__action-bar'>
|
<div className='status__action-bar'>
|
||||||
<IconButton className='status__action-bar-button' disabled={anonymousAccess} title={replyTitle} icon={replyIcon} onClick={this.handleReplyClick} />
|
<IconButton className='status__action-bar-button' disabled={anonymousAccess} title={replyTitle} icon={replyIcon} onClick={this.handleReplyClick} />
|
||||||
<IconButton className='status__action-bar-button' disabled={anonymousAccess || reblogDisabled} active={status.get('reblogged')} title={reblogDisabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} />
|
<IconButton className='status__action-bar-button' disabled={anonymousAccess || reblogDisabled} active={status.get('reblogged')} title={reblogDisabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} />
|
||||||
<IconButton className='status__action-bar-button star-icon' disabled={anonymousAccess} animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />
|
<IconButton className='status__action-bar-button star-icon' disabled={anonymousAccess} animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />
|
||||||
|
{shareButton}
|
||||||
|
|
||||||
<div className='status__action-bar-dropdown'>
|
<div className='status__action-bar-dropdown'>
|
||||||
<DropdownMenu disabled={anonymousAccess} items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel='More' />
|
<DropdownMenu disabled={anonymousAccess} items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel='More' />
|
||||||
|
@ -31,6 +31,7 @@ export default class StatusList extends ImmutablePureComponent {
|
|||||||
intersectionObserverWrapper = new IntersectionObserverWrapper();
|
intersectionObserverWrapper = new IntersectionObserverWrapper();
|
||||||
|
|
||||||
handleScroll = debounce(() => {
|
handleScroll = debounce(() => {
|
||||||
|
if (this.node) {
|
||||||
const { scrollTop, scrollHeight, clientHeight } = this.node;
|
const { scrollTop, scrollHeight, clientHeight } = this.node;
|
||||||
const offset = scrollHeight - scrollTop - clientHeight;
|
const offset = scrollHeight - scrollTop - clientHeight;
|
||||||
this._oldScrollPosition = scrollHeight - scrollTop;
|
this._oldScrollPosition = scrollHeight - scrollTop;
|
||||||
@ -42,6 +43,7 @@ export default class StatusList extends ImmutablePureComponent {
|
|||||||
} else if (this.props.onScroll) {
|
} else if (this.props.onScroll) {
|
||||||
this.props.onScroll();
|
this.props.onScroll();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}, 200, {
|
}, 200, {
|
||||||
trailing: true,
|
trailing: true,
|
||||||
});
|
});
|
||||||
|
@ -16,7 +16,6 @@ const messages = defineMessages({
|
|||||||
follow: { id: 'account.follow', defaultMessage: 'Follow' },
|
follow: { id: 'account.follow', defaultMessage: 'Follow' },
|
||||||
report: { id: 'account.report', defaultMessage: 'Report @{name}' },
|
report: { id: 'account.report', defaultMessage: 'Report @{name}' },
|
||||||
media: { id: 'account.media', defaultMessage: 'Media' },
|
media: { id: 'account.media', defaultMessage: 'Media' },
|
||||||
disclaimer: { id: 'account.disclaimer', defaultMessage: 'This user is from another instance. This number may be larger.' },
|
|
||||||
blockDomain: { id: 'account.block_domain', defaultMessage: 'Hide everything from {domain}' },
|
blockDomain: { id: 'account.block_domain', defaultMessage: 'Hide everything from {domain}' },
|
||||||
unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' },
|
unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' },
|
||||||
});
|
});
|
||||||
@ -68,7 +67,19 @@ export default class ActionBar extends React.PureComponent {
|
|||||||
|
|
||||||
if (account.get('acct') !== account.get('username')) {
|
if (account.get('acct') !== account.get('username')) {
|
||||||
const domain = account.get('acct').split('@')[1];
|
const domain = account.get('acct').split('@')[1];
|
||||||
extraInfo = <abbr title={intl.formatMessage(messages.disclaimer)}>*</abbr>;
|
|
||||||
|
extraInfo = (
|
||||||
|
<div className='account__disclaimer'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='account.disclaimer_full'
|
||||||
|
defaultMessage="Information below may reflect the user's profile incompletely."
|
||||||
|
/>
|
||||||
|
{' '}
|
||||||
|
<a target='_blank' rel='noopener' href={account.get('url')}>
|
||||||
|
<FormattedMessage id='account.view_full_profile' defaultMessage='View full profile' />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
menu.push(null);
|
menu.push(null);
|
||||||
|
|
||||||
@ -80,6 +91,9 @@ export default class ActionBar extends React.PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
<div>
|
||||||
|
{extraInfo}
|
||||||
|
|
||||||
<div className='account__action-bar'>
|
<div className='account__action-bar'>
|
||||||
<div className='account__action-bar-dropdown'>
|
<div className='account__action-bar-dropdown'>
|
||||||
<DropdownMenu items={menu} icon='bars' size={24} direction='right' />
|
<DropdownMenu items={menu} icon='bars' size={24} direction='right' />
|
||||||
@ -88,20 +102,21 @@ export default class ActionBar extends React.PureComponent {
|
|||||||
<div className='account__action-bar-links'>
|
<div className='account__action-bar-links'>
|
||||||
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}`}>
|
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}`}>
|
||||||
<span><FormattedMessage id='account.posts' defaultMessage='Posts' /></span>
|
<span><FormattedMessage id='account.posts' defaultMessage='Posts' /></span>
|
||||||
<strong><FormattedNumber value={account.get('statuses_count')} /> {extraInfo}</strong>
|
<strong><FormattedNumber value={account.get('statuses_count')} /></strong>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/following`}>
|
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/following`}>
|
||||||
<span><FormattedMessage id='account.follows' defaultMessage='Follows' /></span>
|
<span><FormattedMessage id='account.follows' defaultMessage='Follows' /></span>
|
||||||
<strong><FormattedNumber value={account.get('following_count')} /> {extraInfo}</strong>
|
<strong><FormattedNumber value={account.get('following_count')} /></strong>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/followers`}>
|
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/followers`}>
|
||||||
<span><FormattedMessage id='account.followers' defaultMessage='Followers' /></span>
|
<span><FormattedMessage id='account.followers' defaultMessage='Followers' /></span>
|
||||||
<strong><FormattedNumber value={account.get('followers_count')} /> {extraInfo}</strong>
|
<strong><FormattedNumber value={account.get('followers_count')} /></strong>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,13 +16,14 @@ import SensitiveButtonContainer from '../containers/sensitive_button_container';
|
|||||||
import EmojiPickerDropdown from './emoji_picker_dropdown';
|
import EmojiPickerDropdown from './emoji_picker_dropdown';
|
||||||
import UploadFormContainer from '../containers/upload_form_container';
|
import UploadFormContainer from '../containers/upload_form_container';
|
||||||
import WarningContainer from '../containers/warning_container';
|
import WarningContainer from '../containers/warning_container';
|
||||||
|
import { isMobile } from '../../../is_mobile';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
import { length } from 'stringz';
|
import { length } from 'stringz';
|
||||||
import { isMobile } from '../../../is_mobile';
|
import { isMobile } from '../../../is_mobile';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
placeholder: { id: 'compose_form.placeholder', defaultMessage: 'What is on your mind?' },
|
placeholder: { id: 'compose_form.placeholder', defaultMessage: 'What is on your mind?' },
|
||||||
spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Content warning' },
|
spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Write your warning here' },
|
||||||
publish: { id: 'compose_form.publish', defaultMessage: 'Toot' },
|
publish: { id: 'compose_form.publish', defaultMessage: 'Toot' },
|
||||||
publishLoud: { id: 'compose_form.publish_loud', defaultMessage: '{publish}!' },
|
publishLoud: { id: 'compose_form.publish_loud', defaultMessage: '{publish}!' },
|
||||||
});
|
});
|
||||||
|
@ -52,14 +52,8 @@ class Bundle extends React.Component {
|
|||||||
load = (props) => {
|
load = (props) => {
|
||||||
const { fetchComponent, onFetch, onFetchSuccess, onFetchFail, renderDelay } = props || this.props;
|
const { fetchComponent, onFetch, onFetchSuccess, onFetchFail, renderDelay } = props || this.props;
|
||||||
|
|
||||||
this.setState({ mod: undefined });
|
|
||||||
onFetch();
|
onFetch();
|
||||||
|
|
||||||
if (renderDelay !== 0) {
|
|
||||||
this.timestamp = new Date();
|
|
||||||
this.timeout = setTimeout(() => this.setState({ forceRender: true }), renderDelay);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Bundle.cache[fetchComponent.name]) {
|
if (Bundle.cache[fetchComponent.name]) {
|
||||||
const mod = Bundle.cache[fetchComponent.name];
|
const mod = Bundle.cache[fetchComponent.name];
|
||||||
|
|
||||||
@ -68,6 +62,13 @@ class Bundle extends React.Component {
|
|||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.setState({ mod: undefined });
|
||||||
|
|
||||||
|
if (renderDelay !== 0) {
|
||||||
|
this.timestamp = new Date();
|
||||||
|
this.timeout = setTimeout(() => this.setState({ forceRender: true }), renderDelay);
|
||||||
|
}
|
||||||
|
|
||||||
return fetchComponent()
|
return fetchComponent()
|
||||||
.then((mod) => {
|
.then((mod) => {
|
||||||
Bundle.cache[fetchComponent.name] = mod;
|
Bundle.cache[fetchComponent.name] = mod;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
import { injectIntl } from 'react-intl';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
|
||||||
@ -21,6 +22,7 @@ const componentMap = {
|
|||||||
'FAVOURITES': FavouritedStatuses,
|
'FAVOURITES': FavouritedStatuses,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@injectIntl
|
||||||
export default class ColumnsArea extends ImmutablePureComponent {
|
export default class ColumnsArea extends ImmutablePureComponent {
|
||||||
|
|
||||||
static contextTypes = {
|
static contextTypes = {
|
||||||
@ -28,6 +30,7 @@ export default class ColumnsArea extends ImmutablePureComponent {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
|
intl: PropTypes.object.isRequired,
|
||||||
columns: ImmutablePropTypes.list.isRequired,
|
columns: ImmutablePropTypes.list.isRequired,
|
||||||
singleColumn: PropTypes.bool,
|
singleColumn: PropTypes.bool,
|
||||||
children: PropTypes.node,
|
children: PropTypes.node,
|
||||||
@ -64,8 +67,8 @@ export default class ColumnsArea extends ImmutablePureComponent {
|
|||||||
|
|
||||||
renderView = (link, index) => {
|
renderView = (link, index) => {
|
||||||
const columnIndex = getIndex(this.context.router.history.location.pathname);
|
const columnIndex = getIndex(this.context.router.history.location.pathname);
|
||||||
const title = link.props.children[1] && React.cloneElement(link.props.children[1]);
|
const title = this.props.intl.formatMessage({ id: link.props['data-preview-title-id'] });
|
||||||
const icon = (link.props.children[0] || link.props.children).props.className.split(' ')[2].split('-')[1];
|
const icon = link.props['data-preview-icon'];
|
||||||
|
|
||||||
const view = (index === columnIndex) ?
|
const view = (index === columnIndex) ?
|
||||||
React.cloneElement(this.props.children) :
|
React.cloneElement(this.props.children) :
|
||||||
|
@ -3,14 +3,14 @@ import NavLink from 'react-router-dom/NavLink';
|
|||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
export const links = [
|
export const links = [
|
||||||
<NavLink className='tabs-bar__link primary' activeClassName='active' to='/statuses/new'><i className='fa fa-fw fa-pencil' /><FormattedMessage id='tabs_bar.compose' defaultMessage='Compose' /></NavLink>,
|
<NavLink className='tabs-bar__link primary' activeClassName='active' to='/statuses/new' data-preview-title-id='tabs_bar.compose' data-preview-icon='pencil' ><i className='fa fa-fw fa-pencil' /><FormattedMessage id='tabs_bar.compose' defaultMessage='Compose' /></NavLink>,
|
||||||
<NavLink className='tabs-bar__link primary' activeClassName='active' to='/timelines/home'><i className='fa fa-fw fa-home' /><FormattedMessage id='tabs_bar.home' defaultMessage='Home' /></NavLink>,
|
<NavLink className='tabs-bar__link primary' activeClassName='active' to='/timelines/home' data-preview-title-id='column.home' data-preview-icon='home' ><i className='fa fa-fw fa-home' /><FormattedMessage id='tabs_bar.home' defaultMessage='Home' /></NavLink>,
|
||||||
<NavLink className='tabs-bar__link primary' activeClassName='active' to='/notifications'><i className='fa fa-fw fa-bell' /><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></NavLink>,
|
<NavLink className='tabs-bar__link primary' activeClassName='active' to='/notifications' data-preview-title-id='column.notifications' data-preview-icon='bell' ><i className='fa fa-fw fa-bell' /><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></NavLink>,
|
||||||
|
|
||||||
<NavLink className='tabs-bar__link secondary' activeClassName='active' to='/timelines/public/local'><i className='fa fa-fw fa-users' /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>,
|
<NavLink className='tabs-bar__link secondary' activeClassName='active' to='/timelines/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><i className='fa fa-fw fa-users' /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>,
|
||||||
<NavLink className='tabs-bar__link secondary' activeClassName='active' exact to='/timelines/public'><i className='fa fa-fw fa-globe' /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>,
|
<NavLink className='tabs-bar__link secondary' activeClassName='active' exact to='/timelines/public' data-preview-title-id='column.public' data-preview-icon='globe' ><i className='fa fa-fw fa-globe' /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>,
|
||||||
|
|
||||||
<NavLink className='tabs-bar__link primary' activeClassName='active' style={{ flexGrow: '0', flexBasis: '30px' }} to='/getting-started'><i className='fa fa-fw fa-asterisk' /></NavLink>,
|
<NavLink className='tabs-bar__link primary' activeClassName='active' style={{ flexGrow: '0', flexBasis: '30px' }} to='/getting-started' data-preview-title-id='tabs_bar.federated_timeline' data-preview-icon='asterisk' ><i className='fa fa-fw fa-asterisk' /></NavLink>,
|
||||||
];
|
];
|
||||||
|
|
||||||
export function getIndex (path) {
|
export function getIndex (path) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "حظر @{name}",
|
"account.block": "حظر @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "هذا المستخدم من مثيل خادم آخر. قد يكون هذا الرقم أكبر.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "تعديل الملف الشخصي",
|
"account.edit_profile": "تعديل الملف الشخصي",
|
||||||
"account.follow": "تابِع",
|
"account.follow": "تابِع",
|
||||||
"account.followers": "المتابعون",
|
"account.followers": "المتابعون",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "إلغاء المتابعة",
|
"account.unfollow": "إلغاء المتابعة",
|
||||||
"account.unmute": "إلغاء الكتم عن @{name}",
|
"account.unmute": "إلغاء الكتم عن @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "يمكنك ضغط {combo} لتخطّي هذه في المرّة القادمة",
|
"boost_modal.combo": "يمكنك ضغط {combo} لتخطّي هذه في المرّة القادمة",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Блокирай",
|
"account.block": "Блокирай",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "This user is from another instance. This number may be larger.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Редактирай профила си",
|
"account.edit_profile": "Редактирай профила си",
|
||||||
"account.follow": "Последвай",
|
"account.follow": "Последвай",
|
||||||
"account.followers": "Последователи",
|
"account.followers": "Последователи",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Не следвай",
|
"account.unfollow": "Не следвай",
|
||||||
"account.unmute": "Unmute @{name}",
|
"account.unmute": "Unmute @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Bloquejar @{name}",
|
"account.block": "Bloquejar @{name}",
|
||||||
"account.block_domain": "Amagar tot de {domain}",
|
"account.block_domain": "Amagar tot de {domain}",
|
||||||
"account.disclaimer": "Aquest usuari és d'un altra instància. Aquest número podria ser més gran.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Editar perfil",
|
"account.edit_profile": "Editar perfil",
|
||||||
"account.follow": "Seguir",
|
"account.follow": "Seguir",
|
||||||
"account.followers": "Seguidors",
|
"account.followers": "Seguidors",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Mostra {domain}",
|
"account.unblock_domain": "Mostra {domain}",
|
||||||
"account.unfollow": "Deixar de seguir",
|
"account.unfollow": "Deixar de seguir",
|
||||||
"account.unmute": "Treure silenci de @{name}",
|
"account.unmute": "Treure silenci de @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Pots premer {combo} per saltar-te això el proper cop",
|
"boost_modal.combo": "Pots premer {combo} per saltar-te això el proper cop",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "@{name} blocken",
|
"account.block": "@{name} blocken",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "Dieser Benutzer ist von einer anderen Instanz. Diese Zahl könnte größer sein.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Profil bearbeiten",
|
"account.edit_profile": "Profil bearbeiten",
|
||||||
"account.follow": "Folgen",
|
"account.follow": "Folgen",
|
||||||
"account.followers": "Folgende",
|
"account.followers": "Folgende",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Entfolgen",
|
"account.unfollow": "Entfolgen",
|
||||||
"account.unmute": "@{name} nicht mehr stummschalten",
|
"account.unmute": "@{name} nicht mehr stummschalten",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Du kannst {combo} drücken, um dies beim nächsten Mal zu überspringen",
|
"boost_modal.combo": "Du kannst {combo} drücken, um dies beim nächsten Mal zu überspringen",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -358,10 +358,6 @@
|
|||||||
"defaultMessage": "Media",
|
"defaultMessage": "Media",
|
||||||
"id": "account.media"
|
"id": "account.media"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"defaultMessage": "This user is from another instance. This number may be larger.",
|
|
||||||
"id": "account.disclaimer"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"defaultMessage": "Hide everything from {domain}",
|
"defaultMessage": "Hide everything from {domain}",
|
||||||
"id": "account.block_domain"
|
"id": "account.block_domain"
|
||||||
@ -370,6 +366,14 @@
|
|||||||
"defaultMessage": "Unhide {domain}",
|
"defaultMessage": "Unhide {domain}",
|
||||||
"id": "account.unblock_domain"
|
"id": "account.unblock_domain"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"defaultMessage": "Information below may reflect the user's profile incompletely.",
|
||||||
|
"id": "account.disclaimer_full"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"defaultMessage": "View full profile",
|
||||||
|
"id": "account.view_full_profile"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"defaultMessage": "Posts",
|
"defaultMessage": "Posts",
|
||||||
"id": "account.posts"
|
"id": "account.posts"
|
||||||
@ -452,7 +456,7 @@
|
|||||||
"id": "compose_form.placeholder"
|
"id": "compose_form.placeholder"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"defaultMessage": "Content warning",
|
"defaultMessage": "Write your warning here",
|
||||||
"id": "compose_form.spoiler_placeholder"
|
"id": "compose_form.spoiler_placeholder"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Block @{name}",
|
"account.block": "Block @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "This user is from another instance. This number may be larger.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Edit profile",
|
"account.edit_profile": "Edit profile",
|
||||||
"account.follow": "Follow",
|
"account.follow": "Follow",
|
||||||
"account.followers": "Followers",
|
"account.followers": "Followers",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Unfollow",
|
"account.unfollow": "Unfollow",
|
||||||
"account.unmute": "Unmute @{name}",
|
"account.unmute": "Unmute @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
@ -45,7 +46,7 @@
|
|||||||
"compose_form.publish_loud": "{publish}!",
|
"compose_form.publish_loud": "{publish}!",
|
||||||
"compose_form.sensitive": "Mark media as sensitive",
|
"compose_form.sensitive": "Mark media as sensitive",
|
||||||
"compose_form.spoiler": "Hide text behind warning",
|
"compose_form.spoiler": "Hide text behind warning",
|
||||||
"compose_form.spoiler_placeholder": "Content warning",
|
"compose_form.spoiler_placeholder": "Write your warning here",
|
||||||
"confirmation_modal.cancel": "Cancel",
|
"confirmation_modal.cancel": "Cancel",
|
||||||
"confirmations.block.confirm": "Block",
|
"confirmations.block.confirm": "Block",
|
||||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Bloki @{name}",
|
"account.block": "Bloki @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "This user is from another instance. This number may be larger.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Redakti la profilon",
|
"account.edit_profile": "Redakti la profilon",
|
||||||
"account.follow": "Sekvi",
|
"account.follow": "Sekvi",
|
||||||
"account.followers": "Sekvantoj",
|
"account.followers": "Sekvantoj",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Malsekvi",
|
"account.unfollow": "Malsekvi",
|
||||||
"account.unmute": "Unmute @{name}",
|
"account.unmute": "Unmute @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Bloquear",
|
"account.block": "Bloquear",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "This user is from another instance. This number may be larger.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Editar perfil",
|
"account.edit_profile": "Editar perfil",
|
||||||
"account.follow": "Seguir",
|
"account.follow": "Seguir",
|
||||||
"account.followers": "Seguidores",
|
"account.followers": "Seguidores",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Dejar de seguir",
|
"account.unfollow": "Dejar de seguir",
|
||||||
"account.unmute": "Unmute @{name}",
|
"account.unmute": "Unmute @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "مسدودسازی @{name}",
|
"account.block": "مسدودسازی @{name}",
|
||||||
"account.block_domain": "پنهانسازی همه چیز از سرور {domain}",
|
"account.block_domain": "پنهانسازی همه چیز از سرور {domain}",
|
||||||
"account.disclaimer": "این کاربر عضو سرور متفاوتی است. شاید عدد واقعی بیشتر از این باشد.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "ویرایش نمایه",
|
"account.edit_profile": "ویرایش نمایه",
|
||||||
"account.follow": "پی بگیرید",
|
"account.follow": "پی بگیرید",
|
||||||
"account.followers": "پیگیران",
|
"account.followers": "پیگیران",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "رفع پنهانسازی از {domain}",
|
"account.unblock_domain": "رفع پنهانسازی از {domain}",
|
||||||
"account.unfollow": "پایان پیگیری",
|
"account.unfollow": "پایان پیگیری",
|
||||||
"account.unmute": "باصدا کردن @{name}",
|
"account.unmute": "باصدا کردن @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید",
|
"boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Estä @{name}",
|
"account.block": "Estä @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "This user is from another instance. This number may be larger.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Muokkaa",
|
"account.edit_profile": "Muokkaa",
|
||||||
"account.follow": "Seuraa",
|
"account.follow": "Seuraa",
|
||||||
"account.followers": "Seuraajia",
|
"account.followers": "Seuraajia",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Lopeta seuraaminen",
|
"account.unfollow": "Lopeta seuraaminen",
|
||||||
"account.unmute": "Unmute @{name}",
|
"account.unmute": "Unmute @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Bloquer",
|
"account.block": "Bloquer",
|
||||||
"account.block_domain": "Tout masquer de {domain}",
|
"account.block_domain": "Tout masquer de {domain}",
|
||||||
"account.disclaimer": "Ce compte est situé sur une autre instance. Les nombres peuvent être plus grands.",
|
"account.disclaimer_full": "Les données ci-dessous peuvent ne pas refléter ce profil dans sa totalité.",
|
||||||
"account.edit_profile": "Modifier le profil",
|
"account.edit_profile": "Modifier le profil",
|
||||||
"account.follow": "Suivre",
|
"account.follow": "Suivre",
|
||||||
"account.followers": "Abonné⋅e⋅s",
|
"account.followers": "Abonné⋅e⋅s",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Ne plus masquer {domain}",
|
"account.unblock_domain": "Ne plus masquer {domain}",
|
||||||
"account.unfollow": "Ne plus suivre",
|
"account.unfollow": "Ne plus suivre",
|
||||||
"account.unmute": "Ne plus masquer",
|
"account.unmute": "Ne plus masquer",
|
||||||
|
"account.view_full_profile": "Afficher le profil complet",
|
||||||
"boost_modal.combo": "Vous pouvez appuyer sur {combo} pour pouvoir passer ceci, la prochaine fois",
|
"boost_modal.combo": "Vous pouvez appuyer sur {combo} pour pouvoir passer ceci, la prochaine fois",
|
||||||
"bundle_column_error.body": "Une erreur s'est produite lors du chargement de ce composant.",
|
"bundle_column_error.body": "Une erreur s'est produite lors du chargement de ce composant.",
|
||||||
"bundle_column_error.retry": "Réessayer",
|
"bundle_column_error.retry": "Réessayer",
|
||||||
@ -41,11 +42,11 @@
|
|||||||
"compose_form.lock_disclaimer.lock": "verrouillé",
|
"compose_form.lock_disclaimer.lock": "verrouillé",
|
||||||
"compose_form.placeholder": "Qu’avez-vous en tête ?",
|
"compose_form.placeholder": "Qu’avez-vous en tête ?",
|
||||||
"compose_form.privacy_disclaimer": "Votre statut privé va être transmis aux personnes mentionnées sur {domains}. Avez-vous confiance en {domainsCount, plural, one {ce serveur} other {ces serveurs}} pour ne pas divulguer votre statut ? Les statuts privés ne fonctionnent que sur les instances de Mastodon. Si {domains} {domainsCount, plural, one {n’est pas une instance de Mastodon} other {ne sont pas des instances de Mastodon}}, il n’y aura aucune indication que votre statut est privé, et il pourrait être partagé ou rendu visible d’une autre manière à d’autres personnes imprévues.",
|
"compose_form.privacy_disclaimer": "Votre statut privé va être transmis aux personnes mentionnées sur {domains}. Avez-vous confiance en {domainsCount, plural, one {ce serveur} other {ces serveurs}} pour ne pas divulguer votre statut ? Les statuts privés ne fonctionnent que sur les instances de Mastodon. Si {domains} {domainsCount, plural, one {n’est pas une instance de Mastodon} other {ne sont pas des instances de Mastodon}}, il n’y aura aucune indication que votre statut est privé, et il pourrait être partagé ou rendu visible d’une autre manière à d’autres personnes imprévues.",
|
||||||
"compose_form.publish": "Pouet ",
|
"compose_form.publish": "Pouet ",
|
||||||
"compose_form.publish_loud": "{publish}!",
|
"compose_form.publish_loud": "{publish}!",
|
||||||
"compose_form.sensitive": "Marquer le média comme délicat",
|
"compose_form.sensitive": "Marquer le média comme sensible",
|
||||||
"compose_form.spoiler": "Masquer le texte derrière un avertissement",
|
"compose_form.spoiler": "Masquer le texte derrière un avertissement",
|
||||||
"compose_form.spoiler_placeholder": "Avertissement",
|
"compose_form.spoiler_placeholder": "Écrivez ici votre avertissement",
|
||||||
"confirmation_modal.cancel": "Annuler",
|
"confirmation_modal.cancel": "Annuler",
|
||||||
"confirmations.block.confirm": "Bloquer",
|
"confirmations.block.confirm": "Bloquer",
|
||||||
"confirmations.block.message": "Confirmez vous le blocage de {name} ?",
|
"confirmations.block.message": "Confirmez vous le blocage de {name} ?",
|
||||||
@ -68,13 +69,13 @@
|
|||||||
"emoji_button.symbols": "Symboles",
|
"emoji_button.symbols": "Symboles",
|
||||||
"emoji_button.travel": "Lieux et voyages",
|
"emoji_button.travel": "Lieux et voyages",
|
||||||
"empty_column.community": "Le fil public local est vide. Écrivez-donc quelque chose pour le remplir !",
|
"empty_column.community": "Le fil public local est vide. Écrivez-donc quelque chose pour le remplir !",
|
||||||
"empty_column.hashtag": "Il n’y a encore aucun contenu relatif à ce hashtag",
|
"empty_column.hashtag": "Il n’y a encore aucun contenu associé à ce hashtag",
|
||||||
"empty_column.home": "Vous ne suivez encore personne. Visitez {public} ou bien utilisez la recherche pour vous connecter à d’autres utilisateur⋅ice⋅s.",
|
"empty_column.home": "Vous ne suivez encore personne. Visitez {public} ou bien utilisez la recherche pour vous connecter à d’autres utilisateur⋅ice⋅s.",
|
||||||
"empty_column.home.inactivity": "Votre accueil est vide. Si vous ne vous êtes pas connecté⋅e depuis un moment, il se remplira automatiquement très bientôt.",
|
"empty_column.home.inactivity": "Votre accueil est vide. Si vous ne vous êtes pas connecté⋅e depuis un moment, il se remplira automatiquement très bientôt.",
|
||||||
"empty_column.home.public_timeline": "le fil public",
|
"empty_column.home.public_timeline": "le fil public",
|
||||||
"empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres utilisateur⋅ice⋅s pour débuter la conversation.",
|
"empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres utilisateur⋅ice⋅s pour débuter la conversation.",
|
||||||
"empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des utilisateur⋅ice⋅s d’autres instances pour remplir le fil public.",
|
"empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des utilisateur⋅ice⋅s d’autres instances pour remplir le fil public.",
|
||||||
"follow_request.authorize": "Autoriser",
|
"follow_request.authorize": "Accepter",
|
||||||
"follow_request.reject": "Rejeter",
|
"follow_request.reject": "Rejeter",
|
||||||
"getting_started.appsshort": "Applications",
|
"getting_started.appsshort": "Applications",
|
||||||
"getting_started.faq": "FAQ",
|
"getting_started.faq": "FAQ",
|
||||||
@ -126,8 +127,8 @@
|
|||||||
"onboarding.page_one.welcome": "Bienvenue sur Mastodon !",
|
"onboarding.page_one.welcome": "Bienvenue sur Mastodon !",
|
||||||
"onboarding.page_six.admin": "L’administrateur⋅trice de votre instance est {admin}",
|
"onboarding.page_six.admin": "L’administrateur⋅trice de votre instance est {admin}",
|
||||||
"onboarding.page_six.almost_done": "Nous y sommes presque…",
|
"onboarding.page_six.almost_done": "Nous y sommes presque…",
|
||||||
"onboarding.page_six.appetoot": "Bon Appetoot!",
|
"onboarding.page_six.appetoot": "Bon Appétoot!",
|
||||||
"onboarding.page_six.apps_available": "De nombreuses {apps} sont disponibles pour iOS, Android et autres. Et maintenant… Bon Appetoot!",
|
"onboarding.page_six.apps_available": "De nombreuses {apps} sont disponibles pour iOS, Android et autres. Et maintenant… Bon Appétoot!",
|
||||||
"onboarding.page_six.github": "Mastodon est un logiciel libre, gratuit et open-source. Vous pouvez rapporter des bogues, suggérer des fonctionnalités, ou contribuer à son développement sur {github}.",
|
"onboarding.page_six.github": "Mastodon est un logiciel libre, gratuit et open-source. Vous pouvez rapporter des bogues, suggérer des fonctionnalités, ou contribuer à son développement sur {github}.",
|
||||||
"onboarding.page_six.guidelines": "règles de la communauté",
|
"onboarding.page_six.guidelines": "règles de la communauté",
|
||||||
"onboarding.page_six.read_guidelines": "S’il vous plaît, n’oubliez pas de lire les {guidelines} !",
|
"onboarding.page_six.read_guidelines": "S’il vous plaît, n’oubliez pas de lire les {guidelines} !",
|
||||||
@ -151,7 +152,7 @@
|
|||||||
"report.target": "Signalement",
|
"report.target": "Signalement",
|
||||||
"search.placeholder": "Rechercher",
|
"search.placeholder": "Rechercher",
|
||||||
"search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}",
|
"search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}",
|
||||||
"standalone.public_title": "Coup d'oeil",
|
"standalone.public_title": "Coup d'œil",
|
||||||
"status.cannot_reblog": "Cette publication ne peut être boostée",
|
"status.cannot_reblog": "Cette publication ne peut être boostée",
|
||||||
"status.delete": "Effacer",
|
"status.delete": "Effacer",
|
||||||
"status.favourite": "Ajouter aux favoris",
|
"status.favourite": "Ajouter aux favoris",
|
||||||
@ -165,8 +166,8 @@
|
|||||||
"status.reply": "Répondre",
|
"status.reply": "Répondre",
|
||||||
"status.replyAll": "Répondre au fil",
|
"status.replyAll": "Répondre au fil",
|
||||||
"status.report": "Signaler @{name}",
|
"status.report": "Signaler @{name}",
|
||||||
"status.sensitive_toggle": "Cliquer pour dévoiler",
|
"status.sensitive_toggle": "Cliquer pour afficher",
|
||||||
"status.sensitive_warning": "Contenu délicat",
|
"status.sensitive_warning": "Contenu sensible",
|
||||||
"status.show_less": "Replier",
|
"status.show_less": "Replier",
|
||||||
"status.show_more": "Déplier",
|
"status.show_more": "Déplier",
|
||||||
"status.unmute_conversation": "Ne plus masquer la conversation",
|
"status.unmute_conversation": "Ne plus masquer la conversation",
|
||||||
@ -180,7 +181,7 @@
|
|||||||
"upload_form.undo": "Annuler",
|
"upload_form.undo": "Annuler",
|
||||||
"upload_progress.label": "Envoi en cours…",
|
"upload_progress.label": "Envoi en cours…",
|
||||||
"video_player.expand": "Agrandir la vidéo",
|
"video_player.expand": "Agrandir la vidéo",
|
||||||
"video_player.toggle_sound": "Mettre/Couper le son",
|
"video_player.toggle_sound": "Activer/Désactiver le son",
|
||||||
"video_player.toggle_visible": "Afficher/Cacher la vidéo",
|
"video_player.toggle_visible": "Afficher/Cacher la vidéo",
|
||||||
"video_player.video_error": "Erreur lors de la lecture de la vidéo"
|
"video_player.video_error": "Erreur lors de la lecture de la vidéo"
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "חסימת @{name}",
|
"account.block": "חסימת @{name}",
|
||||||
"account.block_domain": "להסתיר הכל מהקהילה {domain}",
|
"account.block_domain": "להסתיר הכל מהקהילה {domain}",
|
||||||
"account.disclaimer": "משתמש זה מגיע מקהילה אחרת. המספר הזה עשוי להיות גדול יותר.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "עריכת פרופיל",
|
"account.edit_profile": "עריכת פרופיל",
|
||||||
"account.follow": "מעקב",
|
"account.follow": "מעקב",
|
||||||
"account.followers": "עוקבים",
|
"account.followers": "עוקבים",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "הסר חסימה מקהילת {domain}",
|
"account.unblock_domain": "הסר חסימה מקהילת {domain}",
|
||||||
"account.unfollow": "הפסקת מעקב",
|
"account.unfollow": "הפסקת מעקב",
|
||||||
"account.unmute": "הפסקת השתקת @{name}",
|
"account.unmute": "הפסקת השתקת @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה",
|
"boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Blokiraj @{name}",
|
"account.block": "Blokiraj @{name}",
|
||||||
"account.block_domain": "Sakrij sve sa {domain}",
|
"account.block_domain": "Sakrij sve sa {domain}",
|
||||||
"account.disclaimer": "Ovaj korisnik je sa druge instance. Ovaj broj bi mogao biti veći.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Uredi profil",
|
"account.edit_profile": "Uredi profil",
|
||||||
"account.follow": "Slijedi",
|
"account.follow": "Slijedi",
|
||||||
"account.followers": "Sljedbenici",
|
"account.followers": "Sljedbenici",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Otkrij {domain}",
|
"account.unblock_domain": "Otkrij {domain}",
|
||||||
"account.unfollow": "Prestani slijediti",
|
"account.unfollow": "Prestani slijediti",
|
||||||
"account.unmute": "Poništi utišavanje @{name}",
|
"account.unmute": "Poništi utišavanje @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Možeš pritisnuti {combo} kako bi ovo preskočio sljedeći put",
|
"boost_modal.combo": "Možeš pritisnuti {combo} kako bi ovo preskočio sljedeći put",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Blokkolás",
|
"account.block": "Blokkolás",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "This user is from another instance. This number may be larger.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Profil szerkesztése",
|
"account.edit_profile": "Profil szerkesztése",
|
||||||
"account.follow": "Követés",
|
"account.follow": "Követés",
|
||||||
"account.followers": "Követők",
|
"account.followers": "Követők",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Követés abbahagyása",
|
"account.unfollow": "Követés abbahagyása",
|
||||||
"account.unmute": "Unmute @{name}",
|
"account.unmute": "Unmute @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Blokir @{name}",
|
"account.block": "Blokir @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "Pengguna ini berasal dari server lain. Angka berikut mungkin lebih besar.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Ubah profil",
|
"account.edit_profile": "Ubah profil",
|
||||||
"account.follow": "Ikuti",
|
"account.follow": "Ikuti",
|
||||||
"account.followers": "Pengikut",
|
"account.followers": "Pengikut",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Berhenti mengikuti",
|
"account.unfollow": "Berhenti mengikuti",
|
||||||
"account.unmute": "Berhenti membisukan @{name}",
|
"account.unmute": "Berhenti membisukan @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini",
|
"boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Blokusar @{name}",
|
"account.block": "Blokusar @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "Ca uzero esas de altra instaluro. Ca nombro forsan esas plu granda.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Modifikar profilo",
|
"account.edit_profile": "Modifikar profilo",
|
||||||
"account.follow": "Sequar",
|
"account.follow": "Sequar",
|
||||||
"account.followers": "Sequanti",
|
"account.followers": "Sequanti",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Ne plus sequar",
|
"account.unfollow": "Ne plus sequar",
|
||||||
"account.unmute": "Ne plus celar @{name}",
|
"account.unmute": "Ne plus celar @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo",
|
"boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Blocca @{name}",
|
"account.block": "Blocca @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "Questo utente si trova su un altro server. Questo numero potrebbe essere maggiore.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Modifica profilo",
|
"account.edit_profile": "Modifica profilo",
|
||||||
"account.follow": "Segui",
|
"account.follow": "Segui",
|
||||||
"account.followers": "Seguaci",
|
"account.followers": "Seguaci",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Non seguire",
|
"account.unfollow": "Non seguire",
|
||||||
"account.unmute": "Non silenziare @{name}",
|
"account.unmute": "Non silenziare @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta",
|
"boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "ブロック",
|
"account.block": "ブロック",
|
||||||
"account.block_domain": "{domain}全体を非表示",
|
"account.block_domain": "{domain}全体を非表示",
|
||||||
"account.disclaimer": "このユーザーは他のインスタンスに所属しているため、数字が正確で無い場合があります。",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "プロフィールを編集",
|
"account.edit_profile": "プロフィールを編集",
|
||||||
"account.follow": "フォロー",
|
"account.follow": "フォロー",
|
||||||
"account.followers": "フォロワー",
|
"account.followers": "フォロワー",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "{domain}を表示",
|
"account.unblock_domain": "{domain}を表示",
|
||||||
"account.unfollow": "フォロー解除",
|
"account.unfollow": "フォロー解除",
|
||||||
"account.unmute": "ミュート解除",
|
"account.unmute": "ミュート解除",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "次からは{combo}を押せば、これをスキップできます。",
|
"boost_modal.combo": "次からは{combo}を押せば、これをスキップできます。",
|
||||||
"bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。",
|
"bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。",
|
||||||
"bundle_column_error.retry": "再試行",
|
"bundle_column_error.retry": "再試行",
|
||||||
@ -45,7 +46,7 @@
|
|||||||
"compose_form.publish_loud": "{publish}!",
|
"compose_form.publish_loud": "{publish}!",
|
||||||
"compose_form.sensitive": "メディアを閲覧注意としてマークする",
|
"compose_form.sensitive": "メディアを閲覧注意としてマークする",
|
||||||
"compose_form.spoiler": "テキストを隠す",
|
"compose_form.spoiler": "テキストを隠す",
|
||||||
"compose_form.spoiler_placeholder": "警告",
|
"compose_form.spoiler_placeholder": "ここに警告を書いてください",
|
||||||
"confirmation_modal.cancel": "キャンセル",
|
"confirmation_modal.cancel": "キャンセル",
|
||||||
"confirmations.block.confirm": "ブロック",
|
"confirmations.block.confirm": "ブロック",
|
||||||
"confirmations.block.message": "本当に{name}をブロックしますか?",
|
"confirmations.block.message": "本当に{name}をブロックしますか?",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "차단",
|
"account.block": "차단",
|
||||||
"account.block_domain": "{domain} 전체를 숨김",
|
"account.block_domain": "{domain} 전체를 숨김",
|
||||||
"account.disclaimer": "이 사용자는 다른 인스턴스에 소속되어 있으므로, 수치가 정확하지 않을 수도 있습니다.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "프로필 편집",
|
"account.edit_profile": "프로필 편집",
|
||||||
"account.follow": "팔로우",
|
"account.follow": "팔로우",
|
||||||
"account.followers": "팔로워",
|
"account.followers": "팔로워",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "{domain} 숨김 해제",
|
"account.unblock_domain": "{domain} 숨김 해제",
|
||||||
"account.unfollow": "팔로우 해제",
|
"account.unfollow": "팔로우 해제",
|
||||||
"account.unmute": "뮤트 해제",
|
"account.unmute": "뮤트 해제",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "다음부터 {combo}를 누르면 이 과정을 건너뛸 수 있습니다.",
|
"boost_modal.combo": "다음부터 {combo}를 누르면 이 과정을 건너뛸 수 있습니다.",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Blokkeer @{name}",
|
"account.block": "Blokkeer @{name}",
|
||||||
"account.block_domain": "Negeer alles van {domain}",
|
"account.block_domain": "Negeer alles van {domain}",
|
||||||
"account.disclaimer": "Deze gebruiker zit op een andere server. Dit getal kan hoger zijn.",
|
"account.disclaimer_full": "De informatie hieronder kan mogelijk een incompleet beeld geven van dit gebruikersprofiel.",
|
||||||
"account.edit_profile": "Profiel bewerken",
|
"account.edit_profile": "Profiel bewerken",
|
||||||
"account.follow": "Volgen",
|
"account.follow": "Volgen",
|
||||||
"account.followers": "Volgers",
|
"account.followers": "Volgers",
|
||||||
@ -17,13 +17,14 @@
|
|||||||
"account.unblock_domain": "{domain} niet meer negeren",
|
"account.unblock_domain": "{domain} niet meer negeren",
|
||||||
"account.unfollow": "Ontvolgen",
|
"account.unfollow": "Ontvolgen",
|
||||||
"account.unmute": "@{name} niet meer negeren",
|
"account.unmute": "@{name} niet meer negeren",
|
||||||
|
"account.view_full_profile": "Volledig profiel tonen",
|
||||||
"boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan",
|
"boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Opnieuw proberen",
|
||||||
"bundle_column_error.title": "Network error",
|
"bundle_column_error.title": "Netwerkfout",
|
||||||
"bundle_modal_error.close": "Close",
|
"bundle_modal_error.close": "Sluiten",
|
||||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
"bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.",
|
||||||
"bundle_modal_error.retry": "Try again",
|
"bundle_modal_error.retry": "Opnieuw proberen",
|
||||||
"column.blocks": "Geblokkeerde gebruikers",
|
"column.blocks": "Geblokkeerde gebruikers",
|
||||||
"column.community": "Lokale tijdlijn",
|
"column.community": "Lokale tijdlijn",
|
||||||
"column.favourites": "Favorieten",
|
"column.favourites": "Favorieten",
|
||||||
@ -43,20 +44,20 @@
|
|||||||
"compose_form.privacy_disclaimer": "Jouw privétoot wordt afgeleverd aan de vermelde gebruikers op {domains}. Vertrouw jij {domainsCount, plural, one {die server} other {die servers}}? Het privé plaatsen van toots werkt alleen op Mastodon-servers. Wanneer {domains} {domainsCount, plural, one {geen Mastodon-server is} other {geen Mastodon-servers zijn}}, dan wordt er niet aangegeven dat de toot privé is, waardoor het kan worden geboost of op een andere manier zichtbaar wordt gemaakt voor mensen waarvoor het niet was bedoeld.",
|
"compose_form.privacy_disclaimer": "Jouw privétoot wordt afgeleverd aan de vermelde gebruikers op {domains}. Vertrouw jij {domainsCount, plural, one {die server} other {die servers}}? Het privé plaatsen van toots werkt alleen op Mastodon-servers. Wanneer {domains} {domainsCount, plural, one {geen Mastodon-server is} other {geen Mastodon-servers zijn}}, dan wordt er niet aangegeven dat de toot privé is, waardoor het kan worden geboost of op een andere manier zichtbaar wordt gemaakt voor mensen waarvoor het niet was bedoeld.",
|
||||||
"compose_form.publish": "Toot",
|
"compose_form.publish": "Toot",
|
||||||
"compose_form.publish_loud": "{publish}!",
|
"compose_form.publish_loud": "{publish}!",
|
||||||
"compose_form.sensitive": "Media als gevoelig markeren",
|
"compose_form.sensitive": "Media als gevoelig markeren (nsfw)",
|
||||||
"compose_form.spoiler": "Tekst achter waarschuwing verbergen",
|
"compose_form.spoiler": "Tekst achter waarschuwing verbergen",
|
||||||
"compose_form.spoiler_placeholder": "Waarschuwingstekst",
|
"compose_form.spoiler_placeholder": "Waarschuwingstekst",
|
||||||
"confirmation_modal.cancel": "Annuleren",
|
"confirmation_modal.cancel": "Annuleren",
|
||||||
"confirmations.block.confirm": "Blokkeren",
|
"confirmations.block.confirm": "Blokkeren",
|
||||||
"confirmations.block.message": "Weet je zeker dat je {name} wilt blokkeren?",
|
"confirmations.block.message": "Weet je het zeker dat je {name} wilt blokkeren?",
|
||||||
"confirmations.delete.confirm": "Verwijderen",
|
"confirmations.delete.confirm": "Verwijderen",
|
||||||
"confirmations.delete.message": "Weet je zeker dat je deze toot wilt verwijderen?",
|
"confirmations.delete.message": "Weet je het zeker dat je deze toot wilt verwijderen?",
|
||||||
"confirmations.domain_block.confirm": "Negeer alles van deze server",
|
"confirmations.domain_block.confirm": "Negeer alles van deze server",
|
||||||
"confirmations.domain_block.message": "Weet je het echt, echt zeker dat je alles van {domain} wil negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en gewenst.",
|
"confirmations.domain_block.message": "Weet je het echt, echt zeker dat je alles van {domain} wil negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en gewenst.",
|
||||||
"confirmations.mute.confirm": "Negeren",
|
"confirmations.mute.confirm": "Negeren",
|
||||||
"confirmations.mute.message": "Weet je zeker dat je {name} wilt negeren?",
|
"confirmations.mute.message": "Weet je het zeker dat je {name} wilt negeren?",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Ontvolgen",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"confirmations.unfollow.message": "Weet je het zeker dat je {name} wilt ontvolgen?",
|
||||||
"emoji_button.activity": "Activiteiten",
|
"emoji_button.activity": "Activiteiten",
|
||||||
"emoji_button.flags": "Vlaggen",
|
"emoji_button.flags": "Vlaggen",
|
||||||
"emoji_button.food": "Eten en drinken",
|
"emoji_button.food": "Eten en drinken",
|
||||||
@ -67,7 +68,7 @@
|
|||||||
"emoji_button.search": "Zoeken...",
|
"emoji_button.search": "Zoeken...",
|
||||||
"emoji_button.symbols": "Symbolen",
|
"emoji_button.symbols": "Symbolen",
|
||||||
"emoji_button.travel": "Reizen en plekken",
|
"emoji_button.travel": "Reizen en plekken",
|
||||||
"empty_column.community": "De lokale tijdlijn is leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
|
"empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
|
||||||
"empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.",
|
"empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.",
|
||||||
"empty_column.home": "Jij volgt nog niemand. Bezoek {public} of gebruik het zoekvenster om andere mensen te ontmoeten.",
|
"empty_column.home": "Jij volgt nog niemand. Bezoek {public} of gebruik het zoekvenster om andere mensen te ontmoeten.",
|
||||||
"empty_column.home.inactivity": "Deze tijdlijn is leeg. Wanneer je een tijdje inactief bent geweest wordt deze snel opnieuw aangemaakt.",
|
"empty_column.home.inactivity": "Deze tijdlijn is leeg. Wanneer je een tijdje inactief bent geweest wordt deze snel opnieuw aangemaakt.",
|
||||||
@ -106,13 +107,13 @@
|
|||||||
"notification.mention": "{name} vermeldde jou",
|
"notification.mention": "{name} vermeldde jou",
|
||||||
"notification.reblog": "{name} boostte jouw toot",
|
"notification.reblog": "{name} boostte jouw toot",
|
||||||
"notifications.clear": "Meldingen verwijderen",
|
"notifications.clear": "Meldingen verwijderen",
|
||||||
"notifications.clear_confirmation": "Weet je zeker dat je al jouw meldingen wilt verwijderen?",
|
"notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?",
|
||||||
"notifications.column_settings.alert": "Desktopmeldingen",
|
"notifications.column_settings.alert": "Desktopmeldingen",
|
||||||
"notifications.column_settings.favourite": "Favorieten:",
|
"notifications.column_settings.favourite": "Favorieten:",
|
||||||
"notifications.column_settings.follow": "Nieuwe volgers:",
|
"notifications.column_settings.follow": "Nieuwe volgers:",
|
||||||
"notifications.column_settings.mention": "Vermeldingen:",
|
"notifications.column_settings.mention": "Vermeldingen:",
|
||||||
"notifications.column_settings.push": "Push notifications",
|
"notifications.column_settings.push": "Pushmeldingen",
|
||||||
"notifications.column_settings.push_meta": "This device",
|
"notifications.column_settings.push_meta": "Dit apparaat",
|
||||||
"notifications.column_settings.reblog": "Boosts:",
|
"notifications.column_settings.reblog": "Boosts:",
|
||||||
"notifications.column_settings.show": "In kolom tonen",
|
"notifications.column_settings.show": "In kolom tonen",
|
||||||
"notifications.column_settings.sound": "Geluid afspelen",
|
"notifications.column_settings.sound": "Geluid afspelen",
|
||||||
@ -146,12 +147,12 @@
|
|||||||
"privacy.unlisted.long": "Niet op openbare tijdlijnen tonen",
|
"privacy.unlisted.long": "Niet op openbare tijdlijnen tonen",
|
||||||
"privacy.unlisted.short": "Minder openbaar",
|
"privacy.unlisted.short": "Minder openbaar",
|
||||||
"reply_indicator.cancel": "Annuleren",
|
"reply_indicator.cancel": "Annuleren",
|
||||||
|
"report.heading": "Rapporteren",
|
||||||
"report.placeholder": "Extra opmerkingen",
|
"report.placeholder": "Extra opmerkingen",
|
||||||
"report.submit": "Verzenden",
|
"report.submit": "Verzenden",
|
||||||
"report.target": "Rapporteren van",
|
"report.target": "Rapporteren van",
|
||||||
"search.placeholder": "Zoeken",
|
"search.placeholder": "Zoeken",
|
||||||
"search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}",
|
"search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}",
|
||||||
"standalone.public_title": "A look inside...",
|
|
||||||
"status.cannot_reblog": "Deze toot kan niet geboost worden",
|
"status.cannot_reblog": "Deze toot kan niet geboost worden",
|
||||||
"status.delete": "Verwijderen",
|
"status.delete": "Verwijderen",
|
||||||
"status.favourite": "Favoriet",
|
"status.favourite": "Favoriet",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Blokkér @{name}",
|
"account.block": "Blokkér @{name}",
|
||||||
"account.block_domain": "Skjul alt fra {domain}",
|
"account.block_domain": "Skjul alt fra {domain}",
|
||||||
"account.disclaimer": "Denne brukeren er fra en annen instans. Dette tallet kan være høyere.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Rediger profil",
|
"account.edit_profile": "Rediger profil",
|
||||||
"account.follow": "Følg",
|
"account.follow": "Følg",
|
||||||
"account.followers": "Følgere",
|
"account.followers": "Følgere",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Vis {domain}",
|
"account.unblock_domain": "Vis {domain}",
|
||||||
"account.unfollow": "Avfølg",
|
"account.unfollow": "Avfølg",
|
||||||
"account.unmute": "Avdemp @{name}",
|
"account.unmute": "Avdemp @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
|
"boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Blocar @{name}",
|
"account.block": "Blocar @{name}",
|
||||||
"account.block_domain": "Tot amagar del domeni {domain}",
|
"account.block_domain": "Tot amagar del domeni {domain}",
|
||||||
"account.disclaimer": "Aqueste compte es sus una autra instància. Los nombres pòdon èsser mai grandes.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Modificar lo perfil",
|
"account.edit_profile": "Modificar lo perfil",
|
||||||
"account.follow": "Sègre",
|
"account.follow": "Sègre",
|
||||||
"account.followers": "Seguidors",
|
"account.followers": "Seguidors",
|
||||||
@ -17,19 +17,20 @@
|
|||||||
"account.unblock_domain": "Desblocar {domain}",
|
"account.unblock_domain": "Desblocar {domain}",
|
||||||
"account.unfollow": "Quitar de sègre",
|
"account.unfollow": "Quitar de sègre",
|
||||||
"account.unmute": "Quitar de rescondre @{name}",
|
"account.unmute": "Quitar de rescondre @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven",
|
"boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Quicòm a fach meuca pendent lo cargament d’aqueste compausant.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Tornar ensejar",
|
||||||
"bundle_column_error.title": "Network error",
|
"bundle_column_error.title": "Error de ret",
|
||||||
"bundle_modal_error.close": "Close",
|
"bundle_modal_error.close": "Tampar",
|
||||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
"bundle_modal_error.message": "Quicòm a fach meuca pendent lo cargament d’aqueste compausant.",
|
||||||
"bundle_modal_error.retry": "Try again",
|
"bundle_modal_error.retry": "Tornar ensejar",
|
||||||
"column.blocks": "Personas blocadas",
|
"column.blocks": "Personas blocadas",
|
||||||
"column.community": "Flux d’actualitat public local",
|
"column.community": "Flux public local",
|
||||||
"column.favourites": "Favorits",
|
"column.favourites": "Favorits",
|
||||||
"column.follow_requests": "Demandas d’abonament",
|
"column.follow_requests": "Demandas d’abonament",
|
||||||
"column.home": "Acuèlh",
|
"column.home": "Acuèlh",
|
||||||
"column.mutes": "Personas mesas en silenci",
|
"column.mutes": "Personas en silenci",
|
||||||
"column.notifications": "Notificacions",
|
"column.notifications": "Notificacions",
|
||||||
"column.public": "Flux public global",
|
"column.public": "Flux public global",
|
||||||
"column_back_button.label": "Tornar",
|
"column_back_button.label": "Tornar",
|
||||||
@ -55,8 +56,8 @@
|
|||||||
"confirmations.domain_block.message": "Sètz segur segur de voler blocar complètament {domain} ? De còps cal pas que blocar o rescondre unas personas solament.",
|
"confirmations.domain_block.message": "Sètz segur segur de voler blocar complètament {domain} ? De còps cal pas que blocar o rescondre unas personas solament.",
|
||||||
"confirmations.mute.confirm": "Metre en silenci",
|
"confirmations.mute.confirm": "Metre en silenci",
|
||||||
"confirmations.mute.message": "Sètz segur de voler metre en silenci {name} ?",
|
"confirmations.mute.message": "Sètz segur de voler metre en silenci {name} ?",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Quitar de sègre",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"confirmations.unfollow.message": "Volètz vertadièrament quitar de sègre {name} ?",
|
||||||
"emoji_button.activity": "Activitat",
|
"emoji_button.activity": "Activitat",
|
||||||
"emoji_button.flags": "Drapèus",
|
"emoji_button.flags": "Drapèus",
|
||||||
"emoji_button.food": "Beure e manjar",
|
"emoji_button.food": "Beure e manjar",
|
||||||
@ -69,7 +70,7 @@
|
|||||||
"emoji_button.travel": "Viatges & lòcs",
|
"emoji_button.travel": "Viatges & lòcs",
|
||||||
"empty_column.community": "Lo flux public local es void. Escribètz quicòm per lo garnir !",
|
"empty_column.community": "Lo flux public local es void. Escribètz quicòm per lo garnir !",
|
||||||
"empty_column.hashtag": "I a pas encara de contengut ligat a aqueste hashtag",
|
"empty_column.hashtag": "I a pas encara de contengut ligat a aqueste hashtag",
|
||||||
"empty_column.home": "Pel moment segètz pas segun. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.",
|
"empty_column.home": "Pel moment segètz pas degun. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.",
|
||||||
"empty_column.home.inactivity": "Vòstra pagina d’acuèlh es voida. Se sètz estat inactiu per un moment, serà tornada generar per vos dins una estona.",
|
"empty_column.home.inactivity": "Vòstra pagina d’acuèlh es voida. Se sètz estat inactiu per un moment, serà tornada generar per vos dins una estona.",
|
||||||
"empty_column.home.public_timeline": "lo flux public",
|
"empty_column.home.public_timeline": "lo flux public",
|
||||||
"empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.",
|
"empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.",
|
||||||
@ -111,8 +112,8 @@
|
|||||||
"notifications.column_settings.favourite": "Favorits :",
|
"notifications.column_settings.favourite": "Favorits :",
|
||||||
"notifications.column_settings.follow": "Nòus seguidors :",
|
"notifications.column_settings.follow": "Nòus seguidors :",
|
||||||
"notifications.column_settings.mention": "Mencions :",
|
"notifications.column_settings.mention": "Mencions :",
|
||||||
"notifications.column_settings.push": "Push notifications",
|
"notifications.column_settings.push": "Notificacions",
|
||||||
"notifications.column_settings.push_meta": "This device",
|
"notifications.column_settings.push_meta": "Aqueste periferic",
|
||||||
"notifications.column_settings.reblog": "Partatges :",
|
"notifications.column_settings.reblog": "Partatges :",
|
||||||
"notifications.column_settings.show": "Mostrar dins la colomna",
|
"notifications.column_settings.show": "Mostrar dins la colomna",
|
||||||
"notifications.column_settings.sound": "Emetre un son",
|
"notifications.column_settings.sound": "Emetre un son",
|
||||||
@ -125,7 +126,7 @@
|
|||||||
"onboarding.page_one.handle": "Sètz sus {domain}, doncas vòstre identificant complet es {handle}",
|
"onboarding.page_one.handle": "Sètz sus {domain}, doncas vòstre identificant complet es {handle}",
|
||||||
"onboarding.page_one.welcome": "Benvengut a Mastodon !",
|
"onboarding.page_one.welcome": "Benvengut a Mastodon !",
|
||||||
"onboarding.page_six.admin": "Vòstre administrator d’instància es {admin}.",
|
"onboarding.page_six.admin": "Vòstre administrator d’instància es {admin}.",
|
||||||
"onboarding.page_six.almost_done": "Gaireben acabat...",
|
"onboarding.page_six.almost_done": "Gaireben acabat…",
|
||||||
"onboarding.page_six.appetoot": "Bon Appetoot!",
|
"onboarding.page_six.appetoot": "Bon Appetoot!",
|
||||||
"onboarding.page_six.apps_available": "I a d’aplicacions per mobil per iOS, Android e mai.",
|
"onboarding.page_six.apps_available": "I a d’aplicacions per mobil per iOS, Android e mai.",
|
||||||
"onboarding.page_six.github": "Mastodon es un logicial liure e open-source. Podètz senhalar de bugs, demandar de foncionalitats e contribuir al còdi sus {github}.",
|
"onboarding.page_six.github": "Mastodon es un logicial liure e open-source. Podètz senhalar de bugs, demandar de foncionalitats e contribuir al còdi sus {github}.",
|
||||||
@ -151,14 +152,14 @@
|
|||||||
"report.target": "Senhalar {target}",
|
"report.target": "Senhalar {target}",
|
||||||
"search.placeholder": "Recercar",
|
"search.placeholder": "Recercar",
|
||||||
"search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
|
"search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
|
||||||
"standalone.public_title": "A look inside...",
|
"standalone.public_title": "Una ulhada dedins…",
|
||||||
"status.cannot_reblog": "Aqueste estatut pòt pas èsser partejat",
|
"status.cannot_reblog": "Aqueste estatut pòt pas èsser partejat",
|
||||||
"status.delete": "Escafar",
|
"status.delete": "Escafar",
|
||||||
"status.favourite": "Apondre als favorits",
|
"status.favourite": "Apondre als favorits",
|
||||||
"status.load_more": "Cargar mai",
|
"status.load_more": "Cargar mai",
|
||||||
"status.media_hidden": "Mèdia rescondut",
|
"status.media_hidden": "Mèdia rescondut",
|
||||||
"status.mention": "Mencionar",
|
"status.mention": "Mencionar",
|
||||||
"status.mute_conversation": "Mute conversation",
|
"status.mute_conversation": "Rescondre la conversacion",
|
||||||
"status.open": "Desplegar aqueste estatut",
|
"status.open": "Desplegar aqueste estatut",
|
||||||
"status.reblog": "Partejar",
|
"status.reblog": "Partejar",
|
||||||
"status.reblogged_by": "{name} a partejat :",
|
"status.reblogged_by": "{name} a partejat :",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Blokuj @{name}",
|
"account.block": "Blokuj @{name}",
|
||||||
"account.block_domain": "Blokuj wszystko z {domain}",
|
"account.block_domain": "Blokuj wszystko z {domain}",
|
||||||
"account.disclaimer": "Ten użytkownik pochodzi z innej instancji. Ta liczba może być większa.",
|
"account.disclaimer_full": "Poniższe informacje mogą nie odwzorowywać bezbłędnie profilu użytkownika.",
|
||||||
"account.edit_profile": "Edytuj profil",
|
"account.edit_profile": "Edytuj profil",
|
||||||
"account.follow": "Śledź",
|
"account.follow": "Śledź",
|
||||||
"account.followers": "Śledzący",
|
"account.followers": "Śledzący",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Odblokuj domenę {domain}",
|
"account.unblock_domain": "Odblokuj domenę {domain}",
|
||||||
"account.unfollow": "Przestań śledzić",
|
"account.unfollow": "Przestań śledzić",
|
||||||
"account.unmute": "Cofnij wyciszenie @{name}",
|
"account.unmute": "Cofnij wyciszenie @{name}",
|
||||||
|
"account.view_full_profile": "Wyświetl pełny profil",
|
||||||
"boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem",
|
"boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem",
|
||||||
"bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.",
|
"bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.",
|
||||||
"bundle_column_error.retry": "Spróbuj ponownie",
|
"bundle_column_error.retry": "Spróbuj ponownie",
|
||||||
@ -45,7 +46,7 @@
|
|||||||
"compose_form.publish_loud": "{publish}!",
|
"compose_form.publish_loud": "{publish}!",
|
||||||
"compose_form.sensitive": "Oznacz treści jako wrażliwe",
|
"compose_form.sensitive": "Oznacz treści jako wrażliwe",
|
||||||
"compose_form.spoiler": "Ukryj tekst za ostrzeżeniem",
|
"compose_form.spoiler": "Ukryj tekst za ostrzeżeniem",
|
||||||
"compose_form.spoiler_placeholder": "Ostrzeżenie o zawartości",
|
"compose_form.spoiler_placeholder": "Wprowadź swoje ostrzeżenie o zawartości",
|
||||||
"confirmation_modal.cancel": "Anuluj",
|
"confirmation_modal.cancel": "Anuluj",
|
||||||
"confirmations.block.confirm": "Zablokuj",
|
"confirmations.block.confirm": "Zablokuj",
|
||||||
"confirmations.block.message": "Czy na pewno chcesz zablokować {name}?",
|
"confirmations.block.message": "Czy na pewno chcesz zablokować {name}?",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Bloquear @{name}",
|
"account.block": "Bloquear @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "Essa conta está localizado em outra instância. Os nomes podem ser maiores.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Editar perfil",
|
"account.edit_profile": "Editar perfil",
|
||||||
"account.follow": "Seguir",
|
"account.follow": "Seguir",
|
||||||
"account.followers": "Seguidores",
|
"account.followers": "Seguidores",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Deixar de seguir",
|
"account.unfollow": "Deixar de seguir",
|
||||||
"account.unmute": "Não silenciar @{name}",
|
"account.unmute": "Não silenciar @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
|
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Bloquear @{name}",
|
"account.block": "Bloquear @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "Essa conta está localizado em outra instância. Os nomes podem ser maiores.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Editar perfil",
|
"account.edit_profile": "Editar perfil",
|
||||||
"account.follow": "Seguir",
|
"account.follow": "Seguir",
|
||||||
"account.followers": "Seguidores",
|
"account.followers": "Seguidores",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Deixar de seguir",
|
"account.unfollow": "Deixar de seguir",
|
||||||
"account.unmute": "Não silenciar @{name}",
|
"account.unmute": "Não silenciar @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
|
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Блокировать",
|
"account.block": "Блокировать",
|
||||||
"account.block_domain": "Блокировать все с {domain}",
|
"account.block_domain": "Блокировать все с {domain}",
|
||||||
"account.disclaimer": "Это пользователь с другого узла. Число может быть больше.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Изменить профиль",
|
"account.edit_profile": "Изменить профиль",
|
||||||
"account.follow": "Подписаться",
|
"account.follow": "Подписаться",
|
||||||
"account.followers": "Подписаны",
|
"account.followers": "Подписаны",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Разблокировать {domain}",
|
"account.unblock_domain": "Разблокировать {domain}",
|
||||||
"account.unfollow": "Отписаться",
|
"account.unfollow": "Отписаться",
|
||||||
"account.unmute": "Снять глушение",
|
"account.unmute": "Снять глушение",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Нажмите {combo}, чтобы пропустить это в следующий раз",
|
"boost_modal.combo": "Нажмите {combo}, чтобы пропустить это в следующий раз",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
@ -45,7 +46,7 @@
|
|||||||
"compose_form.publish_loud": "{publish}!",
|
"compose_form.publish_loud": "{publish}!",
|
||||||
"compose_form.sensitive": "Отметить как чувствительный контент",
|
"compose_form.sensitive": "Отметить как чувствительный контент",
|
||||||
"compose_form.spoiler": "Скрыть текст за предупреждением",
|
"compose_form.spoiler": "Скрыть текст за предупреждением",
|
||||||
"compose_form.spoiler_placeholder": "Предупреждение о скрытом тексте",
|
"compose_form.spoiler_placeholder": "Напишите свое предупреждение здесь",
|
||||||
"confirmation_modal.cancel": "Отмена",
|
"confirmation_modal.cancel": "Отмена",
|
||||||
"confirmations.block.confirm": "Заблокировать",
|
"confirmations.block.confirm": "Заблокировать",
|
||||||
"confirmations.block.message": "Вы уверены, что хотите заблокировать {name}?",
|
"confirmations.block.message": "Вы уверены, что хотите заблокировать {name}?",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Block @{name}",
|
"account.block": "Block @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "This user is from another instance. This number may be larger.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Edit profile",
|
"account.edit_profile": "Edit profile",
|
||||||
"account.follow": "Follow",
|
"account.follow": "Follow",
|
||||||
"account.followers": "Followers",
|
"account.followers": "Followers",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Unfollow",
|
"account.unfollow": "Unfollow",
|
||||||
"account.unmute": "Unmute @{name}",
|
"account.unmute": "Unmute @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Engelle @{name}",
|
"account.block": "Engelle @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "Bu kullanıcının hesabı farklı sunucuda bulunduğu için bu sayı daha fazla olabilir.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Profili düzenle",
|
"account.edit_profile": "Profili düzenle",
|
||||||
"account.follow": "Takip et",
|
"account.follow": "Takip et",
|
||||||
"account.followers": "Takipçiler",
|
"account.followers": "Takipçiler",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "Takipten vazgeç",
|
"account.unfollow": "Takipten vazgeç",
|
||||||
"account.unmute": "Sesi aç @{name}",
|
"account.unmute": "Sesi aç @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Bir dahaki sefere {combo} tuşuna basabilirsiniz",
|
"boost_modal.combo": "Bir dahaki sefere {combo} tuşuna basabilirsiniz",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "Заблокувати",
|
"account.block": "Заблокувати",
|
||||||
"account.block_domain": "Заглушити {domain}",
|
"account.block_domain": "Заглушити {domain}",
|
||||||
"account.disclaimer": "Це користувач з іншої інстанції. Число може бути більше.",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "Налаштування профілю",
|
"account.edit_profile": "Налаштування профілю",
|
||||||
"account.follow": "Підписатися",
|
"account.follow": "Підписатися",
|
||||||
"account.followers": "Підписники",
|
"account.followers": "Підписники",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Розблокувати {domain}",
|
"account.unblock_domain": "Розблокувати {domain}",
|
||||||
"account.unfollow": "Відписатися",
|
"account.unfollow": "Відписатися",
|
||||||
"account.unmute": "Зняти глушення",
|
"account.unmute": "Зняти глушення",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу",
|
"boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "屏蔽 @{name}",
|
"account.block": "屏蔽 @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "由于这个账户处于另一个服务器实例上,实际数字会比这个更多。",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "修改个人资料",
|
"account.edit_profile": "修改个人资料",
|
||||||
"account.follow": "关注",
|
"account.follow": "关注",
|
||||||
"account.followers": "关注者",
|
"account.followers": "关注者",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "取消关注",
|
"account.unfollow": "取消关注",
|
||||||
"account.unmute": "取消 @{name} 的静音",
|
"account.unmute": "取消 @{name} 的静音",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "如你想在下次路过时显示,请按{combo},",
|
"boost_modal.combo": "如你想在下次路过时显示,请按{combo},",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "封鎖 @{name}",
|
"account.block": "封鎖 @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "由於這個用戶在另一個服務站,實際數字會比這個更多。",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "修改個人資料",
|
"account.edit_profile": "修改個人資料",
|
||||||
"account.follow": "關注",
|
"account.follow": "關注",
|
||||||
"account.followers": "關注的人",
|
"account.followers": "關注的人",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "Unhide {domain}",
|
"account.unblock_domain": "Unhide {domain}",
|
||||||
"account.unfollow": "取消關注",
|
"account.unfollow": "取消關注",
|
||||||
"account.unmute": "取消 @{name} 的靜音",
|
"account.unmute": "取消 @{name} 的靜音",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "如你想在下次路過這顯示,請按{combo},",
|
"boost_modal.combo": "如你想在下次路過這顯示,請按{combo},",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.block": "封鎖 @{name}",
|
"account.block": "封鎖 @{name}",
|
||||||
"account.block_domain": "隱藏來自 {domain} 的一切",
|
"account.block_domain": "隱藏來自 {domain} 的一切",
|
||||||
"account.disclaimer": "這使用者來自其他副本,實際數字可能更大。",
|
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||||
"account.edit_profile": "編輯用戶資訊",
|
"account.edit_profile": "編輯用戶資訊",
|
||||||
"account.follow": "關注",
|
"account.follow": "關注",
|
||||||
"account.followers": "專注者",
|
"account.followers": "專注者",
|
||||||
@ -17,6 +17,7 @@
|
|||||||
"account.unblock_domain": "不再隱藏 {domain}",
|
"account.unblock_domain": "不再隱藏 {domain}",
|
||||||
"account.unfollow": "取消關注",
|
"account.unfollow": "取消關注",
|
||||||
"account.unmute": "不再消音 @{name}",
|
"account.unmute": "不再消音 @{name}",
|
||||||
|
"account.view_full_profile": "View full profile",
|
||||||
"boost_modal.combo": "下次你可以按 {combo} 來跳過",
|
"boost_modal.combo": "下次你可以按 {combo} 來跳過",
|
||||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||||
"bundle_column_error.retry": "Try again",
|
"bundle_column_error.retry": "Try again",
|
||||||
|
@ -37,7 +37,7 @@ const unsubscribe = ({ registration, subscription }) =>
|
|||||||
|
|
||||||
const sendSubscriptionToBackend = (subscription) =>
|
const sendSubscriptionToBackend = (subscription) =>
|
||||||
axios.post('/api/web/push_subscriptions', {
|
axios.post('/api/web/push_subscriptions', {
|
||||||
data: subscription,
|
subscription,
|
||||||
}).then(response => response.data);
|
}).then(response => response.data);
|
||||||
|
|
||||||
// Last one checks for payload support: https://web-push-book.gauntface.com/chapter-06/01-non-standards-browsers/#no-payload
|
// Last one checks for payload support: https://web-push-book.gauntface.com/chapter-06/01-non-standards-browsers/#no-payload
|
||||||
|
@ -120,18 +120,55 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.information-board {
|
.information-board {
|
||||||
margin: 20px 0;
|
background: darken($ui-base-color, 4%);
|
||||||
|
padding: 40px 0;
|
||||||
|
|
||||||
|
.panel {
|
||||||
|
position: absolute;
|
||||||
|
width: 280px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: darken($ui-base-color, 8%);
|
||||||
|
padding: 20px;
|
||||||
|
padding-top: 10px;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: -40px;
|
||||||
|
|
||||||
|
.panel-header {
|
||||||
|
font-family: 'mastodon-font-display', sans-serif;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 24px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: $ui-base-lighter-color;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
border-bottom: 1px solid lighten($ui-base-color, 4%);
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-weight: 400;
|
||||||
|
color: lighten($ui-base-color, 34%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
position: relative;
|
||||||
|
padding-right: 280px + 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.information-board-sections {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
border-top: 1px solid lighten($ui-base-color, 10%);
|
}
|
||||||
border-bottom: 1px solid lighten($ui-base-color, 10%);
|
|
||||||
padding-right: 14px;
|
|
||||||
|
|
||||||
.section {
|
.section {
|
||||||
flex: 1 0 0;
|
flex: 1 0 0;
|
||||||
padding: 14px;
|
|
||||||
text-align: right;
|
|
||||||
font: 16px/28px 'mastodon-font-sans-serif', sans-serif;
|
font: 16px/28px 'mastodon-font-sans-serif', sans-serif;
|
||||||
|
text-align: right;
|
||||||
|
padding: 0 15px;
|
||||||
|
|
||||||
span,
|
span,
|
||||||
strong {
|
strong {
|
||||||
@ -143,7 +180,6 @@
|
|||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
color: $ui-secondary-color;
|
color: $ui-secondary-color;
|
||||||
font-size: 14px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,100 +237,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-email {
|
|
||||||
text-align: center;
|
|
||||||
margin: 40px 0;
|
|
||||||
|
|
||||||
strong {
|
|
||||||
display: block;
|
|
||||||
color: $primary-text-color;
|
|
||||||
word-break: break-word;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-layout {
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
.main {
|
|
||||||
flex: 1 1 auto;
|
|
||||||
padding: 14px 0;
|
|
||||||
|
|
||||||
.panel {
|
|
||||||
padding-right: 14px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar {
|
|
||||||
border-left: 1px solid lighten($ui-base-color, 10%);
|
|
||||||
width: 200px;
|
|
||||||
flex: 0 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel {
|
|
||||||
.panel-header {
|
|
||||||
background: lighten($ui-base-color, 10%);
|
|
||||||
padding: 7px 14px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-body {
|
|
||||||
padding: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-list {
|
|
||||||
ul {
|
|
||||||
list-style: none;
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
li {
|
|
||||||
margin: 0;
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 18px;
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: block;
|
|
||||||
padding: 7px 14px;
|
|
||||||
color: rgba($primary-text-color, 0.7);
|
|
||||||
text-decoration: none;
|
|
||||||
transition: all 200ms linear;
|
|
||||||
|
|
||||||
i.fa {
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: $primary-text-color;
|
|
||||||
background-color: darken($ui-base-color, 5%);
|
|
||||||
transition: all 100ms linear;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.selected {
|
|
||||||
color: $primary-text-color;
|
|
||||||
background-color: $ui-highlight-color;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: lighten($ui-highlight-color, 5%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 625px) {
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.sidebar {
|
|
||||||
border: 1px solid lighten($ui-base-color, 10%);
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.features-list__row {
|
.features-list__row {
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
@ -320,7 +262,7 @@
|
|||||||
.text {
|
.text {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
|
|
||||||
h6 {
|
h6 {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
@ -336,6 +278,15 @@
|
|||||||
background: linear-gradient(150deg, lighten($ui-base-color, 8%), $ui-base-color);
|
background: linear-gradient(150deg, lighten($ui-base-color, 8%), $ui-base-color);
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
&.compact {
|
||||||
|
background: $ui-base-color;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
|
||||||
|
.hero .heading {
|
||||||
|
padding-bottom: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.mascot-container {
|
.mascot-container {
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
@ -388,10 +339,9 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
transition: all 0.1s linear;
|
transition: all 0.1s linear;
|
||||||
animation-name: floating;
|
animation-name: floating;
|
||||||
animation-duration: 1.7s;
|
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-direction: alternate;
|
animation-direction: alternate;
|
||||||
animation-timing-function: linear;
|
animation-timing-function: ease-in-out;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,7 +350,8 @@
|
|||||||
height: 170px;
|
height: 170px;
|
||||||
right: -120px;
|
right: -120px;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447.1875 234.375" height="170" width="324"><path fill="#{hex-color(lighten($ui-base-color, 26%))}" d="M21.69 233.366c-6.45-1.268-13.347-5.63-16.704-10.564-10.705-15.734-1.513-37.724 18.632-44.57l4.8-1.632.173-17.753c.146-14.77.515-19.063 2.2-25.55 6.736-25.944 24.46-46.032 47.766-54.137 11.913-4.143 19.558-5.366 34.178-5.47l13.828-.096V71.12c0-4.755 2.853-17.457 5.238-23.327 8.588-21.137 26.735-35.957 52.153-42.593 23.248-6.07 50.153-6.415 71.863-.923 11.14 2.82 25.686 9.957 33.857 16.615 19.335 15.756 31.82 41.05 35.183 71.275.59 5.305.672 5.435 3.11 4.926 11.833-2.474 30.4-3.132 40.065-1.42 24.388 4.32 40.568 19.076 47.214 43.058 2.16 7.8 3.953 23.894 3.59 32.237l-.24 5.498 5.156 1.317c6.392 1.633 14.55 7.098 18.003 12.062 1.435 2.062 3.305 6.597 4.156 10.078 1.428 5.84 1.43 6.8.04 12.44-1.807 7.318-5.672 13.252-10.872 16.694-8.508 5.63 3.756 5.33-211.916 5.216-108.56-.056-199.22-.464-201.47-.906z"/></svg>');
|
animation-duration: 3s;
|
||||||
|
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447.1875 234.375" height="170" width="324"><path fill="#{hex-color($ui-base-lighter-color)}" d="M21.69 233.366c-6.45-1.268-13.347-5.63-16.704-10.564-10.705-15.734-1.513-37.724 18.632-44.57l4.8-1.632.173-17.753c.146-14.77.515-19.063 2.2-25.55 6.736-25.944 24.46-46.032 47.766-54.137 11.913-4.143 19.558-5.366 34.178-5.47l13.828-.096V71.12c0-4.755 2.853-17.457 5.238-23.327 8.588-21.137 26.735-35.957 52.153-42.593 23.248-6.07 50.153-6.415 71.863-.923 11.14 2.82 25.686 9.957 33.857 16.615 19.335 15.756 31.82 41.05 35.183 71.275.59 5.305.672 5.435 3.11 4.926 11.833-2.474 30.4-3.132 40.065-1.42 24.388 4.32 40.568 19.076 47.214 43.058 2.16 7.8 3.953 23.894 3.59 32.237l-.24 5.498 5.156 1.317c6.392 1.633 14.55 7.098 18.003 12.062 1.435 2.062 3.305 6.597 4.156 10.078 1.428 5.84 1.43 6.8.04 12.44-1.807 7.318-5.672 13.252-10.872 16.694-8.508 5.63 3.756 5.33-211.916 5.216-108.56-.056-199.22-.464-201.47-.906z"/></svg>');
|
||||||
}
|
}
|
||||||
|
|
||||||
.float-2 {
|
.float-2 {
|
||||||
@ -408,8 +359,9 @@
|
|||||||
height: 100px;
|
height: 100px;
|
||||||
right: 210px;
|
right: 210px;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
animation-duration: 3.5s;
|
||||||
animation-delay: 0.2s;
|
animation-delay: 0.2s;
|
||||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 536.25 222.1875" height="100" width="241"><path fill="#{hex-color(lighten($ui-base-color, 26%))}" d="M42.626 221.23c-14.104-1.174-26.442-5.133-32.825-10.534-4.194-3.548-7.684-10.66-8.868-18.075-1.934-12.102.633-22.265 7.528-29.81 7.61-8.328 19.998-12.76 39.855-14.257l8.47-.638-2.08-6.223c-4.826-14.422-6.357-24.813-6.37-43.255-.012-14.923.28-18.513 2.1-25.724 2.283-9.048 8.483-23.034 13.345-30.1 14.76-21.45 43.505-38.425 70.535-41.65 30.628-3.655 64.47 12.073 89.668 41.673l5.955 6.995 2.765-4.174c1.52-2.296 5.74-6.93 9.376-10.295 18.382-17.02 43.436-20.676 73.352-10.705 12.158 4.052 21.315 9.53 29.64 17.733 12.752 12.562 18.16 25.718 18.19 44.26l.02 10.98 2.312-3.01c15.64-20.365 42.29-20.485 62.438-.28 3.644 3.653 7.558 8.593 8.697 10.976 4.895 10.24 5.932 25.688 2.486 37.046-.76 2.507-1.388 4.816-1.393 5.13-.006.316 6.845.87 15.224 1.234 53.06 2.297 76.356 12.98 81.817 37.526 3.554 15.973-3.71 28.604-19.566 34.02-4.554 1.555-17.922 1.655-234.517 1.757-126.327.06-233.497-.21-238.154-.597z"/></svg>');
|
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 536.25 222.1875" height="100" width="241"><path fill="#{hex-color($ui-base-lighter-color)}" d="M42.626 221.23c-14.104-1.174-26.442-5.133-32.825-10.534-4.194-3.548-7.684-10.66-8.868-18.075-1.934-12.102.633-22.265 7.528-29.81 7.61-8.328 19.998-12.76 39.855-14.257l8.47-.638-2.08-6.223c-4.826-14.422-6.357-24.813-6.37-43.255-.012-14.923.28-18.513 2.1-25.724 2.283-9.048 8.483-23.034 13.345-30.1 14.76-21.45 43.505-38.425 70.535-41.65 30.628-3.655 64.47 12.073 89.668 41.673l5.955 6.995 2.765-4.174c1.52-2.296 5.74-6.93 9.376-10.295 18.382-17.02 43.436-20.676 73.352-10.705 12.158 4.052 21.315 9.53 29.64 17.733 12.752 12.562 18.16 25.718 18.19 44.26l.02 10.98 2.312-3.01c15.64-20.365 42.29-20.485 62.438-.28 3.644 3.653 7.558 8.593 8.697 10.976 4.895 10.24 5.932 25.688 2.486 37.046-.76 2.507-1.388 4.816-1.393 5.13-.006.316 6.845.87 15.224 1.234 53.06 2.297 76.356 12.98 81.817 37.526 3.554 15.973-3.71 28.604-19.566 34.02-4.554 1.555-17.922 1.655-234.517 1.757-126.327.06-233.497-.21-238.154-.597z"/></svg>');
|
||||||
}
|
}
|
||||||
|
|
||||||
.float-3 {
|
.float-3 {
|
||||||
@ -417,8 +369,9 @@
|
|||||||
height: 140px;
|
height: 140px;
|
||||||
right: 110px;
|
right: 110px;
|
||||||
top: -30px;
|
top: -30px;
|
||||||
animation-delay: 0.1s;
|
animation-duration: 4s;
|
||||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 388.125 202.5" height="140" width="267"><path fill="#{hex-color(lighten($ui-base-color, 26%))}" d="M181.37 201.458c-17.184-1.81-36.762-8.944-49.523-18.05l-5.774-4.12-8.074 2.63c-11.468 3.738-21.382 4.962-35.815 4.422-14.79-.554-24.577-2.845-36.716-8.594-15.483-7.332-28.498-19.98-35.985-34.968C2.44 128.675-.94 108.435.9 91.356c3.362-31.234 18.197-53.698 43.63-66.074 12.803-6.23 22.384-8.55 37.655-9.122 14.433-.54 24.347.684 35.814 4.42l8.073 2.633 5.635-4.01c24.81-17.656 60.007-23.332 92.914-14.985 10.11 2.565 25.498 9.62 33.102 15.178l5.068 3.704 7.632-2.564c10.89-3.66 21.086-4.916 35.516-4.376 45.816 1.716 76.422 30.03 81.285 75.196 1.84 17.08-1.54 37.32-8.585 51.422-7.487 14.99-20.502 27.636-35.984 34.968-12.14 5.75-21.926 8.04-36.716 8.593-14.43.54-24.626-.716-35.516-4.376l-7.632-2.564-5.068 3.704c-12.844 9.387-32.714 16.488-51.545 18.42-10.607 1.09-13.916 1.08-24.81-.066z"/></svg>');
|
animation-delay: 0.5s;
|
||||||
|
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 388.125 202.5" height="140" width="267"><path fill="#{hex-color($ui-base-lighter-color)}" d="M181.37 201.458c-17.184-1.81-36.762-8.944-49.523-18.05l-5.774-4.12-8.074 2.63c-11.468 3.738-21.382 4.962-35.815 4.422-14.79-.554-24.577-2.845-36.716-8.594-15.483-7.332-28.498-19.98-35.985-34.968C2.44 128.675-.94 108.435.9 91.356c3.362-31.234 18.197-53.698 43.63-66.074 12.803-6.23 22.384-8.55 37.655-9.122 14.433-.54 24.347.684 35.814 4.42l8.073 2.633 5.635-4.01c24.81-17.656 60.007-23.332 92.914-14.985 10.11 2.565 25.498 9.62 33.102 15.178l5.068 3.704 7.632-2.564c10.89-3.66 21.086-4.916 35.516-4.376 45.816 1.716 76.422 30.03 81.285 75.196 1.84 17.08-1.54 37.32-8.585 51.422-7.487 14.99-20.502 27.636-35.984 34.968-12.14 5.75-21.926 8.04-36.716 8.593-14.43.54-24.626-.716-35.516-4.376l-7.632-2.564-5.068 3.704c-12.844 9.387-32.714 16.488-51.545 18.42-10.607 1.09-13.916 1.08-24.81-.066z"/></svg>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -500,13 +453,15 @@
|
|||||||
.brand {
|
.brand {
|
||||||
a {
|
a {
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
color: $white;
|
color: $white;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
height: 32px;
|
||||||
margin-right: 10px;
|
position: relative;
|
||||||
|
top: 4px;
|
||||||
|
left: -10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -530,6 +485,42 @@
|
|||||||
padding: 50px 0;
|
padding: 50px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.extended-description {
|
||||||
|
padding: 50px 0;
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol {
|
||||||
|
list-style: inherit;
|
||||||
|
margin-left: 20px;
|
||||||
|
|
||||||
|
&[type='a'] {
|
||||||
|
list-style-type: lower-alpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
&[type='i'] {
|
||||||
|
list-style-type: lower-roman;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li > ol,
|
||||||
|
li > ul {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p,
|
||||||
|
li {
|
||||||
|
font: 16px/28px 'mastodon-font-sans-serif', sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
color: $ui-base-lighter-color;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: $ui-highlight-color;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-family: 'mastodon-font-display', sans-serif;
|
font-family: 'mastodon-font-display', sans-serif;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
@ -542,7 +533,7 @@
|
|||||||
p {
|
p {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.features {
|
.features {
|
||||||
@ -584,6 +575,11 @@
|
|||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
font-weight: inherit;
|
font-weight: inherit;
|
||||||
color: $primary-text-color;
|
color: $primary-text-color;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $ui-secondary-color;
|
color: $ui-secondary-color;
|
||||||
@ -629,14 +625,14 @@
|
|||||||
display: block;
|
display: block;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-links {
|
.footer-links {
|
||||||
padding-bottom: 50px;
|
padding-bottom: 50px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
|
|
||||||
p {
|
p {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@ -653,6 +649,29 @@
|
|||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.information-board {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.information-board .container {
|
||||||
|
padding-right: 20px;
|
||||||
|
|
||||||
|
.panel {
|
||||||
|
position: static;
|
||||||
|
margin-top: 30px;
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
.panel-header {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.information-board .section {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.header-wrapper .mascot {
|
.header-wrapper .mascot {
|
||||||
left: 20px;
|
left: 20px;
|
||||||
}
|
}
|
||||||
@ -700,10 +719,25 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links a {
|
||||||
|
padding: 12px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
.heading h1 {
|
.heading h1 {
|
||||||
padding: 30px 0;
|
padding: 30px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.links .brand img {
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.hero {
|
.hero {
|
||||||
.simple_form,
|
.simple_form,
|
||||||
.closed-registrations-message {
|
.closed-registrations-message {
|
||||||
|
@ -107,7 +107,7 @@
|
|||||||
.icon-button {
|
.icon-button {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
border: none;
|
border: none;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@ -145,7 +145,7 @@
|
|||||||
&:hover,
|
&:hover,
|
||||||
&:active,
|
&:active,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
@ -185,7 +185,7 @@
|
|||||||
&:hover,
|
&:hover,
|
||||||
&:active,
|
&:active,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
transition: color 200ms ease-out;
|
transition: color 200ms ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -807,7 +807,7 @@
|
|||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
padding-left: 18px;
|
padding-left: 18px;
|
||||||
width: 120px;
|
width: 120px;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@ -816,7 +816,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.status__display-name {
|
.status__display-name {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status__info .status__display-name {
|
.status__info .status__display-name {
|
||||||
@ -865,13 +865,13 @@
|
|||||||
|
|
||||||
.status__prepend {
|
.status__prepend {
|
||||||
margin: -10px 0 10px;
|
margin: -10px 0 10px;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
padding: 8px 0 2px;
|
padding: 8px 0 2px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.status__display-name strong {
|
.status__display-name strong {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -963,7 +963,7 @@
|
|||||||
|
|
||||||
.detailed-status__meta {
|
.detailed-status__meta {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
}
|
}
|
||||||
@ -1096,6 +1096,28 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.account__disclaimer {
|
||||||
|
padding: 10px;
|
||||||
|
border-top: 1px solid lighten($ui-base-color, 8%);
|
||||||
|
color: $ui-base-lighter-color;
|
||||||
|
|
||||||
|
strong {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
font-weight: 500;
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: underline;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus,
|
||||||
|
&:active {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.account__header__content {
|
.account__header__content {
|
||||||
color: $ui-primary-color;
|
color: $ui-primary-color;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@ -1238,7 +1260,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
abbr {
|
abbr {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1332,11 +1354,11 @@
|
|||||||
.muted {
|
.muted {
|
||||||
.status__content p,
|
.status__content p,
|
||||||
.status__content a {
|
.status__content a {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status__display-name strong {
|
.status__display-name strong {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status__avatar, .emojione {
|
.status__avatar, .emojione {
|
||||||
@ -1344,7 +1366,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
a.status__content__spoiler-link {
|
a.status__content__spoiler-link {
|
||||||
background: lighten($ui-base-color, 26%);
|
background: $ui-base-lighter-color;
|
||||||
color: lighten($ui-base-color, 4%);
|
color: lighten($ui-base-color, 4%);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@ -1560,7 +1582,7 @@
|
|||||||
.static-content {
|
.static-content {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
@ -2041,7 +2063,7 @@
|
|||||||
|
|
||||||
.column-subheading {
|
.column-subheading {
|
||||||
background: $ui-base-color;
|
background: $ui-base-color;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
padding: 8px 20px;
|
padding: 8px 20px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
@ -2161,7 +2183,7 @@
|
|||||||
|
|
||||||
.getting-started__wrapper {
|
.getting-started__wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
flex: 0 0 auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.getting-started__footer {
|
.getting-started__footer {
|
||||||
@ -2180,7 +2202,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2244,7 +2266,7 @@ button.icon-button.active i.fa-retweet {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
border: 1px solid lighten($ui-base-color, 8%);
|
border: 1px solid lighten($ui-base-color, 8%);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
margin-top: 14px;
|
margin-top: 14px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@ -2339,7 +2361,7 @@ button.icon-button.active i.fa-retweet {
|
|||||||
|
|
||||||
.load-more {
|
.load-more {
|
||||||
display: block;
|
display: block;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border: 0;
|
border: 0;
|
||||||
font-size: inherit;
|
font-size: inherit;
|
||||||
@ -2529,11 +2551,72 @@ button.icon-button.active i.fa-retweet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.loading-indicator {
|
.loading-indicator {
|
||||||
color: $ui-secondary-color;
|
color: lighten($ui-base-color, 26%);
|
||||||
font-size: 16px;
|
font-size: 12px;
|
||||||
font-weight: 500;
|
font-weight: 400;
|
||||||
padding-top: 120px;
|
text-transform: uppercase;
|
||||||
text-align: center;
|
overflow: visible;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
margin-left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
margin: 82px 0 0 50%;
|
||||||
|
white-space: nowrap;
|
||||||
|
animation: loader-label 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-indicator__figure {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 0 solid lighten($ui-base-color, 26%);
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: loader-figure 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes loader-figure {
|
||||||
|
0% {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
background-color: lighten($ui-base-color, 26%);
|
||||||
|
}
|
||||||
|
|
||||||
|
29% {
|
||||||
|
background-color: lighten($ui-base-color, 26%);
|
||||||
|
}
|
||||||
|
|
||||||
|
30% {
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
background-color: transparent;
|
||||||
|
border-width: 21px;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
border-width: 0;
|
||||||
|
opacity: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes loader-label {
|
||||||
|
0% { opacity: 0.25; }
|
||||||
|
30% { opacity: 1; }
|
||||||
|
100% { opacity: 0.25; }
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-error-cover {
|
.video-error-cover {
|
||||||
@ -2987,13 +3070,13 @@ button.icon-button.active i.fa-retweet {
|
|||||||
color: $ui-secondary-color;
|
color: $ui-secondary-color;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
border: 2px dashed lighten($ui-base-color, 26%);
|
border: 2px dashed $ui-base-lighter-color;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-progress {
|
.upload-progress {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
@ -3018,7 +3101,7 @@ button.icon-button.active i.fa-retweet {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 6px;
|
height: 6px;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
background: lighten($ui-base-color, 26%);
|
background: $ui-base-lighter-color;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
@ -3303,7 +3386,7 @@ button.icon-button.active i.fa-retweet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search-results__header {
|
.search-results__header {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
background: lighten($ui-base-color, 2%);
|
background: lighten($ui-base-color, 2%);
|
||||||
border-bottom: 1px solid darken($ui-base-color, 4%);
|
border-bottom: 1px solid darken($ui-base-color, 4%);
|
||||||
padding: 15px 10px;
|
padding: 15px 10px;
|
||||||
@ -3399,6 +3482,10 @@ button.icon-button.active i.fa-retweet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.media-modal__content {
|
||||||
|
background: $base-overlay-background;
|
||||||
|
}
|
||||||
|
|
||||||
.media-modal__close {
|
.media-modal__close {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 4px;
|
right: 4px;
|
||||||
@ -3897,7 +3984,7 @@ button.icon-button.active i.fa-retweet {
|
|||||||
|
|
||||||
.attachment-list__icon {
|
.attachment-list__icon {
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
padding: 8px 18px;
|
padding: 8px 18px;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
border-right: 1px solid lighten($ui-base-color, 8%);
|
border-right: 1px solid lighten($ui-base-color, 8%);
|
||||||
@ -3927,7 +4014,7 @@ button.icon-button.active i.fa-retweet {
|
|||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@ -4124,7 +4211,7 @@ button.icon-button.active i.fa-retweet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.account-section-headline {
|
.account-section-headline {
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
background: lighten($ui-base-color, 2%);
|
background: lighten($ui-base-color, 2%);
|
||||||
border-bottom: 1px solid lighten($ui-base-color, 4%);
|
border-bottom: 1px solid lighten($ui-base-color, 4%);
|
||||||
padding: 15px 10px;
|
padding: 15px 10px;
|
||||||
@ -4160,10 +4247,24 @@ button.icon-button.active i.fa-retweet {
|
|||||||
noscript {
|
noscript {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
div {
|
img {
|
||||||
font-size: 20px;
|
width: 200px;
|
||||||
margin: 20px 0;
|
opacity: 0.5;
|
||||||
|
animation: flicker 4s infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div {
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 30px auto;
|
||||||
|
color: $ui-secondary-color;
|
||||||
|
max-width: 400px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes flicker {
|
||||||
|
0% { opacity: 1; }
|
||||||
|
30% { opacity: 0.75; }
|
||||||
|
100% { opacity: 1; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 1024px) and (max-height: 400px) {
|
@media screen and (max-width: 1024px) and (max-height: 400px) {
|
||||||
|
@ -23,8 +23,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
width: 32px;
|
height: 42px;
|
||||||
height: 32px;
|
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ code {
|
|||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $ui-primary-color;
|
color: $ui-primary-color;
|
||||||
@ -308,7 +308,7 @@ code {
|
|||||||
padding: 7px 4px;
|
padding: 7px 4px;
|
||||||
padding-bottom: 9px;
|
padding-bottom: 9px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: lighten($ui-base-color, 26%);
|
color: $ui-base-lighter-color;
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
|
@ -36,6 +36,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.with-header {
|
||||||
|
.entry {
|
||||||
|
&:first-child {
|
||||||
|
&,
|
||||||
|
.detailed-status.light,
|
||||||
|
.status.light {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.status.light {
|
.status.light {
|
||||||
padding: 14px 14px 14px (48px + 14px * 2);
|
padding: 14px 14px 14px (48px + 14px * 2);
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -247,7 +259,9 @@
|
|||||||
border: medium none;
|
border: medium none;
|
||||||
display: block;
|
display: block;
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
margin-right: 2px;
|
margin-right: 2px;
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
|
@ -23,6 +23,7 @@ $error-value-color: $error-red !default;
|
|||||||
|
|
||||||
// Tell UI to use selected colors
|
// Tell UI to use selected colors
|
||||||
$ui-base-color: $classic-base-color !default; // Darkest
|
$ui-base-color: $classic-base-color !default; // Darkest
|
||||||
|
$ui-base-lighter-color: lighten($ui-base-color, 26%) !default; // Lighter darkest
|
||||||
$ui-primary-color: $classic-primary-color !default; // Lighter
|
$ui-primary-color: $classic-primary-color !default; // Lighter
|
||||||
$ui-secondary-color: $classic-secondary-color !default; // Lightest
|
$ui-secondary-color: $classic-secondary-color !default; // Lightest
|
||||||
$ui-highlight-color: $classic-highlight-color !default; // Vibrant
|
$ui-highlight-color: $classic-highlight-color !default; // Vibrant
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
class DomainBlock < ApplicationRecord
|
class DomainBlock < ApplicationRecord
|
||||||
enum severity: [:silence, :suspend]
|
enum severity: [:silence, :suspend, :noop]
|
||||||
|
|
||||||
attr_accessor :retroactive
|
attr_accessor :retroactive
|
||||||
|
|
||||||
|
@ -53,6 +53,7 @@ class User < ApplicationRecord
|
|||||||
scope :admins, -> { where(admin: true) }
|
scope :admins, -> { where(admin: true) }
|
||||||
scope :confirmed, -> { where.not(confirmed_at: nil) }
|
scope :confirmed, -> { where.not(confirmed_at: nil) }
|
||||||
scope :inactive, -> { where(arel_table[:current_sign_in_at].lt(ACTIVE_DURATION.ago)) }
|
scope :inactive, -> { where(arel_table[:current_sign_in_at].lt(ACTIVE_DURATION.ago)) }
|
||||||
|
scope :active, -> { confirmed.where(arel_table[:current_sign_in_at].gteq(ACTIVE_DURATION.ago)).joins(:account).where(accounts: { suspended: false }) }
|
||||||
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) }
|
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) }
|
||||||
scope :with_recent_ip_address, ->(value) { where(arel_table[:current_sign_in_ip].eq(value).or(arel_table[:last_sign_in_ip].eq(value))) }
|
scope :with_recent_ip_address, ->(value) { where(arel_table[:current_sign_in_ip].eq(value).or(arel_table[:last_sign_in_ip].eq(value))) }
|
||||||
|
|
||||||
|
@ -11,16 +11,16 @@ class BlockDomainService < BaseService
|
|||||||
private
|
private
|
||||||
|
|
||||||
def process_domain_block
|
def process_domain_block
|
||||||
|
clear_media! if domain_block.reject_media?
|
||||||
if domain_block.silence?
|
if domain_block.silence?
|
||||||
silence_accounts!
|
silence_accounts!
|
||||||
else
|
elsif domain_block.suspend?
|
||||||
suspend_accounts!
|
suspend_accounts!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def silence_accounts!
|
def silence_accounts!
|
||||||
blocked_domain_accounts.in_batches.update_all(silenced: true)
|
blocked_domain_accounts.in_batches.update_all(silenced: true)
|
||||||
clear_media! if domain_block.reject_media?
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def clear_media!
|
def clear_media!
|
||||||
|
@ -10,7 +10,7 @@ class UnblockDomainService < BaseService
|
|||||||
end
|
end
|
||||||
|
|
||||||
def process_retroactive_updates
|
def process_retroactive_updates
|
||||||
blocked_accounts.in_batches.update_all(update_options)
|
blocked_accounts.in_batches.update_all(update_options) unless domain_block.noop?
|
||||||
end
|
end
|
||||||
|
|
||||||
def blocked_accounts
|
def blocked_accounts
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
.panel
|
.panel
|
||||||
.panel-header= t 'about.contact'
|
.panel-header
|
||||||
|
= succeed ':' do
|
||||||
|
= t 'about.contact'
|
||||||
|
%span{ title: contact.site_contact_email.presence }= contact.site_contact_email.presence
|
||||||
.panel-body
|
.panel-body
|
||||||
- if contact.contact_account
|
- if contact.contact_account
|
||||||
.owner
|
.owner
|
||||||
@ -8,8 +11,9 @@
|
|||||||
= link_to TagManager.instance.url_for(contact.contact_account) do
|
= link_to TagManager.instance.url_for(contact.contact_account) do
|
||||||
%span.display_name.emojify= display_name(contact.contact_account)
|
%span.display_name.emojify= display_name(contact.contact_account)
|
||||||
%span.username @#{contact.contact_account.acct}
|
%span.username @#{contact.contact_account.acct}
|
||||||
|
- else
|
||||||
- unless contact.site_contact_email.blank?
|
.owner
|
||||||
.contact-email
|
.avatar= image_tag full_asset_url('avatars/original/missing.png', skip_pipeline: true)
|
||||||
= t 'about.business_email'
|
.name
|
||||||
%strong= contact.site_contact_email
|
%span.display_name= t 'about.contact_missing'
|
||||||
|
%span.username= t 'about.contact_unavailable'
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
.panel
|
|
||||||
.panel-header= t 'about.links'
|
|
||||||
.panel-list
|
|
||||||
%ul
|
|
||||||
- if user_signed_in?
|
|
||||||
%li= link_to t('about.get_started'), root_path
|
|
||||||
- else
|
|
||||||
- if instance.open_registrations
|
|
||||||
%li= link_to t('about.get_started'), new_user_registration_path
|
|
||||||
%li= link_to t('auth.login'), new_user_session_path
|
|
||||||
%li= link_to t('about.terms'), terms_path
|
|
||||||
%li= link_to t('about.source_code'), 'https://github.com/chronister/mastodon'
|
|
@ -1,9 +0,0 @@
|
|||||||
.panel
|
|
||||||
.panel-header= t 'about.version'
|
|
||||||
.panel-body
|
|
||||||
- if @instance_presenter.commit_hash == ""
|
|
||||||
%strong= version.version_number
|
|
||||||
- else
|
|
||||||
%strong= version.version_number
|
|
||||||
%strong= "#{@instance_presenter.commit_hash}"
|
|
||||||
|
|
@ -1,16 +1,44 @@
|
|||||||
- content_for :page_title do
|
- content_for :page_title do
|
||||||
= site_hostname
|
= site_hostname
|
||||||
|
|
||||||
.wrapper.thicc
|
- content_for :header_tags do
|
||||||
.sidebar-layout
|
= javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
|
||||||
.main
|
|
||||||
.panel
|
|
||||||
%h2= site_hostname
|
|
||||||
|
|
||||||
- unless @instance_presenter.site_description.blank?
|
%meta{ property: 'og:site_name', content: site_title }/
|
||||||
%p!= @instance_presenter.site_description
|
%meta{ property: 'og:url', content: about_url }/
|
||||||
|
%meta{ property: 'og:type', content: 'website' }/
|
||||||
|
%meta{ property: 'og:title', content: site_hostname }/
|
||||||
|
%meta{ property: 'og:description', content: strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon_html')) }/
|
||||||
|
%meta{ property: 'og:image', content: asset_pack_path('mastodon_small.jpg', protocol: :request) }/
|
||||||
|
%meta{ property: 'og:image:width', content: '400' }/
|
||||||
|
%meta{ property: 'og:image:height', content: '400' }/
|
||||||
|
%meta{ property: 'twitter:card', content: 'summary' }/
|
||||||
|
|
||||||
|
.landing-page
|
||||||
|
.header-wrapper.compact
|
||||||
|
.header
|
||||||
|
.container.links
|
||||||
|
.brand
|
||||||
|
= link_to root_url do
|
||||||
|
= image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
|
||||||
|
|
||||||
|
%ul.nav
|
||||||
|
%li
|
||||||
|
- if user_signed_in?
|
||||||
|
= link_to t('settings.back'), root_url, class: 'webapp-btn'
|
||||||
|
- else
|
||||||
|
= link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
|
||||||
|
%li= link_to t('about.about_this'), about_more_path
|
||||||
|
%li= link_to t('about.other_instances'), 'https://joinmastodon.org/'
|
||||||
|
|
||||||
|
.container.hero
|
||||||
|
.heading
|
||||||
|
%h3= t('about.description_headline', domain: site_hostname)
|
||||||
|
%p= @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
|
||||||
|
|
||||||
.information-board
|
.information-board
|
||||||
|
.container
|
||||||
|
.information-board-sections
|
||||||
.section
|
.section
|
||||||
%span= t 'about.user_count_before'
|
%span= t 'about.user_count_before'
|
||||||
%strong= number_with_delimiter @instance_presenter.user_count
|
%strong= number_with_delimiter @instance_presenter.user_count
|
||||||
@ -23,11 +51,14 @@
|
|||||||
%span= t 'about.domain_count_before'
|
%span= t 'about.domain_count_before'
|
||||||
%strong= number_with_delimiter @instance_presenter.domain_count
|
%strong= number_with_delimiter @instance_presenter.domain_count
|
||||||
%span= t 'about.domain_count_after'
|
%span= t 'about.domain_count_after'
|
||||||
|
|
||||||
- unless @instance_presenter.site_extended_description.blank?
|
|
||||||
.panel!= @instance_presenter.site_extended_description
|
|
||||||
|
|
||||||
.sidebar
|
|
||||||
= render 'contact', contact: @instance_presenter
|
= render 'contact', contact: @instance_presenter
|
||||||
= render 'links', instance: @instance_presenter
|
|
||||||
= render 'version', version: @instance_presenter
|
.extended-description
|
||||||
|
.container
|
||||||
|
= @instance_presenter.site_extended_description.html_safe.presence || t('about.extended_description_html')
|
||||||
|
|
||||||
|
.footer-links
|
||||||
|
.container
|
||||||
|
%p
|
||||||
|
= link_to t('about.source_code'), 'https://github.com/tootsuite/mastodon'
|
||||||
|
= " (#{@instance_presenter.version_number})"
|
||||||
|
@ -24,8 +24,7 @@
|
|||||||
.container.links
|
.container.links
|
||||||
.brand
|
.brand
|
||||||
= link_to root_url do
|
= link_to root_url do
|
||||||
= image_tag asset_pack_path('logo.svg'), alt: '', role: 'presentation'
|
= image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
|
||||||
Mastodon
|
|
||||||
|
|
||||||
%ul.nav
|
%ul.nav
|
||||||
%li
|
%li
|
||||||
|
@ -1,8 +1,23 @@
|
|||||||
- content_for :page_title do
|
- content_for :page_title do
|
||||||
= t('terms.title', instance: site_hostname)
|
= t('terms.title', instance: site_hostname)
|
||||||
|
|
||||||
.wrapper
|
.landing-page
|
||||||
- if @instance_presenter.site_terms.present?
|
.header-wrapper.compact
|
||||||
= raw @instance_presenter.site_terms
|
.header
|
||||||
|
.container.links
|
||||||
|
.brand
|
||||||
|
= link_to root_url do
|
||||||
|
= image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
|
||||||
|
|
||||||
|
%ul.nav
|
||||||
|
%li
|
||||||
|
- if user_signed_in?
|
||||||
|
= link_to t('settings.back'), root_url, class: 'webapp-btn'
|
||||||
- else
|
- else
|
||||||
= t('terms.body_html')
|
= link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
|
||||||
|
%li= link_to t('about.about_this'), about_more_path
|
||||||
|
%li= link_to t('about.other_instances'), 'https://joinmastodon.org/'
|
||||||
|
|
||||||
|
.extended-description
|
||||||
|
.container
|
||||||
|
= @instance_presenter.site_terms.html_safe.presence || t('terms.body_html')
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
.accounts-grid
|
.accounts-grid
|
||||||
= render 'nothing_here'
|
= render 'nothing_here'
|
||||||
- else
|
- else
|
||||||
.activity-stream
|
.activity-stream.with-header
|
||||||
= render partial: 'stream_entries/status', collection: @statuses, as: :status
|
= render partial: 'stream_entries/status', collection: @statuses, as: :status
|
||||||
|
|
||||||
.pagination
|
|
||||||
- if @statuses.size == 20
|
- if @statuses.size == 20
|
||||||
|
.pagination
|
||||||
= link_to safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), short_account_url(@account, max_id: @statuses.last.id), class: 'next', rel: 'next'
|
= link_to safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), short_account_url(@account, max_id: @statuses.last.id), class: 'next', rel: 'next'
|
||||||
|
@ -3,6 +3,11 @@
|
|||||||
|
|
||||||
= simple_form_for @domain_block, url: admin_domain_block_path(@domain_block), method: :delete do |f|
|
= simple_form_for @domain_block, url: admin_domain_block_path(@domain_block), method: :delete do |f|
|
||||||
|
|
||||||
|
- if (@domain_block.noop?)
|
||||||
|
= f.input :retroactive,
|
||||||
|
as: :hidden,
|
||||||
|
input_html: { :value => "0" }
|
||||||
|
- else
|
||||||
= f.input :retroactive,
|
= f.input :retroactive,
|
||||||
as: :boolean,
|
as: :boolean,
|
||||||
wrapper: :with_label,
|
wrapper: :with_label,
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
|
.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
|
||||||
%noscript
|
%noscript
|
||||||
= image_tag asset_pack_path('logo.png')
|
= image_tag asset_pack_path('logo.svg'), alt: 'Mastodon'
|
||||||
|
|
||||||
%div
|
%div
|
||||||
= t('errors.noscript')
|
= t('errors.noscript')
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
.sidebar-wrapper
|
.sidebar-wrapper
|
||||||
.sidebar
|
.sidebar
|
||||||
= link_to root_path do
|
= link_to root_path do
|
||||||
= image_tag asset_pack_path('logo.png'), class: 'logo'
|
= image_tag asset_pack_path('logo.svg'), class: 'logo', alt: 'Mastodon'
|
||||||
|
|
||||||
= render_navigation
|
= render_navigation
|
||||||
.content-wrapper
|
.content-wrapper
|
||||||
|
@ -6,8 +6,7 @@
|
|||||||
.logo-container
|
.logo-container
|
||||||
%h1
|
%h1
|
||||||
= link_to root_path do
|
= link_to root_path do
|
||||||
= image_tag asset_pack_path('logo.svg')
|
= image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
|
||||||
Mastodon
|
|
||||||
|
|
||||||
.form-container
|
.form-container
|
||||||
= render 'flashes'
|
= render 'flashes'
|
||||||
|
@ -2,7 +2,7 @@ object false
|
|||||||
|
|
||||||
node(:name) { Setting.site_title }
|
node(:name) { Setting.site_title }
|
||||||
node(:short_name) { Setting.site_title }
|
node(:short_name) { Setting.site_title }
|
||||||
node(:description) { strip_tags(Setting.site_description.presence || I18n.t('about.about_mastodon')) }
|
node(:description) { strip_tags(Setting.site_description.presence || I18n.t('about.about_mastodon_html')) }
|
||||||
node(:icons) { [{ src: '/android-chrome-192x192.png', sizes: '192x192', type: 'image/png' }] }
|
node(:icons) { [{ src: '/android-chrome-192x192.png', sizes: '192x192', type: 'image/png' }] }
|
||||||
node(:theme_color) { '#282c37' }
|
node(:theme_color) { '#282c37' }
|
||||||
node(:background_color) { '#d9e1e8' }
|
node(:background_color) { '#d9e1e8' }
|
||||||
|
@ -8,7 +8,7 @@ end
|
|||||||
|
|
||||||
node(:links) do
|
node(:links) do
|
||||||
[
|
[
|
||||||
{ rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: account_url(@account) },
|
{ rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: short_account_url(@account) },
|
||||||
{ rel: 'http://schemas.google.com/g/2010#updates-from', type: 'application/atom+xml', href: account_url(@account, format: 'atom') },
|
{ rel: 'http://schemas.google.com/g/2010#updates-from', type: 'application/atom+xml', href: account_url(@account, format: 'atom') },
|
||||||
{ rel: 'self', type: 'application/activity+json', href: account_url(@account) },
|
{ rel: 'self', type: 'application/activity+json', href: account_url(@account) },
|
||||||
{ rel: 'salmon', href: api_salmon_url(@account.id) },
|
{ rel: 'salmon', href: api_salmon_url(@account.id) },
|
||||||
|
@ -3,7 +3,7 @@ Nokogiri::XML::Builder.new do |xml|
|
|||||||
xml.Subject @canonical_account_uri
|
xml.Subject @canonical_account_uri
|
||||||
xml.Alias short_account_url(@account)
|
xml.Alias short_account_url(@account)
|
||||||
xml.Alias account_url(@account)
|
xml.Alias account_url(@account)
|
||||||
xml.Link(rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: TagManager.instance.url_for(@account))
|
xml.Link(rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: short_account_url(@account))
|
||||||
xml.Link(rel: 'http://schemas.google.com/g/2010#updates-from', type: 'application/atom+xml', href: account_url(@account, format: 'atom'))
|
xml.Link(rel: 'http://schemas.google.com/g/2010#updates-from', type: 'application/atom+xml', href: account_url(@account, format: 'atom'))
|
||||||
xml.Link(rel: 'self', type: 'application/activity+json', href: account_url(@account))
|
xml.Link(rel: 'self', type: 'application/activity+json', href: account_url(@account))
|
||||||
xml.Link(rel: 'salmon', href: api_salmon_url(@account.id))
|
xml.Link(rel: 'salmon', href: api_salmon_url(@account.id))
|
||||||
|
13
app/workers/scheduler/user_cleanup_scheduler.rb
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
require 'sidekiq-scheduler'
|
||||||
|
|
||||||
|
class Scheduler::UserCleanupScheduler
|
||||||
|
include Sidekiq::Worker
|
||||||
|
|
||||||
|
def perform
|
||||||
|
User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).find_in_batches do |batch|
|
||||||
|
Account.where(id: batch.map(&:account_id)).delete_all
|
||||||
|
User.where(id: batch.map(&:id)).delete_all
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -1,6 +1,6 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
lock '3.8.1'
|
lock '3.8.2'
|
||||||
|
|
||||||
set :repo_url, ENV.fetch('REPO', 'https://github.com/tootsuite/mastodon.git')
|
set :repo_url, ENV.fetch('REPO', 'https://github.com/tootsuite/mastodon.git')
|
||||||
set :branch, ENV.fetch('BRANCH', 'master')
|
set :branch, ENV.fetch('BRANCH', 'master')
|
||||||
|
12
config/locales/activerecord.nl.yml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
nl:
|
||||||
|
activerecord:
|
||||||
|
errors:
|
||||||
|
models:
|
||||||
|
account:
|
||||||
|
attributes:
|
||||||
|
username:
|
||||||
|
invalid: alleen letters, nummers en underscores
|
||||||
|
status:
|
||||||
|
attributes:
|
||||||
|
reblog:
|
||||||
|
taken: van toot bestaat al
|
@ -1,21 +1,17 @@
|
|||||||
---
|
---
|
||||||
ar:
|
ar:
|
||||||
about:
|
about:
|
||||||
about_mastodon: ماستدون شبكة إجتماعية <em>حرة و مفتوحة المصدر</em>. هو بديل <em>لامركزي</em> لمنصات تجارية ، يمكنك من تجنب احتكار شركة واحدة للإتصالات الخاصة بك. يمكنك اختيار أي خادم تثق فيه. أيهما تختار، يمكنك التفاعل مع أي شخص آخر على الشبكة. يمكن لأي شخص تنصيب و تشغيل خادم ماستدون خاص به والمشاركة في <em>الشبكات الاجتماعية</em> بكل شفافية.
|
about_mastodon_html: ماستدون شبكة إجتماعية <em>حرة و مفتوحة المصدر</em>. هو بديل <em>لامركزي</em> لمنصات تجارية ، يمكنك من تجنب احتكار شركة واحدة للإتصالات الخاصة بك. يمكنك اختيار أي خادم تثق فيه. أيهما تختار، يمكنك التفاعل مع أي شخص آخر على الشبكة. يمكن لأي شخص تنصيب و تشغيل خادم ماستدون خاص به والمشاركة في <em>الشبكات الاجتماعية</em> بكل شفافية.
|
||||||
about_this: عن مثيل الخادوم هذا
|
about_this: عن مثيل الخادوم هذا
|
||||||
business_email: 'البريد الإلكتروني المهني :'
|
|
||||||
closed_registrations: التسجيلات في مثيل الخادوم هذا مُغلقة حاليًا.
|
closed_registrations: التسجيلات في مثيل الخادوم هذا مُغلقة حاليًا.
|
||||||
contact: للتواصل معنا
|
contact: للتواصل معنا
|
||||||
description_headline: ما هو %{domain}?
|
description_headline: ما هو %{domain}?
|
||||||
domain_count_after: خوادم أخرى
|
domain_count_after: خوادم أخرى
|
||||||
domain_count_before: متصل بـ
|
domain_count_before: متصل بـ
|
||||||
get_started: إبدأ الآن
|
|
||||||
links: الروابط
|
|
||||||
other_instances: خوادم أخرى
|
other_instances: خوادم أخرى
|
||||||
source_code: الشفرة المصدرية
|
source_code: الشفرة المصدرية
|
||||||
status_count_after: منشورا
|
status_count_after: منشورا
|
||||||
status_count_before: نشروا
|
status_count_before: نشروا
|
||||||
terms: شروط الاستعمال
|
|
||||||
user_count_after: مستخدم
|
user_count_after: مستخدم
|
||||||
user_count_before: يستضيف
|
user_count_before: يستضيف
|
||||||
accounts:
|
accounts:
|
||||||
|
@ -1,21 +1,17 @@
|
|||||||
---
|
---
|
||||||
bg:
|
bg:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon е <em>безплатен</em> сървър с <em>отворен код</em> за социални мрежи. Като <em>децентрализирана</em> алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне Mastodon и лесно да вземе участие в <em>социалната мрежа</em>.
|
about_mastodon_html: Mastodon е <em>безплатен</em> сървър с <em>отворен код</em> за социални мрежи. Като <em>децентрализирана</em> алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне Mastodon и лесно да вземе участие в <em>социалната мрежа</em>.
|
||||||
about_this: За тази инстанция
|
about_this: За тази инстанция
|
||||||
business_email: 'Служебен e-mail:'
|
|
||||||
closed_registrations: В момента регистрациите за тази инстанция са затворени.
|
closed_registrations: В момента регистрациите за тази инстанция са затворени.
|
||||||
contact: За контакти
|
contact: За контакти
|
||||||
description_headline: Какво е %{domain}?
|
description_headline: Какво е %{domain}?
|
||||||
domain_count_after: други инстанции
|
domain_count_after: други инстанции
|
||||||
domain_count_before: Свързани към
|
domain_count_before: Свързани към
|
||||||
get_started: Първи стъпки
|
|
||||||
links: Връзки
|
|
||||||
other_instances: Други инстанции
|
other_instances: Други инстанции
|
||||||
source_code: Програмен код
|
source_code: Програмен код
|
||||||
status_count_after: публикации
|
status_count_after: публикации
|
||||||
status_count_before: Написали
|
status_count_before: Написали
|
||||||
terms: Условия
|
|
||||||
user_count_after: потребители
|
user_count_after: потребители
|
||||||
user_count_before: Дом на
|
user_count_before: Дом на
|
||||||
accounts:
|
accounts:
|
||||||
|
@ -1,24 +1,19 @@
|
|||||||
---
|
---
|
||||||
ca:
|
ca:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon és un servidor de xarxa social <em>lliure i de codi obert</em>. Una alternativa <em>descentralitzada</em> a plataformes comercials, que evita el risc que una única companyia monopolitzi la teva comunicació. Qualsevol pot executar Mastodon i participar sense problemes en la <em>xarxa social</em>.
|
about_mastodon_html: Mastodon és un servidor de xarxa social <em>lliure i de codi obert</em>. Una alternativa <em>descentralitzada</em> a plataformes comercials, que evita el risc que una única companyia monopolitzi la teva comunicació. Qualsevol pot executar Mastodon i participar sense problemes en la <em>xarxa social</em>.
|
||||||
about_this: Sobre aquesta instància
|
about_this: Sobre aquesta instància
|
||||||
business_email: 'Adreça de contacte:'
|
|
||||||
closed_registrations: Els registres estan actualment tancats en aquesta instància.
|
closed_registrations: Els registres estan actualment tancats en aquesta instància.
|
||||||
contact: Contacte
|
contact: Contacte
|
||||||
description_headline: Què es %{domain}?
|
description_headline: Què es %{domain}?
|
||||||
domain_count_after: altres instàncies
|
domain_count_after: altres instàncies
|
||||||
domain_count_before: Connectat a
|
domain_count_before: Connectat a
|
||||||
get_started: Començar
|
|
||||||
links: Vincles
|
|
||||||
other_instances: Altres instàncies
|
other_instances: Altres instàncies
|
||||||
source_code: Codi font
|
source_code: Codi font
|
||||||
status_count_after: estats
|
status_count_after: estats
|
||||||
status_count_before: Que han escrit
|
status_count_before: Que han escrit
|
||||||
terms: Termes
|
|
||||||
user_count_after: usuaris registrats
|
user_count_after: usuaris registrats
|
||||||
user_count_before: Tenim
|
user_count_before: Tenim
|
||||||
version: Versió
|
|
||||||
accounts:
|
accounts:
|
||||||
follow: Seguir
|
follow: Seguir
|
||||||
followers: Seguidors
|
followers: Seguidors
|
||||||
|
@ -1,24 +1,19 @@
|
|||||||
---
|
---
|
||||||
de:
|
de:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon ist ein <em>freier, quelloffener</em> sozialer Netzwerkserver. Als <em>dezentralisierte</em> Alternative zu kommerziellen Plattformen verhindert es die Risiken, die entstehen, wenn eine einzelne Firma deine Kommunikation monopolisiert. Jeder kann Mastodon verwenden und ganz einfach am <em>sozialen Netzwerk</em> teilnehmen.
|
about_mastodon_html: Mastodon ist ein <em>freier, quelloffener</em> sozialer Netzwerkserver. Als <em>dezentralisierte</em> Alternative zu kommerziellen Plattformen verhindert es die Risiken, die entstehen, wenn eine einzelne Firma deine Kommunikation monopolisiert. Jeder kann Mastodon verwenden und ganz einfach am <em>sozialen Netzwerk</em> teilnehmen.
|
||||||
about_this: Über diese Instanz
|
about_this: Über diese Instanz
|
||||||
business_email: 'Geschäftliche E-Mail:'
|
|
||||||
closed_registrations: Die Registrierung ist auf dieser Instanz momentan geschlossen.
|
closed_registrations: Die Registrierung ist auf dieser Instanz momentan geschlossen.
|
||||||
contact: Kontakt
|
contact: Kontakt
|
||||||
description_headline: Was ist %{domain}?
|
description_headline: Was ist %{domain}?
|
||||||
domain_count_after: andere Instanzen
|
domain_count_after: andere Instanzen
|
||||||
domain_count_before: Verbunden mit
|
domain_count_before: Verbunden mit
|
||||||
get_started: Erste Schritte
|
|
||||||
links: Links
|
|
||||||
other_instances: Andere Instanzen
|
other_instances: Andere Instanzen
|
||||||
source_code: Quellcode
|
source_code: Quellcode
|
||||||
status_count_after: Beiträge verfassten
|
status_count_after: Beiträge verfassten
|
||||||
status_count_before: die
|
status_count_before: die
|
||||||
terms: AGB
|
|
||||||
user_count_after: Benutzer
|
user_count_after: Benutzer
|
||||||
user_count_before: Heimat für
|
user_count_before: Heimat für
|
||||||
version: Version
|
|
||||||
accounts:
|
accounts:
|
||||||
follow: Folgen
|
follow: Folgen
|
||||||
followers: Folgende
|
followers: Folgende
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
nl:
|
nl:
|
||||||
devise:
|
devise:
|
||||||
confirmations:
|
confirmations:
|
||||||
confirmed: Je account is bevestigd.
|
confirmed: Jouw account is bevestigd.
|
||||||
send_instructions: Je ontvangt via e-mail instructies hoe je jouw account kunt bevestigen. Kijk tussen je spam wanneer niks werd ontvangen.
|
send_instructions: Je ontvangt via e-mail instructies hoe je jouw account kunt bevestigen. Kijk tussen je spam wanneer niks werd ontvangen.
|
||||||
send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je jouw account kunt bevestigen. Kijk tussen je spam wanneer niks werd ontvangen.
|
send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je jouw account kunt bevestigen. Kijk tussen je spam wanneer niks werd ontvangen.
|
||||||
failure:
|
failure:
|
||||||
@ -10,8 +10,8 @@ nl:
|
|||||||
inactive: Jouw account is nog niet geactiveerd.
|
inactive: Jouw account is nog niet geactiveerd.
|
||||||
invalid: Ongeldig e-mailadres of wachtwoord.
|
invalid: Ongeldig e-mailadres of wachtwoord.
|
||||||
invalid_token: Ongeldige bevestigingscode.
|
invalid_token: Ongeldige bevestigingscode.
|
||||||
last_attempt: Je hebt nog één poging over voordat jouw account geblokkeerd wordt.
|
last_attempt: Je hebt nog één poging over voordat jouw account wordt opgeschort.
|
||||||
locked: Jouw account is geblokkeerd.
|
locked: Jouw account is opgeschort.
|
||||||
not_found_in_database: Ongeldig e-mailadres of wachtwoord.
|
not_found_in_database: Ongeldig e-mailadres of wachtwoord.
|
||||||
timeout: Jouw sessie is verlopen, log opnieuw in.
|
timeout: Jouw sessie is verlopen, log opnieuw in.
|
||||||
unauthenticated: Je dient in te loggen of te registreren.
|
unauthenticated: Je dient in te loggen of te registreren.
|
||||||
@ -24,21 +24,21 @@ nl:
|
|||||||
reset_password_instructions:
|
reset_password_instructions:
|
||||||
subject: 'Mastodon: Wachtwoord opnieuw instellen'
|
subject: 'Mastodon: Wachtwoord opnieuw instellen'
|
||||||
unlock_instructions:
|
unlock_instructions:
|
||||||
subject: 'Mastodon: Instructies om account te deblokkeren'
|
subject: 'Mastodon: Instructies om opschorten account ongedaan te maken'
|
||||||
omniauth_callbacks:
|
omniauth_callbacks:
|
||||||
failure: Kon je niet aanmelden met jouw %{kind} account, omdat "%{reason}".
|
failure: Kon je niet aanmelden met jouw %{kind} account, omdat "%{reason}".
|
||||||
success: Successvol aangemeld met jouw %{kind} account.
|
success: Successvol aangemeld met jouw %{kind} account.
|
||||||
passwords:
|
passwords:
|
||||||
no_token: Je kunt deze pagina niet benaderen zonder dat je een e-mail om je wachtwoord opnieuw in te stellen hebt ontvangen.
|
no_token: Je kunt deze pagina niet benaderen zonder dat je een e-mail om je wachtwoord opnieuw in te stellen hebt ontvangen.
|
||||||
send_instructions: Je ontvangt via e-mail instructies hoe je jouw wachtwoord opnieuw moet instellen. Kijk tussen je spam wanneer niks werd ontvangen.
|
send_instructions: Je ontvangt via e-mail instructies hoe je jouw wachtwoord opnieuw moet instellen. Kijk tussen je spam wanneer niks werd ontvangen.
|
||||||
send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je jouw wachtwoord opnieuw moet instellen. Kijk tussen je spam wanneer niks werd ontvangen.
|
send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je jouw wachtwoord opnieuw kunt instellen. Kijk tussen je spam wanneer niks werd ontvangen.
|
||||||
updated: Jouw wachtwoord is gewijzigd. Je bent nu ingelogd.
|
updated: Jouw wachtwoord is gewijzigd. Je bent nu ingelogd.
|
||||||
updated_not_active: Jouw wachtwoord is gewijzigd.
|
updated_not_active: Jouw wachtwoord is gewijzigd.
|
||||||
registrations:
|
registrations:
|
||||||
destroyed: Jouw account is verwijderd. Wellicht tot ziens!
|
destroyed: Jouw account is verwijderd. Wellicht tot ziens!
|
||||||
signed_up: Je bent geregistreerd.
|
signed_up: Je bent geregistreerd.
|
||||||
signed_up_but_inactive: Je bent geregistreerd. Je kon alleen niet automatisch ingelogd worden omdat jouw account nog niet geactiveerd is.
|
signed_up_but_inactive: Je bent geregistreerd. Je kon alleen niet automatisch ingelogd worden omdat jouw account nog niet geactiveerd is.
|
||||||
signed_up_but_locked: Je bent ingeschreven. Je kon alleen niet automatisch ingelogd worden omdat jouw account geblokkeerd is.
|
signed_up_but_locked: Je bent ingeschreven. Je kon alleen niet automatisch ingelogd worden omdat jouw account is opgeschort.
|
||||||
signed_up_but_unconfirmed: Je ontvangt via e-mail instructies hoe je jouw account kunt activeren. Kijk tussen je spam wanneer niks werd ontvangen.
|
signed_up_but_unconfirmed: Je ontvangt via e-mail instructies hoe je jouw account kunt activeren. Kijk tussen je spam wanneer niks werd ontvangen.
|
||||||
update_needs_confirmation: Je hebt je e-mailadres succesvol gewijzigd, maar we moeten je nieuwe mailadres nog bevestigen. Controleer jouw e-mail en klik op de link in de mail om jouw e-mailadres te bevestigen. Kijk tussen je spam wanneer niks werd ontvangen.
|
update_needs_confirmation: Je hebt je e-mailadres succesvol gewijzigd, maar we moeten je nieuwe mailadres nog bevestigen. Controleer jouw e-mail en klik op de link in de mail om jouw e-mailadres te bevestigen. Kijk tussen je spam wanneer niks werd ontvangen.
|
||||||
updated: Jouw accountgegevens zijn opgeslagen.
|
updated: Jouw accountgegevens zijn opgeslagen.
|
||||||
@ -46,16 +46,16 @@ nl:
|
|||||||
signed_in: Je bent succesvol ingelogd.
|
signed_in: Je bent succesvol ingelogd.
|
||||||
signed_out: Je bent succesvol uitgelogd.
|
signed_out: Je bent succesvol uitgelogd.
|
||||||
unlocks:
|
unlocks:
|
||||||
send_instructions: Je ontvangt via e-mail instructies hoe je jouw account kunt deblokkeren. Kijk tussen je spam wanneer niks werd ontvangen.
|
send_instructions: Je ontvangt via e-mail instructies hoe je het opschorten van jouw account ongedaan kunt maken. Kijk tussen je spam wanneer niks werd ontvangen.
|
||||||
send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je jouw account kunt deblokkeren. Kijk tussen je spam wanneer niks werd ontvangen.
|
send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je het opschorten van jouw account ongedaan kunt maken. Kijk tussen je spam wanneer niks werd ontvangen.
|
||||||
unlocked: Jouw account is gedeblokkeerd. Je kunt nu weer inloggen.
|
unlocked: Jouw account is niet meer opgeschort. Je kunt nu weer inloggen.
|
||||||
errors:
|
errors:
|
||||||
messages:
|
messages:
|
||||||
already_confirmed: is reeds bevestigd
|
already_confirmed: is reeds bevestigd
|
||||||
confirmation_period_expired: moet worden bevestigd binnen %{period}, probeer het nog een keer
|
confirmation_period_expired: moet worden bevestigd binnen %{period}, probeer het nog een keer
|
||||||
expired: is verlopen, vraag een nieuwe aan
|
expired: is verlopen, vraag een nieuwe aan
|
||||||
not_found: niet gevonden
|
not_found: niet gevonden
|
||||||
not_locked: is niet geblokkeerd
|
not_locked: is niet opgeschort
|
||||||
not_saved:
|
not_saved:
|
||||||
one: '1 fout verhinderde het opslaan van deze %{resource}:'
|
one: '1 fout verhinderde het opslaan van deze %{resource}:'
|
||||||
other: "%{count} fouten verhinderden het opslaan van deze %{resource}:"
|
other: "%{count} fouten verhinderden het opslaan van deze %{resource}:"
|
||||||
|
@ -109,6 +109,6 @@ nl:
|
|||||||
application:
|
application:
|
||||||
title: OAuth-autorisatie vereist
|
title: OAuth-autorisatie vereist
|
||||||
scopes:
|
scopes:
|
||||||
follow: volg, blokkeer, deblokkeer en stop het volgen van accounts
|
follow: accounts te volgen, te negeren en te blokkeren.
|
||||||
read: lees jouw accountgegevens
|
read: jouw accountgegevens te lezen
|
||||||
write: namens jou plaatsen
|
write: namens jou berichten te plaatsen
|
||||||
|
@ -3,12 +3,16 @@ en:
|
|||||||
about:
|
about:
|
||||||
about_mastodon_html: Mastodon is a social network based on open web protocols and free, open-source software. It is decentralized like e-mail.
|
about_mastodon_html: Mastodon is a social network based on open web protocols and free, open-source software. It is decentralized like e-mail.
|
||||||
about_this: About
|
about_this: About
|
||||||
business_email: 'Business e-mail:'
|
|
||||||
closed_registrations: Registrations are currently closed on this instance. However! You can find a different instance to make an account on and get access to the very same network from there.
|
closed_registrations: Registrations are currently closed on this instance. However! You can find a different instance to make an account on and get access to the very same network from there.
|
||||||
contact: Contact
|
contact: Contact
|
||||||
|
contact_missing: Not set
|
||||||
|
contact_unavailable: N/A
|
||||||
description_headline: What is %{domain}?
|
description_headline: What is %{domain}?
|
||||||
domain_count_after: other instances
|
domain_count_after: other instances
|
||||||
domain_count_before: Connected to
|
domain_count_before: Connected to
|
||||||
|
extended_description_html: |
|
||||||
|
<h3>A good place for rules</h3>
|
||||||
|
<p>The extended description has not been set up yet.</p>
|
||||||
features:
|
features:
|
||||||
humane_approach_body: Learning from failures of other networks, Mastodon aims to make ethical design choices to combat the misuse of social media.
|
humane_approach_body: Learning from failures of other networks, Mastodon aims to make ethical design choices to combat the misuse of social media.
|
||||||
humane_approach_title: A more humane approach
|
humane_approach_title: A more humane approach
|
||||||
@ -20,18 +24,14 @@ en:
|
|||||||
within_reach_title: Always within reach
|
within_reach_title: Always within reach
|
||||||
find_another_instance: Find another instance
|
find_another_instance: Find another instance
|
||||||
generic_description: "%{domain} is one server in the network"
|
generic_description: "%{domain} is one server in the network"
|
||||||
get_started: Get started
|
|
||||||
hosted_on: Mastodon hosted on %{domain}
|
hosted_on: Mastodon hosted on %{domain}
|
||||||
learn_more: Learn more
|
learn_more: Learn more
|
||||||
links: Links
|
|
||||||
other_instances: Instance list
|
other_instances: Instance list
|
||||||
source_code: Source code
|
source_code: Source code
|
||||||
status_count_after: statuses
|
status_count_after: statuses
|
||||||
status_count_before: Who authored
|
status_count_before: Who authored
|
||||||
terms: Terms
|
|
||||||
user_count_after: users
|
user_count_after: users
|
||||||
user_count_before: Home to
|
user_count_before: Home to
|
||||||
version: Version
|
|
||||||
what_is_mastodon: What is Mastodon?
|
what_is_mastodon: What is Mastodon?
|
||||||
accounts:
|
accounts:
|
||||||
follow: Follow
|
follow: Follow
|
||||||
@ -108,13 +108,15 @@ en:
|
|||||||
create: Create block
|
create: Create block
|
||||||
hint: The domain block will not prevent creation of account entries in the database, but will retroactively and automatically apply specific moderation methods on those accounts.
|
hint: The domain block will not prevent creation of account entries in the database, but will retroactively and automatically apply specific moderation methods on those accounts.
|
||||||
severity:
|
severity:
|
||||||
desc_html: "<strong>Silence</strong> will make the account's posts invisible to anyone who isn't following them. <strong>Suspend</strong> will remove all of the account's content, media, and profile data."
|
desc_html: "<strong>Silence</strong> will make the account's posts invisible to anyone who isn't following them. <strong>Suspend</strong> will remove all of the account's content, media, and profile data. Use <strong>None</strong> if you just want to reject media files."
|
||||||
|
noop: None
|
||||||
silence: Silence
|
silence: Silence
|
||||||
suspend: Suspend
|
suspend: Suspend
|
||||||
title: New domain block
|
title: New domain block
|
||||||
reject_media: Reject media files
|
reject_media: Reject media files
|
||||||
reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions
|
reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions
|
||||||
severities:
|
severities:
|
||||||
|
noop: None
|
||||||
silence: Silence
|
silence: Silence
|
||||||
suspend: Suspend
|
suspend: Suspend
|
||||||
severity: Severity
|
severity: Severity
|
||||||
@ -198,8 +200,8 @@ en:
|
|||||||
show: Show media
|
show: Show media
|
||||||
title: Media
|
title: Media
|
||||||
no_media: No media
|
no_media: No media
|
||||||
with_media: With media
|
|
||||||
title: Account statuses
|
title: Account statuses
|
||||||
|
with_media: With media
|
||||||
subscriptions:
|
subscriptions:
|
||||||
callback_url: Callback URL
|
callback_url: Callback URL
|
||||||
confirmed: Confirmed
|
confirmed: Confirmed
|
||||||
@ -272,7 +274,7 @@ en:
|
|||||||
content: Security verification failed. Are you blocking cookies?
|
content: Security verification failed. Are you blocking cookies?
|
||||||
title: Security verification failed
|
title: Security verification failed
|
||||||
'429': Throttled
|
'429': Throttled
|
||||||
noscript: To use Mastodon, please enable JavaScript.
|
noscript: To use the Mastodon web application, please enable JavaScript. Alternatively, find a native app for Mastodon for your platform.
|
||||||
exports:
|
exports:
|
||||||
blocks: You block
|
blocks: You block
|
||||||
csv: CSV
|
csv: CSV
|
||||||
@ -347,15 +349,15 @@ en:
|
|||||||
follow:
|
follow:
|
||||||
title: "%{name} is now following you"
|
title: "%{name} is now following you"
|
||||||
mention:
|
mention:
|
||||||
action_boost: 'Boost'
|
action_boost: Boost
|
||||||
action_expand: 'Show more'
|
action_expand: Show more
|
||||||
action_favourite: 'Favourite'
|
action_favourite: Favourite
|
||||||
title: "%{name} mentioned you"
|
title: "%{name} mentioned you"
|
||||||
reblog:
|
reblog:
|
||||||
title: "%{name} boosted your status"
|
title: "%{name} boosted your status"
|
||||||
subscribed:
|
subscribed:
|
||||||
body: "You can now receive push notifications."
|
body: You can now receive push notifications.
|
||||||
title: "Subscription registered!"
|
title: Subscription registered!
|
||||||
remote_follow:
|
remote_follow:
|
||||||
acct: Enter your username@domain you want to follow from
|
acct: Enter your username@domain you want to follow from
|
||||||
missing_resource: Could not find the required redirect URL for your account
|
missing_resource: Could not find the required redirect URL for your account
|
||||||
|
@ -1,20 +1,16 @@
|
|||||||
---
|
---
|
||||||
eo:
|
eo:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon estas <em>senpaga, malfermitkoda</em> socia reto. Ĝi estas <em>sencentra</em> alia eblo al komercaj servoj. Ĝi evitigas, ke unusola firmao regu vian tutan komunikadon. Elektu servilon, kiun vi fidas. Kiu ajn estas via elekto, vi povas interagi kun ĉiuj aliaj uzantoj. Iu ajn povas krei sian propran aperaĵon de Mastodon en sia servilo, kaj partopreni en la <em>socia reto</em> tute glate.
|
about_mastodon_html: Mastodon estas <em>senpaga, malfermitkoda</em> socia reto. Ĝi estas <em>sencentra</em> alia eblo al komercaj servoj. Ĝi evitigas, ke unusola firmao regu vian tutan komunikadon. Elektu servilon, kiun vi fidas. Kiu ajn estas via elekto, vi povas interagi kun ĉiuj aliaj uzantoj. Iu ajn povas krei sian propran aperaĵon de Mastodon en sia servilo, kaj partopreni en la <em>socia reto</em> tute glate.
|
||||||
about_this: Pri tiu aperaĵo
|
about_this: Pri tiu aperaĵo
|
||||||
business_email: 'Profesia retpoŝt-adreso:'
|
|
||||||
contact: Kontakti
|
contact: Kontakti
|
||||||
description_headline: Kio estas %{domain}?
|
description_headline: Kio estas %{domain}?
|
||||||
domain_count_after: aliaj aperaĵoj
|
domain_count_after: aliaj aperaĵoj
|
||||||
domain_count_before: Konektita al
|
domain_count_before: Konektita al
|
||||||
get_started: Komenci
|
|
||||||
links: Ligiloj
|
|
||||||
other_instances: Aliaj aperaĵoj
|
other_instances: Aliaj aperaĵoj
|
||||||
source_code: Fontkodo
|
source_code: Fontkodo
|
||||||
status_count_after: mesaĝoj
|
status_count_after: mesaĝoj
|
||||||
status_count_before: Kiu publikigis
|
status_count_before: Kiu publikigis
|
||||||
terms: Terms
|
|
||||||
user_count_after: uzantoj
|
user_count_after: uzantoj
|
||||||
user_count_before: Hejmo de
|
user_count_before: Hejmo de
|
||||||
accounts:
|
accounts:
|
||||||
|
@ -1,21 +1,17 @@
|
|||||||
---
|
---
|
||||||
es:
|
es:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon es un servidor de red social <em>libre y de código abierto</em>. Una alternativa <em>descentralizada</em> a plataformas comerciales, que evita el riesgo de que una única compañía monopolice tu comunicación. Cualquiera puede ejecutar Mastodon y participar sin problemas en la <em>red social</em>.
|
about_mastodon_html: Mastodon es un servidor de red social <em>libre y de código abierto</em>. Una alternativa <em>descentralizada</em> a plataformas comerciales, que evita el riesgo de que una única compañía monopolice tu comunicación. Cualquiera puede ejecutar Mastodon y participar sin problemas en la <em>red social</em>.
|
||||||
about_this: Acerca de esta instancia
|
about_this: Acerca de esta instancia
|
||||||
business_email: 'Correo de negocios:'
|
|
||||||
closed_registrations: Los registros están actualmente cerrados en esta instancia.
|
closed_registrations: Los registros están actualmente cerrados en esta instancia.
|
||||||
contact: Contacto
|
contact: Contacto
|
||||||
description_headline: "¿Qué es %{domain}?"
|
description_headline: "¿Qué es %{domain}?"
|
||||||
domain_count_after: otras instancias
|
domain_count_after: otras instancias
|
||||||
domain_count_before: Conectado a
|
domain_count_before: Conectado a
|
||||||
get_started: Comenzar
|
|
||||||
links: Enlaces
|
|
||||||
other_instances: Otras instancias
|
other_instances: Otras instancias
|
||||||
source_code: Código fuente
|
source_code: Código fuente
|
||||||
status_count_after: estados
|
status_count_after: estados
|
||||||
status_count_before: Que han escrito
|
status_count_before: Que han escrito
|
||||||
terms: Términos
|
|
||||||
user_count_after: usuarios registrados
|
user_count_after: usuarios registrados
|
||||||
user_count_before: Tenemos
|
user_count_before: Tenemos
|
||||||
accounts:
|
accounts:
|
||||||
|
@ -1,24 +1,19 @@
|
|||||||
---
|
---
|
||||||
fa:
|
fa:
|
||||||
about:
|
about:
|
||||||
about_mastodon: ماستدون (Mastodon) یک شبکهٔ اجتماعی <em>آزاد و کدباز</em> است. یک جایگزین <em>غیرمتمرکز</em> برای شبکههای تجاری، که نمیگذارد ارتباطهای شما را یک شرکت در انحصار خود بگیرد. یک سرور مورد اعتماد را انتخاب کنید — هر سروری که باشد، همچنان میتوانید با سرورهای دیگر ارتباط داشته باشید. هر کسی میتواند سرور ماستدون خود را راه بیندازد و در <em>شبکهٔ اجتماعی</em> سهیم شود.
|
about_mastodon_html: ماستدون (Mastodon) یک شبکهٔ اجتماعی <em>آزاد و کدباز</em> است. یک جایگزین <em>غیرمتمرکز</em> برای شبکههای تجاری، که نمیگذارد ارتباطهای شما را یک شرکت در انحصار خود بگیرد. یک سرور مورد اعتماد را انتخاب کنید — هر سروری که باشد، همچنان میتوانید با سرورهای دیگر ارتباط داشته باشید. هر کسی میتواند سرور ماستدون خود را راه بیندازد و در <em>شبکهٔ اجتماعی</em> سهیم شود.
|
||||||
about_this: دربارهٔ این سرور
|
about_this: دربارهٔ این سرور
|
||||||
business_email: 'ایمیل کاری:'
|
|
||||||
closed_registrations: امکان ثبت نام روی این سرور هماینک فعال نیست.
|
closed_registrations: امکان ثبت نام روی این سرور هماینک فعال نیست.
|
||||||
contact: تماس
|
contact: تماس
|
||||||
description_headline: "%{domain} چیست؟"
|
description_headline: "%{domain} چیست؟"
|
||||||
domain_count_after: سرور دیگر
|
domain_count_after: سرور دیگر
|
||||||
domain_count_before: متصل به
|
domain_count_before: متصل به
|
||||||
get_started: آغاز کنید
|
|
||||||
links: پیوندها
|
|
||||||
other_instances: سرورهای دیگر
|
other_instances: سرورهای دیگر
|
||||||
source_code: کدهای منبع
|
source_code: کدهای منبع
|
||||||
status_count_after: چیز نوشتهاند
|
status_count_after: چیز نوشتهاند
|
||||||
status_count_before: که جمعاً
|
status_count_before: که جمعاً
|
||||||
terms: شرایط استفاده
|
|
||||||
user_count_after: کاربر
|
user_count_after: کاربر
|
||||||
user_count_before: دارای
|
user_count_before: دارای
|
||||||
version: نسخه
|
|
||||||
accounts:
|
accounts:
|
||||||
follow: پی بگیرید
|
follow: پی بگیرید
|
||||||
followers: پیگیران
|
followers: پیگیران
|
||||||
|
@ -1,20 +1,16 @@
|
|||||||
---
|
---
|
||||||
fi:
|
fi:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon on <em>ilmainen, avoimeen lähdekoodiin perustuva</em> sosiaalinen verkosto. <em>Hajautettu</em> vaihtoehto kaupallisille alustoille, se välttää eiskit yhden yrityksen monopolisoinnin sinun viestinnässäsi. Valitse palvelin mihin luotat — minkä tahansa valitset, voit vuorovaikuttaa muiden kanssa. Kuka tahansa voi luoda Mastodon palvelimen ja ottaa osaa <em>sosiaaliseen verkkoon</em> saumattomasti.
|
about_mastodon_html: Mastodon on <em>ilmainen, avoimeen lähdekoodiin perustuva</em> sosiaalinen verkosto. <em>Hajautettu</em> vaihtoehto kaupallisille alustoille, se välttää eiskit yhden yrityksen monopolisoinnin sinun viestinnässäsi. Valitse palvelin mihin luotat — minkä tahansa valitset, voit vuorovaikuttaa muiden kanssa. Kuka tahansa voi luoda Mastodon palvelimen ja ottaa osaa <em>sosiaaliseen verkkoon</em> saumattomasti.
|
||||||
about_this: Tietoja tästä palvelimesta
|
about_this: Tietoja tästä palvelimesta
|
||||||
business_email: 'Business e-mail:'
|
|
||||||
contact: Ota yhteyttä
|
contact: Ota yhteyttä
|
||||||
description_headline: Mikä on %{domain}?
|
description_headline: Mikä on %{domain}?
|
||||||
domain_count_after: muuhun palvelimeen
|
domain_count_after: muuhun palvelimeen
|
||||||
domain_count_before: Yhdistyneenä
|
domain_count_before: Yhdistyneenä
|
||||||
get_started: Aloita käyttö
|
|
||||||
links: Linkit
|
|
||||||
other_instances: Muut palvelimet
|
other_instances: Muut palvelimet
|
||||||
source_code: Lähdekoodi
|
source_code: Lähdekoodi
|
||||||
status_count_after: statusta
|
status_count_after: statusta
|
||||||
status_count_before: Ovat luoneet
|
status_count_before: Ovat luoneet
|
||||||
terms: Ehdot
|
|
||||||
user_count_after: käyttäjälle
|
user_count_after: käyttäjälle
|
||||||
user_count_before: Koti
|
user_count_before: Koti
|
||||||
accounts:
|
accounts:
|
||||||
|
@ -1,24 +1,19 @@
|
|||||||
---
|
---
|
||||||
he:
|
he:
|
||||||
about:
|
about:
|
||||||
about_mastodon: מסטודון היא רשת חברתית <em>חופשית, מבוססת תוכנה חופשית ("קוד פתוח")</em>. כאלטרנטיבה <em>בלתי ריכוזית</em> לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ב<em>רשת החברתית</em> באופן חלק.
|
about_mastodon_html: מסטודון היא רשת חברתית <em>חופשית, מבוססת תוכנה חופשית ("קוד פתוח")</em>. כאלטרנטיבה <em>בלתי ריכוזית</em> לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ב<em>רשת החברתית</em> באופן חלק.
|
||||||
about_this: אודות שרת זה
|
about_this: אודות שרת זה
|
||||||
business_email: 'דוא"ל עסקי:'
|
|
||||||
closed_registrations: הרשמות סגורות לשרת זה לעת עתה.
|
closed_registrations: הרשמות סגורות לשרת זה לעת עתה.
|
||||||
contact: צור קשר
|
contact: צור קשר
|
||||||
description_headline: מהו %{domain}?
|
description_headline: מהו %{domain}?
|
||||||
domain_count_after: שרתים אחרים
|
domain_count_after: שרתים אחרים
|
||||||
domain_count_before: מחובר אל
|
domain_count_before: מחובר אל
|
||||||
get_started: בואו נתחיל
|
|
||||||
links: קישורים
|
|
||||||
other_instances: שרתים אחרים
|
other_instances: שרתים אחרים
|
||||||
source_code: קוד מקור
|
source_code: קוד מקור
|
||||||
status_count_after: הודעות
|
status_count_after: הודעות
|
||||||
status_count_before: שכתבו
|
status_count_before: שכתבו
|
||||||
terms: תנאים
|
|
||||||
user_count_after: משתמשים
|
user_count_after: משתמשים
|
||||||
user_count_before: ביתם של
|
user_count_before: ביתם של
|
||||||
version: גרסה
|
|
||||||
accounts:
|
accounts:
|
||||||
follow: לעקוב
|
follow: לעקוב
|
||||||
followers: עוקבים
|
followers: עוקבים
|
||||||
|
@ -1,21 +1,17 @@
|
|||||||
---
|
---
|
||||||
hr:
|
hr:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon je <em>besplatna, open-source</em> socijalna mreža. <em>Decentralizirana</em> alternativa komercijalnim platformama, izbjegava rizik toga da jedna tvrtka monopolizira vašu komunikaciju. Izaberite server kojem ćete vjerovati — koji god odabrali, moći ćete komunicirati sa svima ostalima. Bilo tko može imati svoju vlastitu Mastodon instancu i sudjelovati u <em>socijalnoj mreži</em> bez problema.
|
about_mastodon_html: Mastodon je <em>besplatna, open-source</em> socijalna mreža. <em>Decentralizirana</em> alternativa komercijalnim platformama, izbjegava rizik toga da jedna tvrtka monopolizira vašu komunikaciju. Izaberite server kojem ćete vjerovati — koji god odabrali, moći ćete komunicirati sa svima ostalima. Bilo tko može imati svoju vlastitu Mastodon instancu i sudjelovati u <em>socijalnoj mreži</em> bez problema.
|
||||||
about_this: O ovoj instanci
|
about_this: O ovoj instanci
|
||||||
business_email: 'Poslovni e-mail:'
|
|
||||||
closed_registrations: Registracije na ovoj instanci su trenutno zatvorene.
|
closed_registrations: Registracije na ovoj instanci su trenutno zatvorene.
|
||||||
contact: Kontakt
|
contact: Kontakt
|
||||||
description_headline: Što je %{domain}?
|
description_headline: Što je %{domain}?
|
||||||
domain_count_after: druge instance
|
domain_count_after: druge instance
|
||||||
domain_count_before: Spojen na
|
domain_count_before: Spojen na
|
||||||
get_started: Započni
|
|
||||||
links: Linkovi
|
|
||||||
other_instances: Druge instance
|
other_instances: Druge instance
|
||||||
source_code: Izvorni kod
|
source_code: Izvorni kod
|
||||||
status_count_after: statusi
|
status_count_after: statusi
|
||||||
status_count_before: Tko je autor
|
status_count_before: Tko je autor
|
||||||
terms: Uvjeti
|
|
||||||
user_count_after: korisnici
|
user_count_after: korisnici
|
||||||
user_count_before: Home to
|
user_count_before: Home to
|
||||||
accounts:
|
accounts:
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
---
|
---
|
||||||
hu:
|
hu:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon egy <em>szabad, nyílt forráskódú</em> szociális hálózati kiszolgálo. Egy <em>központosítatlan</em> alternatíva a kereskedelmi platformokra, elkerüli a kommunikációd monopolizációját veszélyét. Bárki futtathatja a Mastodon-t és részt vehet a <em>szociális hálózatban</em>.
|
about_mastodon_html: Mastodon egy <em>szabad, nyílt forráskódú</em> szociális hálózati kiszolgálo. Egy <em>központosítatlan</em> alternatíva a kereskedelmi platformokra, elkerüli a kommunikációd monopolizációját veszélyét. Bárki futtathatja a Mastodon-t és részt vehet a <em>szociális hálózatban</em>.
|
||||||
get_started: Első lépések
|
|
||||||
source_code: Forráskód
|
source_code: Forráskód
|
||||||
terms: Feltételek
|
|
||||||
accounts:
|
accounts:
|
||||||
follow: Követés
|
follow: Követés
|
||||||
followers: Követők
|
followers: Követők
|
||||||
@ -32,7 +30,7 @@ hu:
|
|||||||
validation_errors:
|
validation_errors:
|
||||||
one: Valami nincs rendjén! Kérlek tekintsd meg a hibát alant
|
one: Valami nincs rendjén! Kérlek tekintsd meg a hibát alant
|
||||||
other: Valami nincs rendjén! Kérlek tekintsd meg a %{count} darab hibát alant.
|
other: Valami nincs rendjén! Kérlek tekintsd meg a %{count} darab hibát alant.
|
||||||
landing_strip_html: <strong>%{name}</strong> is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse.
|
landing_strip_html: "<strong>%{name}</strong> is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse."
|
||||||
landing_strip_signup_html: If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
|
landing_strip_signup_html: If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
|
||||||
notification_mailer:
|
notification_mailer:
|
||||||
favourite:
|
favourite:
|
||||||
|
@ -1,24 +1,19 @@
|
|||||||
---
|
---
|
||||||
id:
|
id:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon adalah sebuah jejaring sosial <em>terbuka, open-source</em. Sebuah alternatif <em>desentralisasi</em> dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam <em>jejaring sosial</em> dengan mudah.
|
about_mastodon_html: Mastodon adalah sebuah jejaring sosial <em>terbuka, open-source</em. Sebuah alternatif <em>desentralisasi</em> dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam <em>jejaring sosial</em> dengan mudah.
|
||||||
about_this: Tentang server ini
|
about_this: Tentang server ini
|
||||||
business_email: 'E-mail bisnis:'
|
|
||||||
closed_registrations: Pendaftaran untuk server ini sedang ditutup.
|
closed_registrations: Pendaftaran untuk server ini sedang ditutup.
|
||||||
contact: Kontak
|
contact: Kontak
|
||||||
description_headline: Apa itu %{domain}?
|
description_headline: Apa itu %{domain}?
|
||||||
domain_count_after: server lain
|
domain_count_after: server lain
|
||||||
domain_count_before: Terhubung dengan
|
domain_count_before: Terhubung dengan
|
||||||
get_started: Mulai
|
|
||||||
links: Link
|
|
||||||
other_instances: Server lain
|
other_instances: Server lain
|
||||||
source_code: Kode sumber
|
source_code: Kode sumber
|
||||||
status_count_after: status
|
status_count_after: status
|
||||||
status_count_before: Yang telah menulis
|
status_count_before: Yang telah menulis
|
||||||
terms: Ketentuan
|
|
||||||
user_count_after: pengguna
|
user_count_after: pengguna
|
||||||
user_count_before: Tempat bernaung bagi
|
user_count_before: Tempat bernaung bagi
|
||||||
version: Versi
|
|
||||||
accounts:
|
accounts:
|
||||||
follow: Ikuti
|
follow: Ikuti
|
||||||
followers: Pengikut
|
followers: Pengikut
|
||||||
|
@ -1,21 +1,17 @@
|
|||||||
---
|
---
|
||||||
io:
|
io:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon esas <em>gratuita, apertitkodexa</em> sociala reto. Ol esas <em>sencentra</em> altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la <em>sociala reto</em> tote glate.
|
about_mastodon_html: Mastodon esas <em>gratuita, apertitkodexa</em> sociala reto. Ol esas <em>sencentra</em> altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la <em>sociala reto</em> tote glate.
|
||||||
about_this: Pri ta instaluro
|
about_this: Pri ta instaluro
|
||||||
business_email: 'Profesionala retpost-adreso:'
|
|
||||||
closed_registrations: Membresko ne nun esas posible en ta instaluro.
|
closed_registrations: Membresko ne nun esas posible en ta instaluro.
|
||||||
contact: Kontaktar
|
contact: Kontaktar
|
||||||
description_headline: Quo esas %{domain}?
|
description_headline: Quo esas %{domain}?
|
||||||
domain_count_after: altra instaluri
|
domain_count_after: altra instaluri
|
||||||
domain_count_before: Konektita ad
|
domain_count_before: Konektita ad
|
||||||
get_started: Komencar
|
|
||||||
links: Ligili
|
|
||||||
other_instances: Altra instaluri
|
other_instances: Altra instaluri
|
||||||
source_code: Fontkodexo
|
source_code: Fontkodexo
|
||||||
status_count_after: mesaji
|
status_count_after: mesaji
|
||||||
status_count_before: Qua publikigis
|
status_count_before: Qua publikigis
|
||||||
terms: Terms
|
|
||||||
user_count_after: uzeri
|
user_count_after: uzeri
|
||||||
user_count_before: Hemo di
|
user_count_before: Hemo di
|
||||||
accounts:
|
accounts:
|
||||||
|
@ -1,21 +1,17 @@
|
|||||||
---
|
---
|
||||||
it:
|
it:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon è un social network <em>gratuito e open-source</em>. Un'alternativa <em>decentralizzata</em> alle piattaforme commerciali che evita che una singola compagnia monopolizzi il tuo modo di comunicare. Scegli un server di cui ti fidi — qualunque sia la tua scelta, potrai interagire con chiunque altro. Chiunque può sviluppare un suo server Mastodon e partecipare alla vita del <em>social network</em>.
|
about_mastodon_html: Mastodon è un social network <em>gratuito e open-source</em>. Un'alternativa <em>decentralizzata</em> alle piattaforme commerciali che evita che una singola compagnia monopolizzi il tuo modo di comunicare. Scegli un server di cui ti fidi — qualunque sia la tua scelta, potrai interagire con chiunque altro. Chiunque può sviluppare un suo server Mastodon e partecipare alla vita del <em>social network</em>.
|
||||||
about_this: A proposito di questo server
|
about_this: A proposito di questo server
|
||||||
business_email: 'Email di lavoro:'
|
|
||||||
closed_registrations: Al momento le iscrizioni a questo server sono chiuse.
|
closed_registrations: Al momento le iscrizioni a questo server sono chiuse.
|
||||||
contact: Contatti
|
contact: Contatti
|
||||||
description_headline: Cos'è %{domain}?
|
description_headline: Cos'è %{domain}?
|
||||||
domain_count_after: altri server
|
domain_count_after: altri server
|
||||||
domain_count_before: Connesso a
|
domain_count_before: Connesso a
|
||||||
get_started: Inizia
|
|
||||||
links: Links
|
|
||||||
other_instances: Altri server
|
other_instances: Altri server
|
||||||
source_code: Codice sorgente
|
source_code: Codice sorgente
|
||||||
status_count_after: status
|
status_count_after: status
|
||||||
status_count_before: Che hanno pubblicato
|
status_count_before: Che hanno pubblicato
|
||||||
terms: Termini di Utilizzo
|
|
||||||
user_count_after: utenti
|
user_count_after: utenti
|
||||||
user_count_before: Casa di
|
user_count_before: Casa di
|
||||||
accounts:
|
accounts:
|
||||||
|