Compare commits
89 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a29432f0cd | ||
|
098c7d27fe | ||
|
3d3b403359 | ||
|
25b0d7538e | ||
|
a3b2ea599d | ||
|
573414f728 | ||
|
aa273a2718 | ||
|
0d3ffa691e | ||
|
5ad45552b3 | ||
|
dc313f27bb | ||
|
7cad926401 | ||
|
3487460f00 | ||
|
72314d26ae | ||
|
cc75d47926 | ||
|
8bf4cc72b6 | ||
|
ad941f5a21 | ||
|
0aeec0390b | ||
|
fef6625496 | ||
|
775c3056b6 | ||
|
ccf4f170de | ||
|
90e7da16a0 | ||
|
ad75ec8b5b | ||
|
57fcc21a86 | ||
|
6855baa0c5 | ||
|
07b4427865 | ||
|
a8deb6648b | ||
|
20a6584d2d | ||
|
155e211dd0 | ||
|
81923f88ba | ||
|
5706fe18c2 | ||
|
71965cbef2 | ||
|
0128b86d30 | ||
|
0370ba7b0a | ||
|
c986218c3a | ||
|
0c8b1eb577 | ||
|
cfa3f55221 | ||
|
f9f6918148 | ||
|
2a61b9f000 | ||
|
cfea28216f | ||
|
19257d91bf | ||
|
fe180f18ff | ||
|
1486fd64cc | ||
|
14c4a33cd9 | ||
|
30d2ea03b0 | ||
|
1356ed72cd | ||
|
481fac7c84 | ||
|
c588fcf4bc | ||
|
feed07227b | ||
|
e56323a4dd | ||
|
84d5bfb35e | ||
|
6a82939adb | ||
|
98aa96b8d6 | ||
|
3caec1ecc2 | ||
|
2950de86c6 | ||
|
7d4ebeecbd | ||
|
6e3f176b8e | ||
|
a4710f9af8 | ||
|
fcc0795a40 | ||
|
0f8140d26a | ||
|
e7d55df38d | ||
|
a72d03f43c | ||
|
4bce376fdc | ||
|
a865b62efc | ||
|
84cebad49d | ||
|
931e66e572 | ||
|
cdae7e4c8b | ||
|
3a52c90de1 | ||
|
17e26f8afe | ||
|
2526ef10c2 | ||
|
99242b92bc | ||
|
ec3b449baa | ||
|
2f4c5f504f | ||
|
f08e6e9ab5 | ||
|
86b4d5439c | ||
|
c36b9cc5a6 | ||
|
70ce2a2095 | ||
|
b0db4dad79 | ||
|
dad0a09675 | ||
|
bca9e2e57a | ||
|
369f40bb9f | ||
|
65e0bbd958 | ||
|
832a7f9a05 | ||
|
7fcf15adf3 | ||
|
a1fc626e57 | ||
|
9a6fc03332 | ||
|
7445f17571 | ||
|
0c4ca3e549 | ||
|
c083816c24 | ||
|
432761f375 |
0
CODEOWNERS → .github/CODEOWNERS
vendored
0
CODEOWNERS → .github/CODEOWNERS
vendored
2
Gemfile
2
Gemfile
@@ -14,7 +14,7 @@ gem 'pg', '~> 0.20'
|
||||
gem 'pghero', '~> 1.7'
|
||||
gem 'dotenv-rails', '~> 2.2'
|
||||
|
||||
gem 'fog-aws', '~> 1.4', require: false
|
||||
gem 'aws-sdk', '~> 2.10', require: false
|
||||
gem 'fog-core', '~> 1.45'
|
||||
gem 'fog-local', '~> 0.4', require: false
|
||||
gem 'fog-openstack', '~> 0.1', require: false
|
||||
|
19
Gemfile.lock
19
Gemfile.lock
@@ -57,6 +57,14 @@ GEM
|
||||
encryptor (~> 3.0.0)
|
||||
av (0.9.0)
|
||||
cocaine (~> 0.5.3)
|
||||
aws-sdk (2.10.100)
|
||||
aws-sdk-resources (= 2.10.100)
|
||||
aws-sdk-core (2.10.100)
|
||||
aws-sigv4 (~> 1.0)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-resources (2.10.100)
|
||||
aws-sdk-core (= 2.10.100)
|
||||
aws-sigv4 (1.0.2)
|
||||
bcrypt (3.1.11)
|
||||
better_errors (2.4.0)
|
||||
coderay (>= 1.0.0)
|
||||
@@ -152,11 +160,6 @@ GEM
|
||||
i18n (~> 0.5)
|
||||
fast_blank (1.0.0)
|
||||
ffi (1.9.18)
|
||||
fog-aws (1.4.1)
|
||||
fog-core (~> 1.38)
|
||||
fog-json (~> 1.0)
|
||||
fog-xml (~> 0.1)
|
||||
ipaddress (~> 0.8)
|
||||
fog-core (1.45.0)
|
||||
builder
|
||||
excon (~> 0.58)
|
||||
@@ -170,9 +173,6 @@ GEM
|
||||
fog-core (>= 1.40)
|
||||
fog-json (>= 1.0)
|
||||
ipaddress (>= 0.8)
|
||||
fog-xml (0.1.3)
|
||||
fog-core
|
||||
nokogiri (>= 1.5.11, < 2.0.0)
|
||||
formatador (0.2.5)
|
||||
fuubar (2.2.0)
|
||||
rspec-core (~> 3.0)
|
||||
@@ -228,6 +228,7 @@ GEM
|
||||
idn-ruby (0.1.0)
|
||||
ipaddress (0.8.3)
|
||||
iso-639 (0.2.8)
|
||||
jmespath (1.3.1)
|
||||
json (2.1.0)
|
||||
json-ld (2.1.7)
|
||||
multi_json (~> 1.12)
|
||||
@@ -544,6 +545,7 @@ DEPENDENCIES
|
||||
active_record_query_trace (~> 1.5)
|
||||
addressable (~> 2.5)
|
||||
annotate (~> 2.7)
|
||||
aws-sdk (~> 2.10)
|
||||
better_errors (~> 2.4)
|
||||
binding_of_caller (~> 0.7)
|
||||
bootsnap
|
||||
@@ -566,7 +568,6 @@ DEPENDENCIES
|
||||
fabrication (~> 2.18)
|
||||
faker (~> 1.7)
|
||||
fast_blank (~> 1.0)
|
||||
fog-aws (~> 1.4)
|
||||
fog-core (~> 1.45)
|
||||
fog-local (~> 0.4)
|
||||
fog-openstack (~> 0.1)
|
||||
|
@@ -89,7 +89,8 @@ module Admin
|
||||
:username,
|
||||
:display_name,
|
||||
:email,
|
||||
:ip
|
||||
:ip,
|
||||
:staff
|
||||
)
|
||||
end
|
||||
end
|
||||
|
@@ -92,7 +92,9 @@ module Admin
|
||||
def filter_params
|
||||
params.permit(
|
||||
:local,
|
||||
:remote
|
||||
:remote,
|
||||
:by_domain,
|
||||
:shortcode
|
||||
)
|
||||
end
|
||||
end
|
||||
|
@@ -72,19 +72,4 @@ class Api::BaseController < ApplicationController
|
||||
def render_empty
|
||||
render json: {}, status: 200
|
||||
end
|
||||
|
||||
def set_maps(statuses) # rubocop:disable Style/AccessorMethodName
|
||||
if current_account.nil?
|
||||
@reblogs_map = {}
|
||||
@favourites_map = {}
|
||||
@mutes_map = {}
|
||||
return
|
||||
end
|
||||
|
||||
status_ids = statuses.compact.flat_map { |s| [s.id, s.reblog_of_id] }.uniq
|
||||
conversation_ids = statuses.compact.map(&:conversation_id).compact.uniq
|
||||
@reblogs_map = Status.reblogs_map(status_ids, current_account)
|
||||
@favourites_map = Status.favourites_map(status_ids, current_account)
|
||||
@mutes_map = Status.mutes_map(conversation_ids, current_account)
|
||||
end
|
||||
end
|
||||
|
20
app/controllers/api/v1/accounts/lists_controller.rb
Normal file
20
app/controllers/api/v1/accounts/lists_controller.rb
Normal file
@@ -0,0 +1,20 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::Accounts::ListsController < Api::BaseController
|
||||
before_action -> { doorkeeper_authorize! :read }
|
||||
before_action :require_user!
|
||||
before_action :set_account
|
||||
|
||||
respond_to :json
|
||||
|
||||
def index
|
||||
@lists = @account.lists.where(account: current_account)
|
||||
render json: @lists, each_serializer: REST::ListSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_account
|
||||
@account = Account.find(params[:account_id])
|
||||
end
|
||||
end
|
@@ -1,18 +1,14 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::ListsController < Api::BaseController
|
||||
LISTS_LIMIT = 50
|
||||
|
||||
before_action -> { doorkeeper_authorize! :read }, only: [:index, :show]
|
||||
before_action -> { doorkeeper_authorize! :write }, except: [:index, :show]
|
||||
|
||||
before_action :require_user!
|
||||
before_action :set_list, except: [:index, :create]
|
||||
|
||||
after_action :insert_pagination_headers, only: :index
|
||||
|
||||
def index
|
||||
@lists = List.where(account: current_account).paginate_by_max_id(limit_param(LISTS_LIMIT), params[:max_id], params[:since_id])
|
||||
@lists = List.where(account: current_account).all
|
||||
render json: @lists, each_serializer: REST::ListSerializer
|
||||
end
|
||||
|
||||
@@ -44,36 +40,4 @@ class Api::V1::ListsController < Api::BaseController
|
||||
def list_params
|
||||
params.permit(:title)
|
||||
end
|
||||
|
||||
def insert_pagination_headers
|
||||
set_pagination_headers(next_path, prev_path)
|
||||
end
|
||||
|
||||
def next_path
|
||||
if records_continue?
|
||||
api_v1_lists_url pagination_params(max_id: pagination_max_id)
|
||||
end
|
||||
end
|
||||
|
||||
def prev_path
|
||||
unless @lists.empty?
|
||||
api_v1_lists_url pagination_params(since_id: pagination_since_id)
|
||||
end
|
||||
end
|
||||
|
||||
def pagination_max_id
|
||||
@lists.last.id
|
||||
end
|
||||
|
||||
def pagination_since_id
|
||||
@lists.first.id
|
||||
end
|
||||
|
||||
def records_continue?
|
||||
@lists.size == limit_param(LISTS_LIMIT)
|
||||
end
|
||||
|
||||
def pagination_params(core_params)
|
||||
params.permit(:limit).merge(core_params)
|
||||
end
|
||||
end
|
||||
|
@@ -28,6 +28,8 @@ class Api::Web::PushSubscriptionsController < Api::BaseController
|
||||
},
|
||||
}
|
||||
|
||||
data.deep_merge!(params[:data]) if params[:data]
|
||||
|
||||
web_subscription = ::Web::PushSubscription.create!(
|
||||
endpoint: params[:subscription][:endpoint],
|
||||
key_p256dh: params[:subscription][:keys][:p256dh],
|
||||
|
@@ -44,7 +44,8 @@ module RateLimitHeaders
|
||||
end
|
||||
|
||||
def api_throttle_data
|
||||
request.env['rack.attack.throttle_data']['api']
|
||||
most_limited_type, = request.env['rack.attack.throttle_data'].min_by { |_, v| v[:limit] }
|
||||
request.env['rack.attack.throttle_data'][most_limited_type]
|
||||
end
|
||||
|
||||
def request_time
|
||||
|
@@ -28,6 +28,7 @@ class Settings::MigrationsController < ApplicationController
|
||||
end
|
||||
|
||||
def migration_account_changed?
|
||||
current_account.moved_to_account_id != @migration.account&.id
|
||||
current_account.moved_to_account_id != @migration.account&.id &&
|
||||
current_account.id != @migration.account&.id
|
||||
end
|
||||
end
|
||||
|
@@ -1,11 +1,12 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Admin::FilterHelper
|
||||
ACCOUNT_FILTERS = %i(local remote by_domain silenced suspended recent username display_name email ip).freeze
|
||||
REPORT_FILTERS = %i(resolved account_id target_account_id).freeze
|
||||
INVITE_FILTER = %i(available expired).freeze
|
||||
ACCOUNT_FILTERS = %i(local remote by_domain silenced suspended recent username display_name email ip staff).freeze
|
||||
REPORT_FILTERS = %i(resolved account_id target_account_id).freeze
|
||||
INVITE_FILTER = %i(available expired).freeze
|
||||
CUSTOM_EMOJI_FILTERS = %i(local remote by_domain shortcode).freeze
|
||||
|
||||
FILTERS = ACCOUNT_FILTERS + REPORT_FILTERS + INVITE_FILTER
|
||||
FILTERS = ACCOUNT_FILTERS + REPORT_FILTERS + INVITE_FILTER + CUSTOM_EMOJI_FILTERS
|
||||
|
||||
def filter_link_to(text, link_to_params, link_class_params = link_to_params)
|
||||
new_url = filtered_url_for(link_to_params)
|
||||
|
@@ -10,6 +10,7 @@ module SettingsHelper
|
||||
eo: 'Esperanto',
|
||||
es: 'Español',
|
||||
fa: 'فارسی',
|
||||
gl: 'Galego',
|
||||
fi: 'Suomi',
|
||||
fr: 'Français',
|
||||
he: 'עברית',
|
||||
|
@@ -10,6 +10,10 @@ export const FAVOURITED_STATUSES_EXPAND_FAIL = 'FAVOURITED_STATUSES_EXPAND_FA
|
||||
|
||||
export function fetchFavouritedStatuses() {
|
||||
return (dispatch, getState) => {
|
||||
if (getState().getIn(['status_lists', 'favourites', 'isLoading'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
dispatch(fetchFavouritedStatusesRequest());
|
||||
|
||||
api(getState).get('/api/v1/favourites').then(response => {
|
||||
@@ -46,7 +50,7 @@ export function expandFavouritedStatuses() {
|
||||
return (dispatch, getState) => {
|
||||
const url = getState().getIn(['status_lists', 'favourites', 'next'], null);
|
||||
|
||||
if (url === null) {
|
||||
if (url === null || getState().getIn(['status_lists', 'favourites', 'isLoading'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -1,4 +1,5 @@
|
||||
import axios from 'axios';
|
||||
import { pushNotificationsSetting } from '../settings';
|
||||
|
||||
export const SET_BROWSER_SUPPORT = 'PUSH_NOTIFICATIONS_SET_BROWSER_SUPPORT';
|
||||
export const SET_SUBSCRIPTION = 'PUSH_NOTIFICATIONS_SET_SUBSCRIPTION';
|
||||
@@ -42,11 +43,15 @@ export function saveSettings() {
|
||||
const state = getState().get('push_notifications');
|
||||
const subscription = state.get('subscription');
|
||||
const alerts = state.get('alerts');
|
||||
const data = { alerts };
|
||||
|
||||
axios.put(`/api/web/push_subscriptions/${subscription.get('id')}`, {
|
||||
data: {
|
||||
alerts,
|
||||
},
|
||||
data,
|
||||
}).then(() => {
|
||||
const me = getState().getIn(['meta', 'me']);
|
||||
if (me) {
|
||||
pushNotificationsSetting.set(me, data);
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import React from 'react';
|
||||
import React, { Fragment } from 'react';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import PropTypes from 'prop-types';
|
||||
import Avatar from './avatar';
|
||||
@@ -87,12 +87,12 @@ export default class Account extends ImmutablePureComponent {
|
||||
hidingNotificationsButton = <IconButton active icon='bell-slash' title={intl.formatMessage(messages.mute_notifications, { name: account.get('username') })} onClick={this.handleMuteNotifications} />;
|
||||
}
|
||||
buttons = (
|
||||
<div>
|
||||
<Fragment>
|
||||
<IconButton active icon='volume-up' title={intl.formatMessage(messages.unmute, { name: account.get('username') })} onClick={this.handleMute} />
|
||||
{hidingNotificationsButton}
|
||||
</div>
|
||||
</Fragment>
|
||||
);
|
||||
} else {
|
||||
} else if (!account.get('moved')) {
|
||||
buttons = <IconButton icon={following ? 'user-times' : 'user-plus'} title={intl.formatMessage(following ? messages.unfollow : messages.follow)} onClick={this.handleFollow} active={following} />;
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import { autoPlayGif } from '../initial_state';
|
||||
|
||||
export default class Avatar extends React.PureComponent {
|
||||
|
||||
@@ -8,12 +9,12 @@ export default class Avatar extends React.PureComponent {
|
||||
account: ImmutablePropTypes.map.isRequired,
|
||||
size: PropTypes.number.isRequired,
|
||||
style: PropTypes.object,
|
||||
animate: PropTypes.bool,
|
||||
inline: PropTypes.bool,
|
||||
animate: PropTypes.bool,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
animate: false,
|
||||
animate: autoPlayGif,
|
||||
size: 20,
|
||||
inline: false,
|
||||
};
|
||||
|
@@ -1,22 +1,29 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import { autoPlayGif } from '../initial_state';
|
||||
|
||||
export default class AvatarOverlay extends React.PureComponent {
|
||||
|
||||
static propTypes = {
|
||||
account: ImmutablePropTypes.map.isRequired,
|
||||
friend: ImmutablePropTypes.map.isRequired,
|
||||
animate: PropTypes.bool,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
animate: autoPlayGif,
|
||||
};
|
||||
|
||||
render() {
|
||||
const { account, friend } = this.props;
|
||||
const { account, friend, animate } = this.props;
|
||||
|
||||
const baseStyle = {
|
||||
backgroundImage: `url(${account.get('avatar_static')})`,
|
||||
backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`,
|
||||
};
|
||||
|
||||
const overlayStyle = {
|
||||
backgroundImage: `url(${friend.get('avatar_static')})`,
|
||||
backgroundImage: `url(${friend.get(animate ? 'avatar' : 'avatar_static')})`,
|
||||
};
|
||||
|
||||
return (
|
||||
|
@@ -68,7 +68,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
|
||||
},
|
||||
|
||||
onReblogToggle (account) {
|
||||
if (account.getIn(['relationship', 'show_reblogs'])) {
|
||||
if (account.getIn(['relationship', 'showing_reblogs'])) {
|
||||
dispatch(followAccount(account.get('id'), false));
|
||||
} else {
|
||||
dispatch(followAccount(account.get('id'), true));
|
||||
|
@@ -156,6 +156,8 @@ export default class ComposeForm extends ImmutablePureComponent {
|
||||
|
||||
return (
|
||||
<div className='compose-form'>
|
||||
<WarningContainer />
|
||||
|
||||
<Collapsable isVisible={this.props.spoiler} fullHeight={50}>
|
||||
<div className='spoiler-input'>
|
||||
<label>
|
||||
@@ -165,8 +167,6 @@ export default class ComposeForm extends ImmutablePureComponent {
|
||||
</div>
|
||||
</Collapsable>
|
||||
|
||||
<WarningContainer />
|
||||
|
||||
<ReplyIndicatorContainer />
|
||||
|
||||
<div className='compose-form__autosuggest-wrapper'>
|
||||
@@ -199,11 +199,11 @@ export default class ComposeForm extends ImmutablePureComponent {
|
||||
<SensitiveButtonContainer />
|
||||
<SpoilerButtonContainer />
|
||||
</div>
|
||||
<div className='character-counter__wrapper'><CharacterCounter max={500} text={text} /></div>
|
||||
</div>
|
||||
|
||||
<div className='compose-form__publish'>
|
||||
<div className='character-counter__wrapper'><CharacterCounter max={500} text={text} /></div>
|
||||
<div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={disabled || this.props.is_uploading || length(text) > 500 || (text.length !== 0 && text.trim().length === 0)} block /></div>
|
||||
</div>
|
||||
<div className='compose-form__publish'>
|
||||
<div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={disabled || this.props.is_uploading || length(text) > 500 || (text.length !== 0 && text.trim().length === 0)} block /></div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
@@ -6,6 +6,7 @@ import IconButton from '../../../components/icon_button';
|
||||
import DisplayName from '../../../components/display_name';
|
||||
import { defineMessages, injectIntl } from 'react-intl';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { isRtl } from '../../../rtl';
|
||||
|
||||
const messages = defineMessages({
|
||||
cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' },
|
||||
@@ -42,7 +43,10 @@ export default class ReplyIndicator extends ImmutablePureComponent {
|
||||
return null;
|
||||
}
|
||||
|
||||
const content = { __html: status.get('contentHtml') };
|
||||
const content = { __html: status.get('contentHtml') };
|
||||
const style = {
|
||||
direction: isRtl(status.get('search_index')) ? 'rtl' : 'ltr',
|
||||
};
|
||||
|
||||
return (
|
||||
<div className='reply-indicator'>
|
||||
@@ -55,7 +59,7 @@ export default class ReplyIndicator extends ImmutablePureComponent {
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div className='reply-indicator__content' dangerouslySetInnerHTML={content} />
|
||||
<div className='reply-indicator__content' style={style} dangerouslySetInnerHTML={content} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@@ -62,7 +62,7 @@ export default class Upload extends ImmutablePureComponent {
|
||||
render () {
|
||||
const { intl, media } = this.props;
|
||||
const active = this.state.hovered || this.state.focused;
|
||||
const description = this.state.dirtyDescription || media.get('description') || '';
|
||||
const description = this.state.dirtyDescription || (this.state.dirtyDescription !== '' && media.get('description')) || '';
|
||||
|
||||
return (
|
||||
<div className='compose-form__upload' onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
|
||||
|
@@ -9,6 +9,7 @@ import { addColumn, removeColumn, moveColumn } from '../../actions/columns';
|
||||
import StatusList from '../../components/status_list';
|
||||
import { defineMessages, injectIntl } from 'react-intl';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { debounce } from 'lodash';
|
||||
|
||||
const messages = defineMessages({
|
||||
heading: { id: 'column.favourites', defaultMessage: 'Favourites' },
|
||||
@@ -16,6 +17,7 @@ const messages = defineMessages({
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
statusIds: state.getIn(['status_lists', 'favourites', 'items']),
|
||||
isLoading: state.getIn(['status_lists', 'favourites', 'isLoading'], true),
|
||||
hasMore: !!state.getIn(['status_lists', 'favourites', 'next']),
|
||||
});
|
||||
|
||||
@@ -30,6 +32,7 @@ export default class Favourites extends ImmutablePureComponent {
|
||||
columnId: PropTypes.string,
|
||||
multiColumn: PropTypes.bool,
|
||||
hasMore: PropTypes.bool,
|
||||
isLoading: PropTypes.bool,
|
||||
};
|
||||
|
||||
componentWillMount () {
|
||||
@@ -59,12 +62,12 @@ export default class Favourites extends ImmutablePureComponent {
|
||||
this.column = c;
|
||||
}
|
||||
|
||||
handleScrollToBottom = () => {
|
||||
handleScrollToBottom = debounce(() => {
|
||||
this.props.dispatch(expandFavouritedStatuses());
|
||||
}
|
||||
}, 300, { leading: true })
|
||||
|
||||
render () {
|
||||
const { intl, statusIds, columnId, multiColumn, hasMore } = this.props;
|
||||
const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props;
|
||||
const pinned = !!columnId;
|
||||
|
||||
return (
|
||||
@@ -85,6 +88,7 @@ export default class Favourites extends ImmutablePureComponent {
|
||||
statusIds={statusIds}
|
||||
scrollKey={`favourited_statuses-${columnId}`}
|
||||
hasMore={hasMore}
|
||||
isLoading={isLoading}
|
||||
onScrollToBottom={this.handleScrollToBottom}
|
||||
/>
|
||||
</Column>
|
||||
|
@@ -161,7 +161,7 @@ export default class ListTimeline extends React.PureComponent {
|
||||
scrollKey={`list_timeline-${columnId}`}
|
||||
timelineId={`list:${id}`}
|
||||
loadMore={this.handleLoadMore}
|
||||
emptyMessage={<FormattedMessage id='empty_column.list' defaultMessage='There is nothing in this list yet.' />}
|
||||
emptyMessage={<FormattedMessage id='empty_column.list' defaultMessage='There is nothing in this list yet. When members of this list post new statuses, they will appear here.' />}
|
||||
/>
|
||||
</Column>
|
||||
);
|
||||
|
@@ -8,6 +8,7 @@ import {
|
||||
} from '../../../actions/timelines';
|
||||
import Column from '../../../components/column';
|
||||
import ColumnHeader from '../../../components/column_header';
|
||||
import { connectHashtagStream } from '../../../actions/streaming';
|
||||
|
||||
@connect()
|
||||
export default class HashtagTimeline extends React.PureComponent {
|
||||
@@ -29,16 +30,13 @@ export default class HashtagTimeline extends React.PureComponent {
|
||||
const { dispatch, hashtag } = this.props;
|
||||
|
||||
dispatch(refreshHashtagTimeline(hashtag));
|
||||
|
||||
this.polling = setInterval(() => {
|
||||
dispatch(refreshHashtagTimeline(hashtag));
|
||||
}, 10000);
|
||||
this.disconnect = dispatch(connectHashtagStream(hashtag));
|
||||
}
|
||||
|
||||
componentWillUnmount () {
|
||||
if (typeof this.polling !== 'undefined') {
|
||||
clearInterval(this.polling);
|
||||
this.polling = null;
|
||||
if (this.disconnect) {
|
||||
this.disconnect();
|
||||
this.disconnect = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -9,6 +9,7 @@ import {
|
||||
import Column from '../../../components/column';
|
||||
import ColumnHeader from '../../../components/column_header';
|
||||
import { defineMessages, injectIntl } from 'react-intl';
|
||||
import { connectPublicStream } from '../../../actions/streaming';
|
||||
|
||||
const messages = defineMessages({
|
||||
title: { id: 'standalone.public_title', defaultMessage: 'A look inside...' },
|
||||
@@ -35,16 +36,13 @@ export default class PublicTimeline extends React.PureComponent {
|
||||
const { dispatch } = this.props;
|
||||
|
||||
dispatch(refreshPublicTimeline());
|
||||
|
||||
this.polling = setInterval(() => {
|
||||
dispatch(refreshPublicTimeline());
|
||||
}, 3000);
|
||||
this.disconnect = dispatch(connectPublicStream());
|
||||
}
|
||||
|
||||
componentWillUnmount () {
|
||||
if (typeof this.polling !== 'undefined') {
|
||||
clearInterval(this.polling);
|
||||
this.polling = null;
|
||||
if (this.disconnect) {
|
||||
this.disconnect();
|
||||
this.disconnect = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -43,7 +43,7 @@ export default class Card extends React.PureComponent {
|
||||
Immutable.fromJS([
|
||||
{
|
||||
type: 'image',
|
||||
url: card.get('url'),
|
||||
url: card.get('embed_url'),
|
||||
description: card.get('title'),
|
||||
meta: {
|
||||
original: {
|
||||
@@ -59,6 +59,8 @@ export default class Card extends React.PureComponent {
|
||||
|
||||
renderLink () {
|
||||
const { card, maxDescription } = this.props;
|
||||
const { width } = this.state;
|
||||
const horizontal = card.get('width') > card.get('height') && (card.get('width') + 100 >= width);
|
||||
|
||||
let image = '';
|
||||
let provider = card.get('provider_name');
|
||||
@@ -75,17 +77,15 @@ export default class Card extends React.PureComponent {
|
||||
provider = decodeIDNA(getHostname(card.get('url')));
|
||||
}
|
||||
|
||||
const className = classnames('status-card', {
|
||||
'horizontal': card.get('width') > card.get('height'),
|
||||
});
|
||||
const className = classnames('status-card', { horizontal });
|
||||
|
||||
return (
|
||||
<a href={card.get('url')} className={className} target='_blank' rel='noopener'>
|
||||
<a href={card.get('url')} className={className} target='_blank' rel='noopener' ref={this.setRef}>
|
||||
{image}
|
||||
|
||||
<div className='status-card__content'>
|
||||
<strong className='status-card__title' title={card.get('title')}>{card.get('title')}</strong>
|
||||
<p className='status-card__description'>{(card.get('description') || '').substring(0, maxDescription)}</p>
|
||||
{!horizontal && <p className='status-card__description'>{(card.get('description') || '').substring(0, maxDescription)}</p>}
|
||||
<span className='status-card__host'>{provider}</span>
|
||||
</div>
|
||||
</a>
|
||||
@@ -101,7 +101,7 @@ export default class Card extends React.PureComponent {
|
||||
onClick={this.handlePhotoClick}
|
||||
role='button'
|
||||
tabIndex='0'
|
||||
src={card.get('url')}
|
||||
src={card.get('embed_url')}
|
||||
alt={card.get('title')}
|
||||
width={card.get('width')}
|
||||
height={card.get('height')}
|
||||
|
@@ -53,7 +53,10 @@ export default class ColumnsArea extends ImmutablePureComponent {
|
||||
if (!this.props.singleColumn) {
|
||||
this.node.addEventListener('wheel', this.handleWheel, detectPassiveEvents.hasSupport ? { passive: true } : false);
|
||||
}
|
||||
this.lastIndex = getIndex(this.context.router.history.location.pathname);
|
||||
|
||||
this.lastIndex = getIndex(this.context.router.history.location.pathname);
|
||||
this.isRtlLayout = document.getElementsByTagName('body')[0].classList.contains('rtl');
|
||||
|
||||
this.setState({ shouldAnimate: true });
|
||||
}
|
||||
|
||||
@@ -79,7 +82,8 @@ export default class ColumnsArea extends ImmutablePureComponent {
|
||||
|
||||
handleChildrenContentChange() {
|
||||
if (!this.props.singleColumn) {
|
||||
this._interruptScrollAnimation = scrollRight(this.node, this.node.scrollWidth - window.innerWidth);
|
||||
const modifier = this.isRtlLayout ? -1 : 1;
|
||||
this._interruptScrollAnimation = scrollRight(this.node, (this.node.scrollWidth - window.innerWidth) * modifier);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -23,6 +23,7 @@ export default class VideoModal extends ImmutablePureComponent {
|
||||
src={media.get('url')}
|
||||
startTime={time}
|
||||
onCloseVideo={onClose}
|
||||
detailed
|
||||
description={media.get('description')}
|
||||
/>
|
||||
</div>
|
||||
|
@@ -17,6 +17,18 @@ const messages = defineMessages({
|
||||
exit_fullscreen: { id: 'video.exit_fullscreen', defaultMessage: 'Exit full screen' },
|
||||
});
|
||||
|
||||
const formatTime = secondsNum => {
|
||||
let hours = Math.floor(secondsNum / 3600);
|
||||
let minutes = Math.floor((secondsNum - (hours * 3600)) / 60);
|
||||
let seconds = secondsNum - (hours * 3600) - (minutes * 60);
|
||||
|
||||
if (hours < 10) hours = '0' + hours;
|
||||
if (minutes < 10) minutes = '0' + minutes;
|
||||
if (seconds < 10) seconds = '0' + seconds;
|
||||
|
||||
return (hours === '00' ? '' : `${hours}:`) + `${minutes}:${seconds}`;
|
||||
};
|
||||
|
||||
const findElementPosition = el => {
|
||||
let box;
|
||||
|
||||
@@ -83,11 +95,13 @@ export default class Video extends React.PureComponent {
|
||||
startTime: PropTypes.number,
|
||||
onOpenVideo: PropTypes.func,
|
||||
onCloseVideo: PropTypes.func,
|
||||
detailed: PropTypes.bool,
|
||||
intl: PropTypes.object.isRequired,
|
||||
};
|
||||
|
||||
state = {
|
||||
progress: 0,
|
||||
currentTime: 0,
|
||||
duration: 0,
|
||||
paused: true,
|
||||
dragging: false,
|
||||
fullscreen: false,
|
||||
@@ -117,7 +131,10 @@ export default class Video extends React.PureComponent {
|
||||
}
|
||||
|
||||
handleTimeUpdate = () => {
|
||||
this.setState({ progress: 100 * (this.video.currentTime / this.video.duration) });
|
||||
this.setState({
|
||||
currentTime: Math.floor(this.video.currentTime),
|
||||
duration: Math.floor(this.video.duration),
|
||||
});
|
||||
}
|
||||
|
||||
handleMouseDown = e => {
|
||||
@@ -143,8 +160,10 @@ export default class Video extends React.PureComponent {
|
||||
|
||||
handleMouseMove = throttle(e => {
|
||||
const { x } = getPointerPosition(this.seek, e);
|
||||
this.video.currentTime = this.video.duration * x;
|
||||
this.setState({ progress: x * 100 });
|
||||
const currentTime = Math.floor(this.video.duration * x);
|
||||
|
||||
this.video.currentTime = currentTime;
|
||||
this.setState({ currentTime });
|
||||
}, 60);
|
||||
|
||||
togglePlay = () => {
|
||||
@@ -226,11 +245,12 @@ export default class Video extends React.PureComponent {
|
||||
}
|
||||
|
||||
render () {
|
||||
const { preview, src, width, height, startTime, onOpenVideo, onCloseVideo, intl, alt } = this.props;
|
||||
const { progress, buffer, dragging, paused, fullscreen, hovered, muted, revealed } = this.state;
|
||||
const { preview, src, width, height, startTime, onOpenVideo, onCloseVideo, intl, alt, detailed } = this.props;
|
||||
const { currentTime, duration, buffer, dragging, paused, fullscreen, hovered, muted, revealed } = this.state;
|
||||
const progress = (currentTime / duration) * 100;
|
||||
|
||||
return (
|
||||
<div className={classNames('video-player', { inactive: !revealed, inline: width && height && !fullscreen, fullscreen })} style={{ width, height }} ref={this.setPlayerRef} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
|
||||
<div className={classNames('video-player', { inactive: !revealed, detailed, inline: width && height && !fullscreen, fullscreen })} style={{ width, height }} ref={this.setPlayerRef} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
|
||||
<video
|
||||
ref={this.setVideoRef}
|
||||
src={src}
|
||||
@@ -267,16 +287,27 @@ export default class Video extends React.PureComponent {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className='video-player__buttons left'>
|
||||
<button aria-label={intl.formatMessage(paused ? messages.play : messages.pause)} onClick={this.togglePlay}><i className={classNames('fa fa-fw', { 'fa-play': paused, 'fa-pause': !paused })} /></button>
|
||||
<button aria-label={intl.formatMessage(muted ? messages.unmute : messages.mute)} onClick={this.toggleMute}><i className={classNames('fa fa-fw', { 'fa-volume-off': muted, 'fa-volume-up': !muted })} /></button>
|
||||
{!onCloseVideo && <button aria-label={intl.formatMessage(messages.hide)} onClick={this.toggleReveal}><i className='fa fa-fw fa-eye' /></button>}
|
||||
</div>
|
||||
<div className='video-player__buttons-bar'>
|
||||
<div className='video-player__buttons left'>
|
||||
<button aria-label={intl.formatMessage(paused ? messages.play : messages.pause)} onClick={this.togglePlay}><i className={classNames('fa fa-fw', { 'fa-play': paused, 'fa-pause': !paused })} /></button>
|
||||
<button aria-label={intl.formatMessage(muted ? messages.unmute : messages.mute)} onClick={this.toggleMute}><i className={classNames('fa fa-fw', { 'fa-volume-off': muted, 'fa-volume-up': !muted })} /></button>
|
||||
|
||||
<div className='video-player__buttons right'>
|
||||
{(!fullscreen && onOpenVideo) && <button aria-label={intl.formatMessage(messages.expand)} onClick={this.handleOpenVideo}><i className='fa fa-fw fa-expand' /></button>}
|
||||
{onCloseVideo && <button aria-label={intl.formatMessage(messages.close)} onClick={this.handleCloseVideo}><i className='fa fa-fw fa-times' /></button>}
|
||||
<button aria-label={intl.formatMessage(fullscreen ? messages.exit_fullscreen : messages.fullscreen)} onClick={this.toggleFullscreen}><i className={classNames('fa fa-fw', { 'fa-arrows-alt': !fullscreen, 'fa-compress': fullscreen })} /></button>
|
||||
{!onCloseVideo && <button aria-label={intl.formatMessage(messages.hide)} onClick={this.toggleReveal}><i className='fa fa-fw fa-eye' /></button>}
|
||||
|
||||
{(detailed || fullscreen) &&
|
||||
<span>
|
||||
<span className='video-player__time-current'>{formatTime(currentTime)}</span>
|
||||
<span className='video-player__time-sep'>/</span>
|
||||
<span className='video-player__time-total'>{formatTime(duration)}</span>
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div className='video-player__buttons right'>
|
||||
{(!fullscreen && onOpenVideo) && <button aria-label={intl.formatMessage(messages.expand)} onClick={this.handleOpenVideo}><i className='fa fa-fw fa-expand' /></button>}
|
||||
{onCloseVideo && <button aria-label={intl.formatMessage(messages.close)} onClick={this.handleCloseVideo}><i className='fa fa-fw fa-compress' /></button>}
|
||||
<button aria-label={intl.formatMessage(fullscreen ? messages.exit_fullscreen : messages.fullscreen)} onClick={this.toggleFullscreen}><i className={classNames('fa fa-fw', { 'fa-arrows-alt': !fullscreen, 'fa-compress': fullscreen })} /></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -7,22 +7,22 @@
|
||||
"account.followers": "المتابعون",
|
||||
"account.follows": "يتبع",
|
||||
"account.follows_you": "يتابعك",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "إخفاء ترقيات @{name}",
|
||||
"account.media": "وسائط",
|
||||
"account.mention": "أُذكُر @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "{name} إنتقل إلى :",
|
||||
"account.mute": "أكتم @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "كتم إخطارات @{name}",
|
||||
"account.posts": "المشاركات",
|
||||
"account.report": "أبلغ عن @{name}",
|
||||
"account.requested": "في انتظار الموافقة",
|
||||
"account.share": "مشاركة @{name}'s profile",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.show_reblogs": "عرض ترقيات @{name}",
|
||||
"account.unblock": "إلغاء الحظر عن @{name}",
|
||||
"account.unblock_domain": "فك حظر {domain}",
|
||||
"account.unfollow": "إلغاء المتابعة",
|
||||
"account.unmute": "إلغاء الكتم عن @{name}",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.unmute_notifications": "إلغاء كتم إخطارات @{name}",
|
||||
"account.view_full_profile": "عرض الملف الشخصي كاملا",
|
||||
"boost_modal.combo": "يمكنك ضغط {combo} لتخطّي هذه في المرّة القادمة",
|
||||
"bundle_column_error.body": "لقد وقع هناك خطأ أثناء عملية تحميل هذا العنصر.",
|
||||
@@ -36,8 +36,9 @@
|
||||
"column.favourites": "المفضلة",
|
||||
"column.follow_requests": "طلبات المتابعة",
|
||||
"column.home": "الرئيسية",
|
||||
"column.lists": "القوائم",
|
||||
"column.mutes": "الحسابات المكتومة",
|
||||
"column.notifications": "الإشعارات",
|
||||
"column.notifications": "الإخطارات",
|
||||
"column.pins": "التبويقات المثبتة",
|
||||
"column.public": "الخيط العام الموحد",
|
||||
"column_back_button.label": "العودة",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "هل أنت متأكد أنك تريد حجب {name} ؟",
|
||||
"confirmations.delete.confirm": "حذف",
|
||||
"confirmations.delete.message": "هل أنت متأكد أنك تريد حذف هذا المنشور ؟",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "هل تود حقا حذف هذه القائمة ؟",
|
||||
"confirmations.domain_block.confirm": "إخفاء إسم النطاق كاملا",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "أكتم",
|
||||
@@ -76,7 +79,7 @@
|
||||
"emoji_button.food": "الطعام والشراب",
|
||||
"emoji_button.label": "أدرج إيموجي",
|
||||
"emoji_button.nature": "الطبيعة",
|
||||
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.not_found": "لا إيموجو !! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "أشياء",
|
||||
"emoji_button.people": "الناس",
|
||||
"emoji_button.recent": "الشائعة الإستخدام",
|
||||
@@ -84,13 +87,13 @@
|
||||
"emoji_button.search_results": "نتائج البحث",
|
||||
"emoji_button.symbols": "رموز",
|
||||
"emoji_button.travel": "أماكن و أسفار",
|
||||
"empty_column.community": "الخط الزمني المحلي فارغ. اكتب شيئا ما للعامة كبداية.",
|
||||
"empty_column.community": "الخط الزمني المحلي فارغ. أكتب شيئا ما للعامة كبداية !",
|
||||
"empty_column.hashtag": "ليس هناك بعدُ أي محتوى ذو علاقة بهذا الوسم.",
|
||||
"empty_column.home": "إنك لا تتبع بعد أي شخص إلى حد الآن. زر {public} أو استخدام حقل البحث لكي تبدأ على التعرف على مستخدمين آخرين.",
|
||||
"empty_column.home.public_timeline": "الخيط العام",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "هذه القائمة فارغة.",
|
||||
"empty_column.notifications": "لم تتلق أي إشعار بعدُ. تفاعل مع المستخدمين الآخرين لإنشاء محادثة.",
|
||||
"empty_column.public": "لا يوجد شيء هنا ! قم بتحرير شيء ما بشكل عام، أو اتبع مستخدمين آخرين في الخوادم المثيلة الأخرى لملء خيط المحادثات العام.",
|
||||
"empty_column.public": "لا يوجد أي شيء هنا ! قم بنشر شيء ما للعامة، أو إتبع مستخدمين آخرين في الخوادم المثيلة الأخرى لملء خيط المحادثات العام",
|
||||
"follow_request.authorize": "ترخيص",
|
||||
"follow_request.reject": "رفض",
|
||||
"getting_started.appsshort": "تطبيقات",
|
||||
@@ -104,37 +107,46 @@
|
||||
"home.column_settings.show_reblogs": "عرض الترقيات",
|
||||
"home.column_settings.show_replies": "عرض الردود",
|
||||
"home.settings": "إعدادات العمود",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.back": "للعودة",
|
||||
"keyboard_shortcuts.boost": "للترقية",
|
||||
"keyboard_shortcuts.column": "للتركيز على منشور على أحد الأعمدة",
|
||||
"keyboard_shortcuts.compose": "للتركيز على نافذة تحرير النصوص",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.down": "للإنتقال إلى أسفل القائمة",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.favourite": "للإضافة إلى المفضلة",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.hotkey": "مفتاح الإختصار",
|
||||
"keyboard_shortcuts.legend": "لعرض هذا المفتاح",
|
||||
"keyboard_shortcuts.mention": "لذِكر الناشر",
|
||||
"keyboard_shortcuts.reply": "للردّ",
|
||||
"keyboard_shortcuts.search": "للتركيز على البحث",
|
||||
"keyboard_shortcuts.toot": "لتحرير تبويق جديد",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"keyboard_shortcuts.up": "للإنتقال إلى أعلى القائمة",
|
||||
"lightbox.close": "إغلاق",
|
||||
"lightbox.next": "التالي",
|
||||
"lightbox.previous": "العودة",
|
||||
"lists.account.add": "أضف إلى القائمة",
|
||||
"lists.account.remove": "إحذف من القائمة",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "تعديل القائمة",
|
||||
"lists.new.create": "إنشاء قائمة",
|
||||
"lists.new.title_placeholder": "عنوان القائمة الجديدة",
|
||||
"lists.search": "إبحث في قائمة الحسابات التي تُتابِعها",
|
||||
"lists.subheading": "قوائمك",
|
||||
"loading_indicator.label": "تحميل ...",
|
||||
"media_gallery.toggle_visible": "عرض / إخفاء",
|
||||
"missing_indicator.label": "تعذر العثور عليه",
|
||||
"mute_modal.hide_notifications": "Hide notifications from this user?",
|
||||
"mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟",
|
||||
"navigation_bar.blocks": "الحسابات المحجوبة",
|
||||
"navigation_bar.community_timeline": "الخيط العام المحلي",
|
||||
"navigation_bar.edit_profile": "تعديل الملف الشخصي",
|
||||
"navigation_bar.favourites": "المفضلة",
|
||||
"navigation_bar.follow_requests": "طلبات المتابعة",
|
||||
"navigation_bar.info": "معلومات إضافية",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "إختصارات لوحة المفاتيح",
|
||||
"navigation_bar.lists": "القوائم",
|
||||
"navigation_bar.logout": "خروج",
|
||||
"navigation_bar.mutes": "الحسابات المكتومة",
|
||||
"navigation_bar.pins": "التبويقات المثبتة",
|
||||
@@ -186,7 +198,7 @@
|
||||
"privacy.unlisted.short": "غير مدرج",
|
||||
"relative_time.days": "{number}d",
|
||||
"relative_time.hours": "{number}h",
|
||||
"relative_time.just_now": "now",
|
||||
"relative_time.just_now": "الآن",
|
||||
"relative_time.minutes": "{number}m",
|
||||
"relative_time.seconds": "{number}s",
|
||||
"reply_indicator.cancel": "إلغاء",
|
||||
@@ -197,9 +209,9 @@
|
||||
"search_popout.search_format": "نمط البحث المتقدم",
|
||||
"search_popout.tips.hashtag": "وسم",
|
||||
"search_popout.tips.status": "حالة",
|
||||
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
|
||||
"search_popout.tips.text": "جملة قصيرة تُمكّنُك من عرض أسماء و حسابات و كلمات رمزية",
|
||||
"search_popout.tips.user": "مستخدِم",
|
||||
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
|
||||
"search_results.total": "{count, number} {count, plural, one {result} و {results}}",
|
||||
"standalone.public_title": "نظرة على ...",
|
||||
"status.cannot_reblog": "تعذرت ترقية هذا المنشور",
|
||||
"status.delete": "إحذف",
|
||||
@@ -208,7 +220,7 @@
|
||||
"status.load_more": "حمّل المزيد",
|
||||
"status.media_hidden": "الصورة مستترة",
|
||||
"status.mention": "أذكُر @{name}",
|
||||
"status.more": "More",
|
||||
"status.more": "المزيد",
|
||||
"status.mute_conversation": "كتم المحادثة",
|
||||
"status.open": "وسع هذه المشاركة",
|
||||
"status.pin": "تدبيس على الملف الشخصي",
|
||||
@@ -229,7 +241,7 @@
|
||||
"tabs_bar.home": "الرئيسية",
|
||||
"tabs_bar.local_timeline": "المحلي",
|
||||
"tabs_bar.notifications": "الإخطارات",
|
||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||
"ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
|
||||
"upload_area.title": "إسحب ثم أفلت للرفع",
|
||||
"upload_button.label": "إضافة وسائط",
|
||||
"upload_form.description": "وصف للمعاقين بصريا",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favourites",
|
||||
"column.follow_requests": "Follow requests",
|
||||
"column.home": "Начало",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Muted users",
|
||||
"column.notifications": "Известия",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||
"confirmations.delete.confirm": "Delete",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Затвори",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Зареждане...",
|
||||
"media_gallery.toggle_visible": "Toggle visibility",
|
||||
"missing_indicator.label": "Not found",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Follow requests",
|
||||
"navigation_bar.info": "Extended information",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Излизане",
|
||||
"navigation_bar.mutes": "Muted users",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -7,7 +7,7 @@
|
||||
"account.followers": "Seguidors",
|
||||
"account.follows": "Seguint",
|
||||
"account.follows_you": "et segueix",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "Amaga els impulsos de @{name}",
|
||||
"account.media": "Media",
|
||||
"account.mention": "Esmentar @{name}",
|
||||
"account.moved_to": "{name} s'ha mogut a:",
|
||||
@@ -17,7 +17,7 @@
|
||||
"account.report": "Informe @{name}",
|
||||
"account.requested": "Esperant aprovació. Clic per a cancel·lar la petició de seguiment",
|
||||
"account.share": "Compartir el perfil de @{name}",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.show_reblogs": "Mostra els impulsos de @{name}",
|
||||
"account.unblock": "Desbloquejar @{name}",
|
||||
"account.unblock_domain": "Mostra {domain}",
|
||||
"account.unfollow": "Deixar de seguir",
|
||||
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favorits",
|
||||
"column.follow_requests": "Peticions per seguir-te",
|
||||
"column.home": "Inici",
|
||||
"column.lists": "Llistes",
|
||||
"column.mutes": "Usuaris silenciats",
|
||||
"column.notifications": "Notificacions",
|
||||
"column.pins": "Toot fixat",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Estàs segur que vols bloquejar {name}?",
|
||||
"confirmations.delete.confirm": "Esborrar",
|
||||
"confirmations.delete.message": "Estàs segur que vols esborrar aquest estat?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Estàs segur que vols esborrar permanenment aquesta llista?",
|
||||
"confirmations.domain_block.confirm": "Amagar tot el domini",
|
||||
"confirmations.domain_block.message": "Estàs realment, realment segur que vols bloquejar totalment {domain}? En la majoria dels casos bloquejar o silenciar és suficient i preferible.",
|
||||
"confirmations.mute.confirm": "Silenciar",
|
||||
@@ -72,7 +75,7 @@
|
||||
"embed.preview": "Aquí tenim quin aspecte tindrá:",
|
||||
"emoji_button.activity": "Activitat",
|
||||
"emoji_button.custom": "Personalitzat",
|
||||
"emoji_button.flags": "Flags",
|
||||
"emoji_button.flags": "Marques",
|
||||
"emoji_button.food": "Menjar i Beure",
|
||||
"emoji_button.label": "Inserir emoji",
|
||||
"emoji_button.nature": "Natura",
|
||||
@@ -88,7 +91,7 @@
|
||||
"empty_column.hashtag": "Encara no hi ha res amb aquesta etiqueta.",
|
||||
"empty_column.home": "Encara no segueixes ningú. Visita {public} o fes cerca per començar i conèixer altres usuaris.",
|
||||
"empty_column.home.public_timeline": "la línia de temps pública",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "Encara no hi ha res en aquesta llista.",
|
||||
"empty_column.notifications": "Encara no tens notificacions. Interactua amb altres per iniciar la conversa.",
|
||||
"empty_column.public": "No hi ha res aquí! Escriu alguna cosa públicament o segueix manualment usuaris d'altres instàncies per omplir-ho",
|
||||
"follow_request.authorize": "Autoritzar",
|
||||
@@ -104,26 +107,34 @@
|
||||
"home.column_settings.show_reblogs": "Mostrar impulsos",
|
||||
"home.column_settings.show_replies": "Mostrar respostes",
|
||||
"home.settings": "Ajustos de columna",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.back": "navegar enrera",
|
||||
"keyboard_shortcuts.boost": "impulsar",
|
||||
"keyboard_shortcuts.column": "per centrar un estat en una de les columnes",
|
||||
"keyboard_shortcuts.compose": "per centrar l'area de composició de text",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.down": "per baixar en la llista",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.favourite": "afavorir",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"keyboard_shortcuts.hotkey": "Tecla d'accés directe",
|
||||
"keyboard_shortcuts.legend": "per a mostrar aquesta llegenda",
|
||||
"keyboard_shortcuts.mention": "per esmentar l'autor",
|
||||
"keyboard_shortcuts.reply": "respondre",
|
||||
"keyboard_shortcuts.search": "per centrar la cerca",
|
||||
"keyboard_shortcuts.toot": "per a començar un toot nou de trinca",
|
||||
"keyboard_shortcuts.unfocus": "descentrar l'area de composició de text/cerca",
|
||||
"keyboard_shortcuts.up": "moure amunt en la llista",
|
||||
"lightbox.close": "Tancar",
|
||||
"lightbox.next": "Següent",
|
||||
"lightbox.previous": "Anterior",
|
||||
"lists.account.add": "Afegir a la llista",
|
||||
"lists.account.remove": "Treure de la llista",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Editar llista",
|
||||
"lists.new.create": "Afegir llista",
|
||||
"lists.new.title_placeholder": "Nou títol de llista",
|
||||
"lists.search": "Cercar entre les persones que segueixes",
|
||||
"lists.subheading": "Les teves llistes",
|
||||
"loading_indicator.label": "Carregant...",
|
||||
"media_gallery.toggle_visible": "Alternar visibilitat",
|
||||
"missing_indicator.label": "No trobat",
|
||||
@@ -134,7 +145,8 @@
|
||||
"navigation_bar.favourites": "Favorits",
|
||||
"navigation_bar.follow_requests": "Sol·licituds de seguiment",
|
||||
"navigation_bar.info": "Informació addicional",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "Dreceres de teclat",
|
||||
"navigation_bar.lists": "Llistes",
|
||||
"navigation_bar.logout": "Tancar sessió",
|
||||
"navigation_bar.mutes": "Usuaris silenciats",
|
||||
"navigation_bar.pins": "Toots fixats",
|
||||
@@ -195,7 +207,7 @@
|
||||
"report.target": "Informes",
|
||||
"search.placeholder": "Cercar",
|
||||
"search_popout.search_format": "Format de cerca avançada",
|
||||
"search_popout.tips.hashtag": "hashtag",
|
||||
"search_popout.tips.hashtag": "etiqueta",
|
||||
"search_popout.tips.status": "status",
|
||||
"search_popout.tips.text": "El text simple retorna coincidències amb els noms de visualització, els noms d'usuari i els hashtags",
|
||||
"search_popout.tips.user": "usuari",
|
||||
|
@@ -7,22 +7,22 @@
|
||||
"account.followers": "Folgende",
|
||||
"account.follows": "Folgt",
|
||||
"account.follows_you": "Folgt dir",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen",
|
||||
"account.media": "Medien",
|
||||
"account.mention": "@{name} erwähnen",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "{name} ist umgezogen auf:",
|
||||
"account.mute": "@{name} stummschalten",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "Benachrichtigungen von @{name} verbergen",
|
||||
"account.posts": "Beiträge",
|
||||
"account.report": "@{name} melden",
|
||||
"account.requested": "Warte auf Erlaubnis. Klicke zum Abbrechen",
|
||||
"account.share": "Profil von @{name} teilen",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.show_reblogs": "Von @{name} geteilte Beiträge anzeigen",
|
||||
"account.unblock": "@{name} entblocken",
|
||||
"account.unblock_domain": "{domain} wieder anzeigen",
|
||||
"account.unfollow": "Entfolgen",
|
||||
"account.unmute": "@{name} nicht mehr stummschalten",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.unmute_notifications": "Benachrichtigungen von @{name} einschalten",
|
||||
"account.view_full_profile": "Vollständiges Profil anzeigen",
|
||||
"boost_modal.combo": "Du kannst {combo} drücken, um dies beim nächsten Mal zu überspringen",
|
||||
"bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.",
|
||||
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favoriten",
|
||||
"column.follow_requests": "Folgeanfragen",
|
||||
"column.home": "Startseite",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Stummgeschaltete Profile",
|
||||
"column.notifications": "Mitteilungen",
|
||||
"column.pins": "Angeheftete Beiträge",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Bist du dir sicher, dass du {name} blockieren möchtest?",
|
||||
"confirmations.delete.confirm": "Löschen",
|
||||
"confirmations.delete.message": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Die ganze Domain verbergen",
|
||||
"confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} verbergen willst? In den meisten Fällen reichen ein paar gezielte Blocks aus.",
|
||||
"confirmations.mute.confirm": "Stummschalten",
|
||||
@@ -80,7 +83,7 @@
|
||||
"emoji_button.objects": "Gegenstände",
|
||||
"emoji_button.people": "Personen",
|
||||
"emoji_button.recent": "Häufig benutzt",
|
||||
"emoji_button.search": "Suchen",
|
||||
"emoji_button.search": "Suchen…",
|
||||
"emoji_button.search_results": "Suchergebnisse",
|
||||
"emoji_button.symbols": "Symbole",
|
||||
"emoji_button.travel": "Reisen und Orte",
|
||||
@@ -88,7 +91,7 @@
|
||||
"empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.",
|
||||
"empty_column.home": "Deine Startseite ist leer! Besuche {public} oder nutze die Suche, um loszulegen und andere Leute zu finden.",
|
||||
"empty_column.home.public_timeline": "die öffentliche Zeitleiste",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "Diese Liste ist derzeit leer.",
|
||||
"empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.",
|
||||
"empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Instanzen, um die Zeitleiste aufzufüllen",
|
||||
"follow_request.authorize": "Erlauben",
|
||||
@@ -104,37 +107,46 @@
|
||||
"home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen",
|
||||
"home.column_settings.show_replies": "Antworten anzeigen",
|
||||
"home.settings": "Spalteneinstellungen",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.back": "zurück navigieren",
|
||||
"keyboard_shortcuts.boost": "boosten",
|
||||
"keyboard_shortcuts.column": "einen Status in einer der Spalten fokussieren",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.down": "sich in der Liste hinunter bewegen",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.favourite": "favorisieren",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.legend": "diese Übersicht anzeigen",
|
||||
"keyboard_shortcuts.mention": "Autor_in erwähnen",
|
||||
"keyboard_shortcuts.reply": "antworten",
|
||||
"keyboard_shortcuts.search": "die Suche fokussieren",
|
||||
"keyboard_shortcuts.toot": "einen neuen Toot beginnen",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"keyboard_shortcuts.up": "sich in der Liste hinauf bewegen",
|
||||
"lightbox.close": "Schließen",
|
||||
"lightbox.next": "Weiter",
|
||||
"lightbox.previous": "Zurück",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Wird geladen …",
|
||||
"media_gallery.toggle_visible": "Sichtbarkeit umschalten",
|
||||
"missing_indicator.label": "Nicht gefunden",
|
||||
"mute_modal.hide_notifications": "Hide notifications from this user?",
|
||||
"mute_modal.hide_notifications": "Benachrichtigungen von diesem Account verbergen?",
|
||||
"navigation_bar.blocks": "Blockierte Profile",
|
||||
"navigation_bar.community_timeline": "Lokale Zeitleiste",
|
||||
"navigation_bar.edit_profile": "Profil bearbeiten",
|
||||
"navigation_bar.favourites": "Favoriten",
|
||||
"navigation_bar.follow_requests": "Folgeanfragen",
|
||||
"navigation_bar.info": "Über diese Instanz",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "Tastenkombinationen",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Abmelden",
|
||||
"navigation_bar.mutes": "Stummgeschaltete Profile",
|
||||
"navigation_bar.pins": "Angeheftete Beiträge",
|
||||
@@ -169,7 +181,7 @@
|
||||
"onboarding.page_six.apps_available": "Es gibt verschiedene {apps} für iOS, Android und weitere Plattformen.",
|
||||
"onboarding.page_six.github": "Mastodon ist freie, quelloffene Software. Du kannst auf {github} dazu beitragen, Probleme melden und Wünsche äußern.",
|
||||
"onboarding.page_six.guidelines": "Richtlinien",
|
||||
"onboarding.page_six.read_guidelines": "Bitte mach dich mit den {guidelines} von {domain} vertraut.",
|
||||
"onboarding.page_six.read_guidelines": "Bitte mach dich mit den {guidelines} von {domain} vertraut!",
|
||||
"onboarding.page_six.various_app": "Apps",
|
||||
"onboarding.page_three.profile": "Bearbeite dein Profil, um dein Bild, deinen Namen und deine Beschreibung anzupassen. Dort findest du auch weitere Einstellungen.",
|
||||
"onboarding.page_three.search": "Benutze die Suchfunktion, um Leute zu finden und mit Hashtags wie {illustration} oder {introductions} nach Beiträgen zu suchen. Um eine Person zu finden, die auf einer anderen Instanz ist, benutze den vollständigen Profilnamen.",
|
||||
|
@@ -857,6 +857,10 @@
|
||||
"defaultMessage": "Pinned toots",
|
||||
"id": "navigation_bar.pins"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Lists",
|
||||
"id": "navigation_bar.lists"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Keyboard shortcuts",
|
||||
"id": "navigation_bar.keyboard_shortcuts"
|
||||
@@ -1010,6 +1014,44 @@
|
||||
},
|
||||
{
|
||||
"descriptors": [
|
||||
{
|
||||
"defaultMessage": "Remove from list",
|
||||
"id": "lists.account.remove"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Add to list",
|
||||
"id": "lists.account.add"
|
||||
}
|
||||
],
|
||||
"path": "app/javascript/mastodon/features/list_editor/components/account.json"
|
||||
},
|
||||
{
|
||||
"descriptors": [
|
||||
{
|
||||
"defaultMessage": "Search among people you follow",
|
||||
"id": "lists.search"
|
||||
}
|
||||
],
|
||||
"path": "app/javascript/mastodon/features/list_editor/components/search.json"
|
||||
},
|
||||
{
|
||||
"descriptors": [
|
||||
{
|
||||
"defaultMessage": "Are you sure you want to permanently delete this list?",
|
||||
"id": "confirmations.delete_list.message"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Delete",
|
||||
"id": "confirmations.delete_list.confirm"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Edit list",
|
||||
"id": "lists.edit"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Delete list",
|
||||
"id": "lists.delete"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "There is nothing in this list yet.",
|
||||
"id": "empty_column.list"
|
||||
@@ -1017,6 +1059,32 @@
|
||||
],
|
||||
"path": "app/javascript/mastodon/features/list_timeline/index.json"
|
||||
},
|
||||
{
|
||||
"descriptors": [
|
||||
{
|
||||
"defaultMessage": "New list title",
|
||||
"id": "lists.new.title_placeholder"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Add list",
|
||||
"id": "lists.new.create"
|
||||
}
|
||||
],
|
||||
"path": "app/javascript/mastodon/features/lists/components/new_list_form.json"
|
||||
},
|
||||
{
|
||||
"descriptors": [
|
||||
{
|
||||
"defaultMessage": "Lists",
|
||||
"id": "column.lists"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Your lists",
|
||||
"id": "lists.subheading"
|
||||
}
|
||||
],
|
||||
"path": "app/javascript/mastodon/features/lists/index.json"
|
||||
},
|
||||
{
|
||||
"descriptors": [
|
||||
{
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favourites",
|
||||
"column.follow_requests": "Follow requests",
|
||||
"column.home": "Home",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Muted users",
|
||||
"column.notifications": "Notifications",
|
||||
"column.pins": "Pinned toots",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||
"confirmations.delete.confirm": "Delete",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
@@ -88,7 +91,7 @@
|
||||
"empty_column.hashtag": "There is nothing in this hashtag yet.",
|
||||
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
|
||||
"empty_column.home.public_timeline": "the public timeline",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
|
||||
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
|
||||
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
|
||||
"follow_request.authorize": "Authorize",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Close",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Loading...",
|
||||
"media_gallery.toggle_visible": "Toggle visibility",
|
||||
"missing_indicator.label": "Not found",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Follow requests",
|
||||
"navigation_bar.info": "About this instance",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Logout",
|
||||
"navigation_bar.mutes": "Muted users",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favoritoj",
|
||||
"column.follow_requests": "Abonpetoj",
|
||||
"column.home": "Hejmo",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Silentigitaj uzantoj",
|
||||
"column.notifications": "Sciigoj",
|
||||
"column.pins": "Alpinglitaj pepoj",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Ĉu vi konfirmas la blokadon de {name}?",
|
||||
"confirmations.delete.confirm": "Malaperigi",
|
||||
"confirmations.delete.message": "Ĉu vi konfirmas la malaperigon de tiun pepon?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Kaŝi la tutan reton",
|
||||
"confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas bloki {domain} tute? Plej ofte, kelkaj celitaj blokadoj aŭ silentigoj estas sufiĉaj kaj preferindaj.",
|
||||
"confirmations.mute.confirm": "Silentigi",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Fermi",
|
||||
"lightbox.next": "Malantaŭa",
|
||||
"lightbox.previous": "Antaŭa",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Ŝarganta…",
|
||||
"media_gallery.toggle_visible": "Baskuli videblecon",
|
||||
"missing_indicator.label": "Ne trovita",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Abonpetoj",
|
||||
"navigation_bar.info": "Plia informo",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Elsaluti",
|
||||
"navigation_bar.mutes": "Silentigitaj uzantoj",
|
||||
"navigation_bar.pins": "Alpinglitaj pepoj",
|
||||
|
@@ -7,22 +7,22 @@
|
||||
"account.followers": "Seguidores",
|
||||
"account.follows": "Sigue",
|
||||
"account.follows_you": "Te sigue",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "Ocultar retoots de @{name}",
|
||||
"account.media": "Media",
|
||||
"account.mention": "Mencionar a @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "{name} se ha mudado a:",
|
||||
"account.mute": "Silenciar a @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "Silenciar notificaciones de @{name}",
|
||||
"account.posts": "Publicaciones",
|
||||
"account.report": "Reportar a @{name}",
|
||||
"account.requested": "Esperando aprobación",
|
||||
"account.share": "Compartir el perfil de @{name}",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.show_reblogs": "Mostrar retoots de @{name}",
|
||||
"account.unblock": "Desbloquear a @{name}",
|
||||
"account.unblock_domain": "Mostrar a {domain}",
|
||||
"account.unfollow": "Dejar de seguir",
|
||||
"account.unmute": "Dejar de silenciar a @{name}",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}",
|
||||
"account.view_full_profile": "Ver perfil completo",
|
||||
"boost_modal.combo": "Puedes presionar {combo} para saltear este aviso la próxima vez",
|
||||
"bundle_column_error.body": "Algo salió mal al cargar este componente.",
|
||||
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favoritos",
|
||||
"column.follow_requests": "Solicitudes de seguimiento",
|
||||
"column.home": "Inicio",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Usuarios silenciados",
|
||||
"column.notifications": "Notificaciones",
|
||||
"column.pins": "Toot fijado",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "¿Estás seguro de que quieres bloquear a {name}?",
|
||||
"confirmations.delete.confirm": "Eliminar",
|
||||
"confirmations.delete.message": "¿Estás seguro de que quieres borrar este toot?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Ocultar dominio entero",
|
||||
"confirmations.domain_block.message": "¿Seguro de que quieres bloquear al dominio entero? En algunos casos es preferible bloquear o silenciar objetivos determinados.",
|
||||
"confirmations.mute.confirm": "Silenciar",
|
||||
@@ -71,26 +74,26 @@
|
||||
"embed.instructions": "Añade este toot a tu sitio web con el siguiente código.",
|
||||
"embed.preview": "Así es como se verá:",
|
||||
"emoji_button.activity": "Actividad",
|
||||
"emoji_button.custom": "Custom",
|
||||
"emoji_button.custom": "Personalizado",
|
||||
"emoji_button.flags": "Marcas",
|
||||
"emoji_button.food": "Comida y bebida",
|
||||
"emoji_button.label": "Insertar emoji",
|
||||
"emoji_button.nature": "Naturaleza",
|
||||
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.not_found": "No hay emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "Objetos",
|
||||
"emoji_button.people": "Gente",
|
||||
"emoji_button.recent": "Frequently used",
|
||||
"emoji_button.recent": "Usados frecuentemente",
|
||||
"emoji_button.search": "Buscar…",
|
||||
"emoji_button.search_results": "Search results",
|
||||
"emoji_button.search_results": "Resultados de búsqueda",
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viajes y lugares",
|
||||
"empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!",
|
||||
"empty_column.hashtag": "No hay nada en este hashtag aún.",
|
||||
"empty_column.home": "No estás siguiendo a nadie aún. Visita {public} o haz búsquedas para empezar y conocer gente nueva.",
|
||||
"empty_column.home.public_timeline": "la línea de tiempo pública",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "No hay nada en esta lista aún.",
|
||||
"empty_column.notifications": "No tienes ninguna notificación aún. Interactúa con otros para empezar una conversación.",
|
||||
"empty_column.public": "¡No hay nada aquí! Escribe algo públicamente, o sigue usuarios de otras instancias manualmente para llenarlo.",
|
||||
"empty_column.public": "¡No hay nada aquí! Escribe algo públicamente, o sigue usuarios de otras instancias manualmente para llenarlo",
|
||||
"follow_request.authorize": "Autorizar",
|
||||
"follow_request.reject": "Rechazar",
|
||||
"getting_started.appsshort": "Aplicaciones",
|
||||
@@ -104,37 +107,46 @@
|
||||
"home.column_settings.show_reblogs": "Mostrar retoots",
|
||||
"home.column_settings.show_replies": "Mostrar respuestas",
|
||||
"home.settings": "Ajustes de columna",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.back": "volver atrás",
|
||||
"keyboard_shortcuts.boost": "retootear",
|
||||
"keyboard_shortcuts.column": "enfocar un estado en una de las columnas",
|
||||
"keyboard_shortcuts.compose": "enfocar el área de texto de redacción",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.down": "mover hacia abajo en la lista",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.favourite": "añadir a favoritos",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"keyboard_shortcuts.hotkey": "Tecla caliente",
|
||||
"keyboard_shortcuts.legend": "para mostrar esta leyenda",
|
||||
"keyboard_shortcuts.mention": "para mencionar al autor",
|
||||
"keyboard_shortcuts.reply": "para responder",
|
||||
"keyboard_shortcuts.search": "para poner el foco en la búsqueda",
|
||||
"keyboard_shortcuts.toot": "para comenzar un nuevo toot",
|
||||
"keyboard_shortcuts.unfocus": "para retirar el foco de la caja de redacción/búsqueda",
|
||||
"keyboard_shortcuts.up": "para ir hacia arriba en la lista",
|
||||
"lightbox.close": "Cerrar",
|
||||
"lightbox.next": "Siguiente",
|
||||
"lightbox.previous": "Anterior",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Cargando…",
|
||||
"media_gallery.toggle_visible": "Cambiar visibilidad",
|
||||
"missing_indicator.label": "No encontrado",
|
||||
"mute_modal.hide_notifications": "Hide notifications from this user?",
|
||||
"mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?",
|
||||
"navigation_bar.blocks": "Usuarios bloqueados",
|
||||
"navigation_bar.community_timeline": "Historia local",
|
||||
"navigation_bar.edit_profile": "Editar perfil",
|
||||
"navigation_bar.favourites": "Favoritos",
|
||||
"navigation_bar.follow_requests": "Solicitudes para seguirte",
|
||||
"navigation_bar.info": "Información adicional",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "Atajos de teclado",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Cerrar sesión",
|
||||
"navigation_bar.mutes": "Usuarios silenciados",
|
||||
"navigation_bar.pins": "Toots fijados",
|
||||
@@ -150,8 +162,8 @@
|
||||
"notifications.column_settings.favourite": "Favoritos:",
|
||||
"notifications.column_settings.follow": "Nuevos seguidores:",
|
||||
"notifications.column_settings.mention": "Menciones:",
|
||||
"notifications.column_settings.push": "Notificaciones push:",
|
||||
"notifications.column_settings.push_meta": "Este dispositivo:",
|
||||
"notifications.column_settings.push": "Notificaciones push",
|
||||
"notifications.column_settings.push_meta": "Este dispositivo",
|
||||
"notifications.column_settings.reblog": "Retoots:",
|
||||
"notifications.column_settings.show": "Mostrar en columna",
|
||||
"notifications.column_settings.sound": "Reproducir sonido",
|
||||
@@ -194,11 +206,11 @@
|
||||
"report.submit": "Publicar",
|
||||
"report.target": "Reportando",
|
||||
"search.placeholder": "Buscar",
|
||||
"search_popout.search_format": "Advanced search format",
|
||||
"search_popout.tips.hashtag": "hashtag",
|
||||
"search_popout.search_format": "Formato de búsqueda avanzada",
|
||||
"search_popout.tips.hashtag": "etiqueta",
|
||||
"search_popout.tips.status": "status",
|
||||
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
|
||||
"search_popout.tips.user": "user",
|
||||
"search_popout.tips.text": "El texto simple devuelve correspondencias de nombre, usuario y hashtag",
|
||||
"search_popout.tips.user": "usuario",
|
||||
"search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
|
||||
"standalone.public_title": "Un pequeño vistazo...",
|
||||
"status.cannot_reblog": "Este toot no puede retootearse",
|
||||
@@ -229,10 +241,10 @@
|
||||
"tabs_bar.home": "Inicio",
|
||||
"tabs_bar.local_timeline": "Local",
|
||||
"tabs_bar.notifications": "Notificaciones",
|
||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||
"ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.",
|
||||
"upload_area.title": "Arrastra y suelta para subir",
|
||||
"upload_button.label": "Subir multimedia",
|
||||
"upload_form.description": "Describe for the visually impaired",
|
||||
"upload_form.description": "Describir para los usuarios con dificultad visual",
|
||||
"upload_form.undo": "Deshacer",
|
||||
"upload_progress.label": "Subiendo…",
|
||||
"video.close": "Cerrar video",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "پسندیدهها",
|
||||
"column.follow_requests": "درخواستهای پیگیری",
|
||||
"column.home": "خانه",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "کاربران بیصداشده",
|
||||
"column.notifications": "اعلانها",
|
||||
"column.pins": "نوشتههای ثابت",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "آیا واقعاً میخواهید {name} را مسدود کنید؟",
|
||||
"confirmations.delete.confirm": "پاک کن",
|
||||
"confirmations.delete.message": "آیا واقعاً میخواهید این نوشته را پاک کنید؟",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "پنهانسازی کل دامین",
|
||||
"confirmations.domain_block.message": "آیا جدی جدی میخواهید کل دامین {domain} را مسدود کنید؟ بیشتر وقتها مسدودکردن یا بیصداکردن چند حساب کاربری خاص کافی است و توصیه میشود.",
|
||||
"confirmations.mute.confirm": "بیصدا کن",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "بستن",
|
||||
"lightbox.next": "بعدی",
|
||||
"lightbox.previous": "قبلی",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "بارگیری...",
|
||||
"media_gallery.toggle_visible": "تغییر پیدایی",
|
||||
"missing_indicator.label": "پیدا نشد",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "درخواستهای پیگیری",
|
||||
"navigation_bar.info": "اطلاعات تکمیلی",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "خروج",
|
||||
"navigation_bar.mutes": "کاربران بیصداشده",
|
||||
"navigation_bar.pins": "نوشتههای ثابت",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favourites",
|
||||
"column.follow_requests": "Follow requests",
|
||||
"column.home": "Koti",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Muted users",
|
||||
"column.notifications": "Ilmoitukset",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||
"confirmations.delete.confirm": "Delete",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Sulje",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Ladataan...",
|
||||
"media_gallery.toggle_visible": "Toggle visibility",
|
||||
"missing_indicator.label": "Not found",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Follow requests",
|
||||
"navigation_bar.info": "Extended information",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Kirjaudu ulos",
|
||||
"navigation_bar.mutes": "Muted users",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -7,22 +7,22 @@
|
||||
"account.followers": "Abonné⋅e⋅s",
|
||||
"account.follows": "Abonnements",
|
||||
"account.follows_you": "Vous suit",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "Masquer les partages de @{name}",
|
||||
"account.media": "Média",
|
||||
"account.mention": "Mentionner",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "{name} a déménagé vers :",
|
||||
"account.mute": "Masquer",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "Ignorer les notifications de @{name}",
|
||||
"account.posts": "Statuts",
|
||||
"account.report": "Signaler",
|
||||
"account.requested": "Invitation envoyée",
|
||||
"account.share": "Partager le profil de @{name}",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.show_reblogs": "Afficher les partages de @{name}",
|
||||
"account.unblock": "Débloquer",
|
||||
"account.unblock_domain": "Ne plus masquer {domain}",
|
||||
"account.unfollow": "Ne plus suivre",
|
||||
"account.unmute": "Ne plus masquer",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.unmute_notifications": "Réactiver les notifications de @{name}",
|
||||
"account.view_full_profile": "Afficher le profil complet",
|
||||
"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.",
|
||||
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favoris",
|
||||
"column.follow_requests": "Demandes de suivi",
|
||||
"column.home": "Accueil",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Comptes masqués",
|
||||
"column.notifications": "Notifications",
|
||||
"column.pins": "Pouets épinglés",
|
||||
@@ -52,7 +53,7 @@
|
||||
"compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.",
|
||||
"compose_form.lock_disclaimer.lock": "verrouillé",
|
||||
"compose_form.placeholder": "Qu’avez-vous en tête ?",
|
||||
"compose_form.publish": "Pouet ",
|
||||
"compose_form.publish": "Pouet",
|
||||
"compose_form.publish_loud": "{publish} !",
|
||||
"compose_form.sensitive": "Marquer le média comme sensible",
|
||||
"compose_form.spoiler": "Masquer le texte derrière un avertissement",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Confirmez-vous le blocage de {name} ?",
|
||||
"confirmations.delete.confirm": "Supprimer",
|
||||
"confirmations.delete.message": "Confirmez-vous la suppression de ce pouet ?",
|
||||
"confirmations.delete_list.confirm": "Supprimer",
|
||||
"confirmations.delete_list.message": "Êtes-vous sûr de vouloir supprimer définitivement cette liste ?",
|
||||
"confirmations.domain_block.confirm": "Masquer le domaine entier",
|
||||
"confirmations.domain_block.message": "Êtes-vous vraiment, vraiment sûr⋅e de vouloir bloquer {domain} en entier ? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables.",
|
||||
"confirmations.mute.confirm": "Masquer",
|
||||
@@ -69,14 +72,14 @@
|
||||
"confirmations.unfollow.confirm": "Ne plus suivre",
|
||||
"confirmations.unfollow.message": "Voulez-vous arrêter de suivre {name} ?",
|
||||
"embed.instructions": "Intégrez ce statut à votre site en copiant le code ci-dessous.",
|
||||
"embed.preview": "Il apparaîtra comme cela : ",
|
||||
"embed.preview": "Il apparaîtra comme cela :",
|
||||
"emoji_button.activity": "Activités",
|
||||
"emoji_button.custom": "Personnalisés",
|
||||
"emoji_button.flags": "Drapeaux",
|
||||
"emoji_button.food": "Boire et manger",
|
||||
"emoji_button.label": "Insérer un émoji",
|
||||
"emoji_button.nature": "Nature",
|
||||
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.not_found": "Pas d'emojis !! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "Objets",
|
||||
"emoji_button.people": "Personnages",
|
||||
"emoji_button.recent": "Fréquemment utilisés",
|
||||
@@ -88,7 +91,7 @@
|
||||
"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.public_timeline": "le fil public",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "Il n'y a rien dans cette liste pour l'instant. Dès que des personnes de cette liste publierons de nouveaux statuts, ils apparaîtront ici.",
|
||||
"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.",
|
||||
"follow_request.authorize": "Accepter",
|
||||
@@ -104,37 +107,46 @@
|
||||
"home.column_settings.show_reblogs": "Afficher les partages",
|
||||
"home.column_settings.show_replies": "Afficher les réponses",
|
||||
"home.settings": "Paramètres de la colonne",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.back": "revenir en arrière",
|
||||
"keyboard_shortcuts.boost": "partager",
|
||||
"keyboard_shortcuts.column": "focaliser un statut dans l'une des colonnes",
|
||||
"keyboard_shortcuts.compose": "pour centrer la zone de redaction",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.down": "descendre dans la liste",
|
||||
"keyboard_shortcuts.enter": "pour ouvrir le statut",
|
||||
"keyboard_shortcuts.favourite": "vers les favoris",
|
||||
"keyboard_shortcuts.heading": "Raccourcis clavier",
|
||||
"keyboard_shortcuts.hotkey": "Raccourci",
|
||||
"keyboard_shortcuts.legend": "pour afficher cette légende",
|
||||
"keyboard_shortcuts.mention": "pour mentionner l'auteur",
|
||||
"keyboard_shortcuts.reply": "pour répondre",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.toot": "pour démarrer un tout nouveau pouet",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"lightbox.close": "Fermer",
|
||||
"lightbox.next": "Suivant",
|
||||
"lightbox.previous": "Précédent",
|
||||
"lists.account.add": "Ajouter à la liste",
|
||||
"lists.account.remove": "Supprimer de la liste",
|
||||
"lists.delete": "Effacer la liste",
|
||||
"lists.edit": "Éditer la liste",
|
||||
"lists.new.create": "Ajouter une liste",
|
||||
"lists.new.title_placeholder": "Titre de la nouvelle liste",
|
||||
"lists.search": "Rechercher parmi les gens que vous suivez",
|
||||
"lists.subheading": "Vos listes",
|
||||
"loading_indicator.label": "Chargement…",
|
||||
"media_gallery.toggle_visible": "Modifier la visibilité",
|
||||
"missing_indicator.label": "Non trouvé",
|
||||
"mute_modal.hide_notifications": "Hide notifications from this user?",
|
||||
"mute_modal.hide_notifications": "Masquer les notifications de cet utilisateur ?",
|
||||
"navigation_bar.blocks": "Comptes bloqués",
|
||||
"navigation_bar.community_timeline": "Fil public local",
|
||||
"navigation_bar.edit_profile": "Modifier le profil",
|
||||
"navigation_bar.favourites": "Favoris",
|
||||
"navigation_bar.follow_requests": "Demandes de suivi",
|
||||
"navigation_bar.info": "Plus d’informations",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "Raccourcis clavier",
|
||||
"navigation_bar.lists": "Listes",
|
||||
"navigation_bar.logout": "Déconnexion",
|
||||
"navigation_bar.mutes": "Comptes masqués",
|
||||
"navigation_bar.pins": "Pouets épinglés",
|
||||
@@ -147,7 +159,7 @@
|
||||
"notifications.clear": "Nettoyer",
|
||||
"notifications.clear_confirmation": "Voulez-vous vraiment supprimer toutes vos notifications ?",
|
||||
"notifications.column_settings.alert": "Notifications locales",
|
||||
"notifications.column_settings.favourite": "Favoris :",
|
||||
"notifications.column_settings.favourite": "Favoris :",
|
||||
"notifications.column_settings.follow": "Nouveaux⋅elles abonné⋅e⋅s :",
|
||||
"notifications.column_settings.mention": "Mentions :",
|
||||
"notifications.column_settings.push": "Notifications push",
|
||||
@@ -229,7 +241,7 @@
|
||||
"tabs_bar.home": "Accueil",
|
||||
"tabs_bar.local_timeline": "Fil public local",
|
||||
"tabs_bar.notifications": "Notifications",
|
||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
|
||||
"upload_area.title": "Glissez et déposez pour envoyer",
|
||||
"upload_button.label": "Joindre un média",
|
||||
"upload_form.description": "Décrire pour les malvoyants",
|
||||
|
259
app/javascript/mastodon/locales/gl.json
Normal file
259
app/javascript/mastodon/locales/gl.json
Normal file
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"account.block": "Bloquear @{name}",
|
||||
"account.block_domain": "Ocultar calquer contido de {domain}",
|
||||
"account.disclaimer_full": "A información inferior podería mostrar un perfil incompleto da usuaria.",
|
||||
"account.edit_profile": "Editar perfil",
|
||||
"account.follow": "Seguir",
|
||||
"account.followers": "Seguidoras",
|
||||
"account.follows": "Seguindo",
|
||||
"account.follows_you": "Séguena",
|
||||
"account.hide_reblogs": "Ocultar repeticións de @{name}",
|
||||
"account.media": "Medios",
|
||||
"account.mention": "Mencionar @{name}",
|
||||
"account.moved_to": "{name} marchou a:",
|
||||
"account.mute": "Acalar @{name}",
|
||||
"account.mute_notifications": "Acalar as notificacións de @{name}",
|
||||
"account.posts": "Publicacións",
|
||||
"account.report": "Informar sobre @{name}",
|
||||
"account.requested": "Agardando aceptación. Pulse para cancelar a solicitude de seguimento",
|
||||
"account.share": "Compartir o perfil de @{name}",
|
||||
"account.show_reblogs": "Mostrar repeticións de @{name}",
|
||||
"account.unblock": "Desbloquear @{name}",
|
||||
"account.unblock_domain": "Non ocultar {domain}",
|
||||
"account.unfollow": "Non seguir",
|
||||
"account.unmute": "Non acalar @{name}",
|
||||
"account.unmute_notifications": "Desbloquear as notificacións de @{name}",
|
||||
"account.view_full_profile": "Ver o perfil completo",
|
||||
"boost_modal.combo": "Pulse {combo} para saltar esto a próxima vez",
|
||||
"bundle_column_error.body": "Houbo un fallo mentras se cargaba este compoñente.",
|
||||
"bundle_column_error.retry": "Inténteo de novo",
|
||||
"bundle_column_error.title": "Fallo na rede",
|
||||
"bundle_modal_error.close": "Pechar",
|
||||
"bundle_modal_error.message": "Algo fallou mentras se cargaba este compoñente.",
|
||||
"bundle_modal_error.retry": "Inténteo de novo",
|
||||
"column.blocks": "Usuarias bloqueadas",
|
||||
"column.community": "Liña temporal local",
|
||||
"column.favourites": "Favoritas",
|
||||
"column.follow_requests": "Peticións de seguimento",
|
||||
"column.home": "Inicio",
|
||||
"column.lists": "Listas",
|
||||
"column.mutes": "Usuarias acaladas",
|
||||
"column.notifications": "Notificacións",
|
||||
"column.pins": "Mensaxes fixadas",
|
||||
"column.public": "Liña temporal federada",
|
||||
"column_back_button.label": "Atrás",
|
||||
"column_header.hide_settings": "Agochar axustes",
|
||||
"column_header.moveLeft_settings": "Mover a columna hacia a esquerda",
|
||||
"column_header.moveRight_settings": "Mover a columna hacia a dereita",
|
||||
"column_header.pin": "Fixar",
|
||||
"column_header.show_settings": "Mostras axustes",
|
||||
"column_header.unpin": "Soltar",
|
||||
"column_subheading.navigation": "Navegación",
|
||||
"column_subheading.settings": "Axustes",
|
||||
"compose_form.lock_disclaimer": "A súa conta non está {locked}. Calquera pode seguila para ver as súas mensaxes só-para-seguidoras.",
|
||||
"compose_form.lock_disclaimer.lock": "bloqueado",
|
||||
"compose_form.placeholder": "A qué andas?",
|
||||
"compose_form.publish": "Toot",
|
||||
"compose_form.publish_loud": "{publish}!",
|
||||
"compose_form.sensitive": "Marcar medios como sensibles",
|
||||
"compose_form.spoiler": "Agochar texto detrás de un aviso",
|
||||
"compose_form.spoiler_placeholder": "Escriba o aviso aquí",
|
||||
"confirmation_modal.cancel": "Cancelar",
|
||||
"confirmations.block.confirm": "Bloquear",
|
||||
"confirmations.block.message": "Está segura de querer bloquear a {name}?",
|
||||
"confirmations.delete.confirm": "Borrar",
|
||||
"confirmations.delete.message": "Está segura de que quere eliminar este estado?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Estás seguro de que queres eliminar permanentemente esta lista?",
|
||||
"confirmations.domain_block.confirm": "Agochar un dominio completo",
|
||||
"confirmations.domain_block.message": "Realmente está segura de que quere bloquear por completo o dominio {domain}? Normalmente é suficiente, e preferible, bloquear de xeito selectivo varios elementos.",
|
||||
"confirmations.mute.confirm": "Acalar",
|
||||
"confirmations.mute.message": "Está segura de que quere acalar a {name}?",
|
||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||
"confirmations.unfollow.message": "Quere deixar de seguir a {name}?",
|
||||
"embed.instructions": "Copie o código inferior para incrustar no seu sitio web este estado.",
|
||||
"embed.preview": "Así será mostrado:",
|
||||
"emoji_button.activity": "Actividade",
|
||||
"emoji_button.custom": "Personalizado",
|
||||
"emoji_button.flags": "Marcas",
|
||||
"emoji_button.food": "Comida e Bebida",
|
||||
"emoji_button.label": "Insertar emoji",
|
||||
"emoji_button.nature": "Natureza",
|
||||
"emoji_button.not_found": "Sen emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "Obxetos",
|
||||
"emoji_button.people": "Xente",
|
||||
"emoji_button.recent": "Utilizadas con frecuencia",
|
||||
"emoji_button.search": "Buscar...",
|
||||
"emoji_button.search_results": "Resultados da busca",
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viaxes e Lugares",
|
||||
"empty_column.community": "A liña temporal local está baldeira. Escriba algo de xeito público para que rule!",
|
||||
"empty_column.hashtag": "Aínda non hai nada con esta etiqueta.",
|
||||
"empty_column.home": "A súa liña temporal de inicio está baldeira! Visite {public} ou utilice a busca para atopar outras usuarias.",
|
||||
"empty_column.home.public_timeline": "a liña temporal pública",
|
||||
"empty_column.list": "Aínda non hai nada en esta lista.",
|
||||
"empty_column.notifications": "Aínda non ten notificacións. Interactúe con outras para iniciar unha conversa.",
|
||||
"empty_column.public": "Nada por aquí! Escriba algo de xeito público, ou siga manualmente usuarias de outras instancias para ir enchéndoa",
|
||||
"follow_request.authorize": "Autorizar",
|
||||
"follow_request.reject": "Rexeitar",
|
||||
"getting_started.appsshort": "Aplicacións",
|
||||
"getting_started.faq": "PMF",
|
||||
"getting_started.heading": "Comezando",
|
||||
"getting_started.open_source_notice": "Mastodon é software de código aberto. Pode contribuír ou informar de fallos en GitHub en {github}.",
|
||||
"getting_started.userguide": "Guía de usuaria",
|
||||
"home.column_settings.advanced": "Avanzado",
|
||||
"home.column_settings.basic": "Básico",
|
||||
"home.column_settings.filter_regex": "Filtrar expresións regulares",
|
||||
"home.column_settings.show_reblogs": "Mostrar repeticións",
|
||||
"home.column_settings.show_replies": "Mostrar respostas",
|
||||
"home.settings": "Axustes da columna",
|
||||
"keyboard_shortcuts.back": "voltar atrás",
|
||||
"keyboard_shortcuts.boost": "repetir",
|
||||
"keyboard_shortcuts.column": "destacar un estado en unha das columnas",
|
||||
"keyboard_shortcuts.compose": "Foco no área de escritura",
|
||||
"keyboard_shortcuts.description": "Descrición",
|
||||
"keyboard_shortcuts.down": "ir hacia abaixo na lista",
|
||||
"keyboard_shortcuts.enter": "abrir estado",
|
||||
"keyboard_shortcuts.favourite": "marcar como favorito",
|
||||
"keyboard_shortcuts.heading": "Atallos do teclado",
|
||||
"keyboard_shortcuts.hotkey": "Tecla de acceso directo",
|
||||
"keyboard_shortcuts.legend": "para mostrar esta lenda",
|
||||
"keyboard_shortcuts.mention": "para mencionar o autor",
|
||||
"keyboard_shortcuts.reply": "para responder",
|
||||
"keyboard_shortcuts.search": "para centrar a busca",
|
||||
"keyboard_shortcuts.toot": "escribir un toot novo",
|
||||
"keyboard_shortcuts.unfocus": "quitar o foco do área de escritura/busca",
|
||||
"keyboard_shortcuts.up": "ir hacia arriba na lista",
|
||||
"lightbox.close": "Fechar",
|
||||
"lightbox.next": "Seguinte",
|
||||
"lightbox.previous": "Anterior",
|
||||
"lists.account.add": "Engadir á lista",
|
||||
"lists.account.remove": "Eliminar da lista",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Editar lista",
|
||||
"lists.new.create": "Engadir lista",
|
||||
"lists.new.title_placeholder": "Novo título da lista",
|
||||
"lists.search": "Procurar entre a xente que segues",
|
||||
"lists.subheading": "As túas listas",
|
||||
"loading_indicator.label": "Cargando...",
|
||||
"media_gallery.toggle_visible": "Dar visibilidade",
|
||||
"missing_indicator.label": "Non atopado",
|
||||
"mute_modal.hide_notifications": "Esconder notificacións deste usuario?",
|
||||
"navigation_bar.blocks": "Usuarios bloqueados",
|
||||
"navigation_bar.community_timeline": "Liña temporal local",
|
||||
"navigation_bar.edit_profile": "Editar perfil",
|
||||
"navigation_bar.favourites": "Favoritas",
|
||||
"navigation_bar.follow_requests": "Peticións de seguimento",
|
||||
"navigation_bar.info": "Sobre esta instancia",
|
||||
"navigation_bar.keyboard_shortcuts": "Atallos do teclado",
|
||||
"navigation_bar.lists": "Listas",
|
||||
"navigation_bar.logout": "Sair",
|
||||
"navigation_bar.mutes": "Usuarias acaladas",
|
||||
"navigation_bar.pins": "Mensaxes fixadas",
|
||||
"navigation_bar.preferences": "Preferencias",
|
||||
"navigation_bar.public_timeline": "Liña temporal federada",
|
||||
"notification.favourite": "{name} marcou como favorito o seu estado",
|
||||
"notification.follow": "{name} está a seguila",
|
||||
"notification.mention": "{name} mencionoute",
|
||||
"notification.reblog": "{name} promocionou o seu estado",
|
||||
"notifications.clear": "Limpar notificacións",
|
||||
"notifications.clear_confirmation": "Estás seguro de que queres limpar permanentemente todas as túas notificacións?",
|
||||
"notifications.column_settings.alert": "Notificacións de escritorio",
|
||||
"notifications.column_settings.favourite": "Favoritas:",
|
||||
"notifications.column_settings.follow": "Novos seguidores:",
|
||||
"notifications.column_settings.mention": "Mencións:",
|
||||
"notifications.column_settings.push": "Enviar notificacións",
|
||||
"notifications.column_settings.push_meta": "Este aparello",
|
||||
"notifications.column_settings.reblog": "Promocións:",
|
||||
"notifications.column_settings.show": "Mostrar en columna",
|
||||
"notifications.column_settings.sound": "Reproducir son",
|
||||
"onboarding.done": "Feito",
|
||||
"onboarding.next": "Seguinte",
|
||||
"onboarding.page_five.public_timelines": "A liña de tempo local mostra as publicacións públicas de todos en {domain}. A liña de tempo federada mostra as publicacións públicas de todos os que as persoas en {domain} seguen. Estas son as Liñas de tempo públicas, unha boa forma de descubrir novas persoas.",
|
||||
"onboarding.page_four.home": "A liña de tempo local mostra as publicacións das persoas que segues.",
|
||||
"onboarding.page_four.notifications": "A columna de notificacións mostra cando alguén interactúa contigo.",
|
||||
"onboarding.page_one.federation": "Mastodon é unha rede de servidores independentes que se unen para facer unha rede social máis grande. Chamamos instancias a estes servidores.",
|
||||
"onboarding.page_one.handle": "Estás en {domain}, polo que o teu nome de usuario completo é {handle}",
|
||||
"onboarding.page_one.welcome": "Benvido a Mastodon!",
|
||||
"onboarding.page_six.admin": "O administrador da túa instancia é {admin}.",
|
||||
"onboarding.page_six.almost_done": "Case feito...",
|
||||
"onboarding.page_six.appetoot": "Que tootes ben!",
|
||||
"onboarding.page_six.apps_available": "Hai {apps} dispoñíbeis para iOS, Android e outras plataformas.",
|
||||
"onboarding.page_six.github": "Mastodon é un software gratuito e de código aberto. Pode informar de erros, solicitar novas funcionalidades ou contribuír ao código en {github}.",
|
||||
"onboarding.page_six.guidelines": "directrices da comunidade",
|
||||
"onboarding.page_six.read_guidelines": "Por favor, le as {guidelines} do {domain}!",
|
||||
"onboarding.page_six.various_app": "aplicacións móbiles",
|
||||
"onboarding.page_three.profile": "Edita o teu perfil para cambiar o teu avatar, bio e nome. Alí, tamén atoparás outras preferencias.",
|
||||
"onboarding.page_three.search": "Utilice a barra de busca para atopar xente e descubrir etiquetas, como {illustration} e {introductions}. Para atopar unha usuaria que non está en esta instancia utilice o seu enderezo completo.",
|
||||
"onboarding.page_two.compose": "Escriba mensaxes desde a columna de composición. Pode subir imaxes, mudar as opcións de intimidade e engadir avisos sobre o contido coas iconas inferiores.",
|
||||
"onboarding.skip": "Saltar",
|
||||
"privacy.change": "Axustar a intimidade do estado",
|
||||
"privacy.direct.long": "Enviar exclusivamente as usuarias mencionadas",
|
||||
"privacy.direct.short": "Directa",
|
||||
"privacy.private.long": "Enviar só as seguidoras",
|
||||
"privacy.private.short": "Só-seguidoras",
|
||||
"privacy.public.long": "Publicar na liña temporal pública",
|
||||
"privacy.public.short": "Pública",
|
||||
"privacy.unlisted.long": "Non publicar en liñas temporais públicas",
|
||||
"privacy.unlisted.short": "Non listada",
|
||||
"relative_time.days": "{number}d",
|
||||
"relative_time.hours": "{number}h",
|
||||
"relative_time.just_now": "agora",
|
||||
"relative_time.minutes": "{number}m",
|
||||
"relative_time.seconds": "{number}s",
|
||||
"reply_indicator.cancel": "Cancelar",
|
||||
"report.placeholder": "Comentarios adicionais",
|
||||
"report.submit": "Enviar",
|
||||
"report.target": "Informar {target}",
|
||||
"search.placeholder": "Buscar",
|
||||
"search_popout.search_format": "Formato de busca avanzada",
|
||||
"search_popout.tips.hashtag": "etiqueta",
|
||||
"search_popout.tips.status": "estado",
|
||||
"search_popout.tips.text": "Texto simple devolve coincidencias con nomes públicos, nomes de usuaria e etiquetas",
|
||||
"search_popout.tips.user": "usuaria",
|
||||
"search_results.total": "{count, number} {count,plural,one {result} outros {results}}",
|
||||
"standalone.public_title": "Ollada dentro...",
|
||||
"status.cannot_reblog": "Esta mensaxe non pode ser promocionada",
|
||||
"status.delete": "Eliminar",
|
||||
"status.embed": "Incrustar",
|
||||
"status.favourite": "Favorita",
|
||||
"status.load_more": "Cargar máis",
|
||||
"status.media_hidden": "Medios ocultos",
|
||||
"status.mention": "Mencionar @{name}",
|
||||
"status.more": "Máis",
|
||||
"status.mute_conversation": "Acalar conversa",
|
||||
"status.open": "Expandir este estado",
|
||||
"status.pin": "Fixar no perfil",
|
||||
"status.reblog": "Promocionar",
|
||||
"status.reblogged_by": "{name} promocionado",
|
||||
"status.reply": "Resposta",
|
||||
"status.replyAll": "Resposta a conversa",
|
||||
"status.report": "Informar @{name}",
|
||||
"status.sensitive_toggle": "Pulse para ver",
|
||||
"status.sensitive_warning": "Contido sensible",
|
||||
"status.share": "Compartir",
|
||||
"status.show_less": "Mostrar menos",
|
||||
"status.show_more": "Mostrar máis",
|
||||
"status.unmute_conversation": "Non acalar a conversa",
|
||||
"status.unpin": "Despegar do perfil",
|
||||
"tabs_bar.compose": "Compoñer",
|
||||
"tabs_bar.federated_timeline": "Federado",
|
||||
"tabs_bar.home": "Inicio",
|
||||
"tabs_bar.local_timeline": "Local",
|
||||
"tabs_bar.notifications": "Notificacións",
|
||||
"ui.beforeunload": "O borrador perderase se sae de Mastodon.",
|
||||
"upload_area.title": "Arrastre e solte para subir",
|
||||
"upload_button.label": "Engadir medios",
|
||||
"upload_form.description": "Describa para deficientes visuais",
|
||||
"upload_form.undo": "Desfacer",
|
||||
"upload_progress.label": "Subindo...",
|
||||
"video.close": "Pechar video",
|
||||
"video.exit_fullscreen": "Saír da pantalla completa",
|
||||
"video.expand": "Expandir vídeo",
|
||||
"video.fullscreen": "Pantalla completa",
|
||||
"video.hide": "Agochar vídeo",
|
||||
"video.mute": "Acalar son",
|
||||
"video.pause": "Pausar",
|
||||
"video.play": "Reproducir",
|
||||
"video.unmute": "Permitir son"
|
||||
}
|
@@ -1,52 +1,53 @@
|
||||
{
|
||||
"account.block": "חסימת @{name}",
|
||||
"account.block_domain": "להסתיר הכל מהקהילה {domain}",
|
||||
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||
"account.disclaimer_full": "המידע להלן עשוי להיות לא עדכני או לא שלם.",
|
||||
"account.edit_profile": "עריכת פרופיל",
|
||||
"account.follow": "מעקב",
|
||||
"account.followers": "עוקבים",
|
||||
"account.follows": "נעקבים",
|
||||
"account.follows_you": "במעקב אחריך",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "להסתיר הידהודים מאת @{name}",
|
||||
"account.media": "מדיה",
|
||||
"account.mention": "אזכור של @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "החשבון {name} הועבר אל:",
|
||||
"account.mute": "להשתיק את @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "להסתיר התראות מאת @{name}",
|
||||
"account.posts": "הודעות",
|
||||
"account.report": "לדווח על @{name}",
|
||||
"account.requested": "בהמתנה לאישור",
|
||||
"account.share": "Share @{name}'s profile",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.share": "לשתף את אודות @{name}",
|
||||
"account.show_reblogs": "להראות הדהודים מאת @{name}",
|
||||
"account.unblock": "הסרת חסימה מעל @{name}",
|
||||
"account.unblock_domain": "הסר חסימה מקהילת {domain}",
|
||||
"account.unfollow": "הפסקת מעקב",
|
||||
"account.unmute": "הפסקת השתקת @{name}",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.view_full_profile": "View full profile",
|
||||
"account.unmute_notifications": "להפסיק הסתרת הודעות מעם @{name}",
|
||||
"account.view_full_profile": "הראה אודות מלאות",
|
||||
"boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה",
|
||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||
"bundle_column_error.retry": "Try again",
|
||||
"bundle_column_error.body": "משהו השתבש בעת הצגת הרכיב הזה.",
|
||||
"bundle_column_error.retry": "לנסות שוב",
|
||||
"bundle_column_error.title": "Network error",
|
||||
"bundle_modal_error.close": "Close",
|
||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
||||
"bundle_modal_error.retry": "Try again",
|
||||
"bundle_modal_error.close": "לסגור",
|
||||
"bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.",
|
||||
"bundle_modal_error.retry": "לנסות שוב",
|
||||
"column.blocks": "חסימות",
|
||||
"column.community": "ציר זמן מקומי",
|
||||
"column.favourites": "חיבובים",
|
||||
"column.follow_requests": "בקשות מעקב",
|
||||
"column.home": "בבית",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "השתקות",
|
||||
"column.notifications": "התראות",
|
||||
"column.pins": "Pinned toot",
|
||||
"column.public": "בפרהסיה",
|
||||
"column_back_button.label": "חזרה",
|
||||
"column_header.hide_settings": "Hide settings",
|
||||
"column_header.moveLeft_settings": "Move column to the left",
|
||||
"column_header.moveRight_settings": "Move column to the right",
|
||||
"column_header.pin": "Pin",
|
||||
"column_header.show_settings": "Show settings",
|
||||
"column_header.unpin": "Unpin",
|
||||
"column_header.hide_settings": "הסתרת העדפות",
|
||||
"column_header.moveLeft_settings": "הזחת טור לשמאל",
|
||||
"column_header.moveRight_settings": "הזחת טור לימין",
|
||||
"column_header.pin": "קיבוע",
|
||||
"column_header.show_settings": "הצגת העדפות",
|
||||
"column_header.unpin": "שחרור קיבוע",
|
||||
"column_subheading.navigation": "ניווט",
|
||||
"column_subheading.settings": "אפשרויות",
|
||||
"compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.",
|
||||
@@ -62,35 +63,37 @@
|
||||
"confirmations.block.message": "לחסום את {name}?",
|
||||
"confirmations.delete.confirm": "למחוק",
|
||||
"confirmations.delete.message": "למחוק את ההודעה?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "הסתר קהילה שלמה",
|
||||
"confirmations.domain_block.message": "באמת באמת לחסום את כל קהילת {domain}? ברב המקרים השתקות נבחרות של מספר משתמשים מסויימים צריכה להספיק.",
|
||||
"confirmations.mute.confirm": "להשתיק",
|
||||
"confirmations.mute.message": "להשתיק את {name}?",
|
||||
"confirmations.unfollow.confirm": "Unfollow",
|
||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
||||
"embed.instructions": "Embed this status on your website by copying the code below.",
|
||||
"embed.preview": "Here is what it will look like:",
|
||||
"confirmations.unfollow.confirm": "להפסיק מעקב",
|
||||
"confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?",
|
||||
"embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.",
|
||||
"embed.preview": "דוגמא כיצד זה יראה:",
|
||||
"emoji_button.activity": "פעילות",
|
||||
"emoji_button.custom": "Custom",
|
||||
"emoji_button.custom": "מיוחדים",
|
||||
"emoji_button.flags": "דגלים",
|
||||
"emoji_button.food": "אוכל ושתיה",
|
||||
"emoji_button.label": "הוספת אמוג'י",
|
||||
"emoji_button.nature": "טבע",
|
||||
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.not_found": "רגישון לא נמצא!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "חפצים",
|
||||
"emoji_button.people": "אנשים",
|
||||
"emoji_button.recent": "Frequently used",
|
||||
"emoji_button.recent": "בשימוש תדיר",
|
||||
"emoji_button.search": "חיפוש...",
|
||||
"emoji_button.search_results": "Search results",
|
||||
"emoji_button.search_results": "תוצאות חיפוש",
|
||||
"emoji_button.symbols": "סמלים",
|
||||
"emoji_button.travel": "טיולים ואתרים",
|
||||
"empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
|
||||
"empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.",
|
||||
"empty_column.home": "אף אחד לא במעקב עדיין. אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר חצוצרנים אחרים.",
|
||||
"empty_column.home.public_timeline": "ציר זמן בין-קהילתי",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב!",
|
||||
"empty_column.public": "אין פה כלום! כדי למלא את הטור הזה אפשר לכתוב משהו, או להתחיל לעקוב אחרי אנשים מקהילות אחרות.",
|
||||
"empty_column.list": "אין עדיין מאום ברשימה.",
|
||||
"empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב.",
|
||||
"empty_column.public": "אין פה כלום! כדי למלא את הטור הזה אפשר לכתוב משהו, או להתחיל לעקוב אחרי אנשים מקהילות אחרות",
|
||||
"follow_request.authorize": "קבלה",
|
||||
"follow_request.reject": "דחיה",
|
||||
"getting_started.appsshort": "יישומונים לניידים",
|
||||
@@ -104,40 +107,49 @@
|
||||
"home.column_settings.show_reblogs": "הצגת הדהודים",
|
||||
"home.column_settings.show_replies": "הצגת תגובות",
|
||||
"home.settings": "הגדרות טור",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.back": "ניווט חזרה",
|
||||
"keyboard_shortcuts.boost": "להדהד",
|
||||
"keyboard_shortcuts.column": "להתמקד בהודעה באחד מהטורים",
|
||||
"keyboard_shortcuts.compose": "להתמקד בתיבת חיבור ההודעות",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.down": "לנוע במורד הרשימה",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.favourite": "לחבב",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"keyboard_shortcuts.hotkey": "מקש קיצור",
|
||||
"keyboard_shortcuts.legend": "להציג את הפירוש",
|
||||
"keyboard_shortcuts.mention": "לאזכר את המחבר(ת)",
|
||||
"keyboard_shortcuts.reply": "לענות",
|
||||
"keyboard_shortcuts.search": "להתמקד בחלון החיפוש",
|
||||
"keyboard_shortcuts.toot": "להתחיל חיצרוץ חדש",
|
||||
"keyboard_shortcuts.unfocus": "לצאת מתיבת חיבור/חיפוש",
|
||||
"keyboard_shortcuts.up": "לנוע במעלה הרשימה",
|
||||
"lightbox.close": "סגירה",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lightbox.next": "הלאה",
|
||||
"lightbox.previous": "הקודם",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "טוען...",
|
||||
"media_gallery.toggle_visible": "נראה\\בלתי נראה",
|
||||
"missing_indicator.label": "לא נמצא",
|
||||
"mute_modal.hide_notifications": "Hide notifications from this user?",
|
||||
"mute_modal.hide_notifications": "להסתיר הודעות מחשבון זה?",
|
||||
"navigation_bar.blocks": "חסימות",
|
||||
"navigation_bar.community_timeline": "ציר זמן מקומי",
|
||||
"navigation_bar.edit_profile": "עריכת פרופיל",
|
||||
"navigation_bar.favourites": "חיבובים",
|
||||
"navigation_bar.follow_requests": "בקשות מעקב",
|
||||
"navigation_bar.info": "מידע נוסף",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "קיצורי מקלדת",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "יציאה",
|
||||
"navigation_bar.mutes": "השתקות",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
"navigation_bar.pins": "חיצרוצים מקובעים",
|
||||
"navigation_bar.preferences": "העדפות",
|
||||
"navigation_bar.public_timeline": "ציר זמן בין-קהילתי",
|
||||
"notification.favourite": "חצרוצך חובב על ידי {name}",
|
||||
@@ -150,8 +162,8 @@
|
||||
"notifications.column_settings.favourite": "מחובבים:",
|
||||
"notifications.column_settings.follow": "עוקבים חדשים:",
|
||||
"notifications.column_settings.mention": "פניות:",
|
||||
"notifications.column_settings.push": "Push notifications",
|
||||
"notifications.column_settings.push_meta": "This device",
|
||||
"notifications.column_settings.push": "הודעות בדחיפה",
|
||||
"notifications.column_settings.push_meta": "מכשיר זה",
|
||||
"notifications.column_settings.reblog": "הדהודים:",
|
||||
"notifications.column_settings.show": "הצגה בטור",
|
||||
"notifications.column_settings.sound": "שמע מופעל",
|
||||
@@ -160,7 +172,7 @@
|
||||
"onboarding.page_five.public_timelines": "ציר הזמן המקומי מראה הודעות פומביות מכל באי קהילת {domain}. ציר הזמן העולמי מראה הודעות פומביות מאת כי מי שבאי קהילת {domain} עוקבים אחריו. אלו צירי הזמן הפומביים, דרך נהדרת לגלות אנשים חדשים.",
|
||||
"onboarding.page_four.home": "ציר זמן הבית מראה הודעות מהנעקבים שלך.",
|
||||
"onboarding.page_four.notifications": "טור ההתראות מראה כשמישהו מתייחס להודעות שלך.",
|
||||
"onboarding.page_one.federation": "מסטודון היא רשת של שרתים עצמאיים מצורפים ביחד לכדי רשת חברתית אחת גדולה. אנחנו מכנים את השרתים האלו: קהילות",
|
||||
"onboarding.page_one.federation": "מסטודון היא רשת של שרתים עצמאיים מצורפים ביחד לכדי רשת חברתית אחת גדולה. אנחנו מכנים את השרתים האלו קהילות.",
|
||||
"onboarding.page_one.handle": "אתם בקהילה {domain}, ולכן מזהה המשתמש המלא שלכם הוא {handle}",
|
||||
"onboarding.page_one.welcome": "ברוכים הבאים למסטודון!",
|
||||
"onboarding.page_six.admin": "הקהילה מנוהלת בידי {admin}.",
|
||||
@@ -186,7 +198,7 @@
|
||||
"privacy.unlisted.short": "לא לפיד הכללי",
|
||||
"relative_time.days": "{number}d",
|
||||
"relative_time.hours": "{number}h",
|
||||
"relative_time.just_now": "now",
|
||||
"relative_time.just_now": "כרגע",
|
||||
"relative_time.minutes": "{number}m",
|
||||
"relative_time.seconds": "{number}s",
|
||||
"reply_indicator.cancel": "ביטול",
|
||||
@@ -194,24 +206,24 @@
|
||||
"report.submit": "שליחה",
|
||||
"report.target": "דיווח",
|
||||
"search.placeholder": "חיפוש",
|
||||
"search_popout.search_format": "Advanced search format",
|
||||
"search_popout.tips.hashtag": "hashtag",
|
||||
"search_popout.search_format": "מבנה חיפוש מתקדם",
|
||||
"search_popout.tips.hashtag": "האשתג",
|
||||
"search_popout.tips.status": "status",
|
||||
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
|
||||
"search_popout.tips.user": "user",
|
||||
"search_popout.tips.text": "טקסט פשוט מחזיר כינויים, שמות משתמש והאשתגים",
|
||||
"search_popout.tips.user": "משתמש(ת)",
|
||||
"search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}",
|
||||
"standalone.public_title": "A look inside...",
|
||||
"standalone.public_title": "הצצה פנימה...",
|
||||
"status.cannot_reblog": "לא ניתן להדהד הודעה זו",
|
||||
"status.delete": "מחיקה",
|
||||
"status.embed": "Embed",
|
||||
"status.embed": "הטמעה",
|
||||
"status.favourite": "חיבוב",
|
||||
"status.load_more": "עוד",
|
||||
"status.media_hidden": "מדיה מוסתרת",
|
||||
"status.mention": "פניה אל @{name}",
|
||||
"status.more": "More",
|
||||
"status.more": "עוד",
|
||||
"status.mute_conversation": "השתקת שיחה",
|
||||
"status.open": "הרחבת הודעה",
|
||||
"status.pin": "Pin on profile",
|
||||
"status.pin": "לקבע באודות",
|
||||
"status.reblog": "הדהוד",
|
||||
"status.reblogged_by": "הודהד על ידי {name}",
|
||||
"status.reply": "תגובה",
|
||||
@@ -219,29 +231,29 @@
|
||||
"status.report": "דיווח על @{name}",
|
||||
"status.sensitive_toggle": "לחצו כדי לראות",
|
||||
"status.sensitive_warning": "תוכן רגיש",
|
||||
"status.share": "Share",
|
||||
"status.share": "שיתוף",
|
||||
"status.show_less": "הראה פחות",
|
||||
"status.show_more": "הראה יותר",
|
||||
"status.unmute_conversation": "הסרת השתקת שיחה",
|
||||
"status.unpin": "Unpin from profile",
|
||||
"status.unpin": "לשחרר מקיבוע באודות",
|
||||
"tabs_bar.compose": "חיבור",
|
||||
"tabs_bar.federated_timeline": "ציר זמן בין-קהילתי",
|
||||
"tabs_bar.home": "בבית",
|
||||
"tabs_bar.local_timeline": "ציר זמן מקומי",
|
||||
"tabs_bar.notifications": "התראות",
|
||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||
"ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.",
|
||||
"upload_area.title": "ניתן להעלות על ידי Drag & drop",
|
||||
"upload_button.label": "הוספת מדיה",
|
||||
"upload_form.description": "Describe for the visually impaired",
|
||||
"upload_form.description": "תיאור לכבדי ראיה",
|
||||
"upload_form.undo": "ביטול",
|
||||
"upload_progress.label": "עולה...",
|
||||
"video.close": "Close video",
|
||||
"video.exit_fullscreen": "Exit full screen",
|
||||
"video.expand": "Expand video",
|
||||
"video.close": "סגירת וידאו",
|
||||
"video.exit_fullscreen": "יציאה ממסך מלא",
|
||||
"video.expand": "להרחיב וידאו",
|
||||
"video.fullscreen": "Full screen",
|
||||
"video.hide": "Hide video",
|
||||
"video.mute": "Mute sound",
|
||||
"video.hide": "להסתיר וידאו",
|
||||
"video.mute": "השתקת צליל",
|
||||
"video.pause": "Pause",
|
||||
"video.play": "Play",
|
||||
"video.unmute": "Unmute sound"
|
||||
"video.play": "ניגון",
|
||||
"video.unmute": "החזרת צליל"
|
||||
}
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favoriti",
|
||||
"column.follow_requests": "Zahtjevi za slijeđenje",
|
||||
"column.home": "Dom",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Utišani korisnici",
|
||||
"column.notifications": "Notifikacije",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Želiš li sigurno blokirati {name}?",
|
||||
"confirmations.delete.confirm": "Obriši",
|
||||
"confirmations.delete.message": "Želiš li stvarno obrisati ovaj status?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Sakrij cijelu domenu",
|
||||
"confirmations.domain_block.message": "Jesi li zaista, zaista siguran da želiš potpuno blokirati {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Utišaj",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Zatvori",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Učitavam...",
|
||||
"media_gallery.toggle_visible": "Preklopi vidljivost",
|
||||
"missing_indicator.label": "Nije nađen",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Zahtjevi za slijeđenje",
|
||||
"navigation_bar.info": "Više informacija",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Odjavi se",
|
||||
"navigation_bar.mutes": "Utišani korisnici",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favourites",
|
||||
"column.follow_requests": "Follow requests",
|
||||
"column.home": "Kezdőlap",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Muted users",
|
||||
"column.notifications": "Értesítések",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||
"confirmations.delete.confirm": "Delete",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Bezárás",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Betöltés...",
|
||||
"media_gallery.toggle_visible": "Toggle visibility",
|
||||
"missing_indicator.label": "Not found",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Follow requests",
|
||||
"navigation_bar.info": "Extended information",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Kijelentkezés",
|
||||
"navigation_bar.mutes": "Muted users",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favorit",
|
||||
"column.follow_requests": "Permintaan mengikuti",
|
||||
"column.home": "Beranda",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Pengguna dibisukan",
|
||||
"column.notifications": "Notifikasi",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Apa anda yakin ingin memblokir {name}?",
|
||||
"confirmations.delete.confirm": "Hapus",
|
||||
"confirmations.delete.message": "Apa anda yakin akan menghapus status ini?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Bisukan",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Tutup",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Tunggu sebentar...",
|
||||
"media_gallery.toggle_visible": "Tampil/Sembunyikan",
|
||||
"missing_indicator.label": "Tidak ditemukan",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Permintaan mengikuti",
|
||||
"navigation_bar.info": "Informasi selengkapnya",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Keluar",
|
||||
"navigation_bar.mutes": "Pengguna dibisukan",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favorati",
|
||||
"column.follow_requests": "Demandi di sequado",
|
||||
"column.home": "Hemo",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Celita uzeri",
|
||||
"column.notifications": "Savigi",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||
"confirmations.delete.confirm": "Delete",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Klozar",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Kargante...",
|
||||
"media_gallery.toggle_visible": "Chanjar videbleso",
|
||||
"missing_indicator.label": "Ne trovita",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Demandi di sequado",
|
||||
"navigation_bar.info": "Detaloza informi",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Ekirar",
|
||||
"navigation_bar.mutes": "Celita uzeri",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Apprezzati",
|
||||
"column.follow_requests": "Richieste di amicizia",
|
||||
"column.home": "Home",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Utenti silenziati",
|
||||
"column.notifications": "Notifiche",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||
"confirmations.delete.confirm": "Delete",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Chiudi",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Carico...",
|
||||
"media_gallery.toggle_visible": "Imposta visibilità",
|
||||
"missing_indicator.label": "Non trovato",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Richieste di amicizia",
|
||||
"navigation_bar.info": "Informazioni estese",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Logout",
|
||||
"navigation_bar.mutes": "Utenti silenziati",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -24,7 +24,7 @@
|
||||
"account.unmute": "ミュート解除",
|
||||
"account.unmute_notifications": "@{name}さんからの通知を受け取らない",
|
||||
"account.view_full_profile": "全ての情報を見る",
|
||||
"boost_modal.combo": "次からは{combo}を押せば、これをスキップできます。",
|
||||
"boost_modal.combo": "次からは{combo}を押せば、これをスキップできます",
|
||||
"bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。",
|
||||
"bundle_column_error.retry": "再試行",
|
||||
"bundle_column_error.title": "ネットワークエラー",
|
||||
@@ -93,7 +93,7 @@
|
||||
"empty_column.home.public_timeline": "連合タイムライン",
|
||||
"empty_column.list": "このリストにはまだなにもありません。",
|
||||
"empty_column.notifications": "まだ通知がありません。他の人とふれ合って会話を始めましょう。",
|
||||
"empty_column.public": "ここにはまだ何もありません!公開で何かを投稿したり、他のインスタンスのユーザーをフォローしたりしていっぱいにしましょう!",
|
||||
"empty_column.public": "ここにはまだ何もありません! 公開で何かを投稿したり、他のインスタンスのユーザーをフォローしたりしていっぱいにしましょう",
|
||||
"follow_request.authorize": "許可",
|
||||
"follow_request.reject": "拒否",
|
||||
"getting_started.appsshort": "アプリ",
|
||||
@@ -159,12 +159,12 @@
|
||||
"notifications.clear": "通知を消去",
|
||||
"notifications.clear_confirmation": "本当に通知を消去しますか?",
|
||||
"notifications.column_settings.alert": "デスクトップ通知",
|
||||
"notifications.column_settings.favourite": "お気に入り",
|
||||
"notifications.column_settings.follow": "新しいフォロワー",
|
||||
"notifications.column_settings.mention": "返信",
|
||||
"notifications.column_settings.favourite": "お気に入り:",
|
||||
"notifications.column_settings.follow": "新しいフォロワー:",
|
||||
"notifications.column_settings.mention": "返信:",
|
||||
"notifications.column_settings.push": "プッシュ通知",
|
||||
"notifications.column_settings.push_meta": "このデバイス",
|
||||
"notifications.column_settings.reblog": "ブースト",
|
||||
"notifications.column_settings.reblog": "ブースト:",
|
||||
"notifications.column_settings.show": "カラムに表示",
|
||||
"notifications.column_settings.sound": "通知音を再生",
|
||||
"onboarding.done": "完了",
|
||||
@@ -173,7 +173,7 @@
|
||||
"onboarding.page_four.home": "「ホーム」タイムラインではあなたがフォローしている人の投稿を表示します。",
|
||||
"onboarding.page_four.notifications": "「通知」ではあなたへの他の人からの関わりを表示します。",
|
||||
"onboarding.page_one.federation": "Mastodonは誰でも参加できるSNSです。",
|
||||
"onboarding.page_one.handle": "あなたは今数あるMastodonインスタンスの1つである{domain}にいます。あなたのフルハンドルは{handle}です。",
|
||||
"onboarding.page_one.handle": "今あなたは数あるMastodonインスタンスの1つである{domain}にいます。あなたのフルハンドルは{handle}です",
|
||||
"onboarding.page_one.welcome": "Mastodonへようこそ!",
|
||||
"onboarding.page_six.admin": "あなたのインスタンスの管理者は{admin}です。",
|
||||
"onboarding.page_six.almost_done": "以上です。",
|
||||
@@ -181,7 +181,7 @@
|
||||
"onboarding.page_six.apps_available": "iOS、Androidあるいは他のプラットフォームで使える{apps}があります。",
|
||||
"onboarding.page_six.github": "MastodonはOSSです。バグ報告や機能要望あるいは貢献を{github}から行なえます。",
|
||||
"onboarding.page_six.guidelines": "コミュニティガイドライン",
|
||||
"onboarding.page_six.read_guidelines": "{guidelines}を読むことを忘れないようにしてください。",
|
||||
"onboarding.page_six.read_guidelines": "{guidelines}を読むことを忘れないようにしてください!",
|
||||
"onboarding.page_six.various_app": "様々なモバイルアプリ",
|
||||
"onboarding.page_three.profile": "「プロフィールを編集」から、あなたの自己紹介や表示名を変更できます。またそこでは他の設定ができます。",
|
||||
"onboarding.page_three.search": "検索バーで、{illustration}や{introductions}のように特定のハッシュタグの投稿を見たり、ユーザーを探したりできます。",
|
||||
@@ -212,7 +212,7 @@
|
||||
"search_popout.tips.text": "表示名やユーザー名、ハッシュタグに一致する単純なテキスト",
|
||||
"search_popout.tips.user": "ユーザー",
|
||||
"search_results.total": "{count, number}件の結果",
|
||||
"standalone.public_title": "今こんな話をしています",
|
||||
"standalone.public_title": "今こんな話をしています...",
|
||||
"status.cannot_reblog": "この投稿はブーストできません",
|
||||
"status.delete": "削除",
|
||||
"status.embed": "埋め込み",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "즐겨찾기",
|
||||
"column.follow_requests": "팔로우 요청",
|
||||
"column.home": "홈",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "뮤트 중인 사용자",
|
||||
"column.notifications": "알림",
|
||||
"column.pins": "고정된 툿",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "정말로 {name}를 차단하시겠습니까?",
|
||||
"confirmations.delete.confirm": "삭제",
|
||||
"confirmations.delete.message": "정말로 삭제하시겠습니까?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "도메인 전체를 숨김",
|
||||
"confirmations.domain_block.message": "정말로 {domain} 전체를 숨기시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다.",
|
||||
"confirmations.mute.confirm": "뮤트",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "닫기",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "불러오는 중...",
|
||||
"media_gallery.toggle_visible": "표시 전환",
|
||||
"missing_indicator.label": "찾을 수 없습니다",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "팔로우 요청",
|
||||
"navigation_bar.info": "이 인스턴스에 대해서",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "로그아웃",
|
||||
"navigation_bar.mutes": "뮤트 중인 사용자",
|
||||
"navigation_bar.pins": "고정된 툿",
|
||||
|
@@ -7,22 +7,22 @@
|
||||
"account.followers": "Volgers",
|
||||
"account.follows": "Volgt",
|
||||
"account.follows_you": "Volgt jou",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "Verberg boosts van @{name}",
|
||||
"account.media": "Media",
|
||||
"account.mention": "Vermeld @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "{name} is verhuisd naar:",
|
||||
"account.mute": "Negeer @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "Negeer meldingen van @{name}",
|
||||
"account.posts": "Toots",
|
||||
"account.report": "Rapporteer @{name}",
|
||||
"account.requested": "Wacht op goedkeuring. Klik om volgverzoek te annuleren.",
|
||||
"account.requested": "Wacht op goedkeuring. Klik om het volgverzoek te annuleren",
|
||||
"account.share": "Profiel van @{name} delen",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.show_reblogs": "Toon boosts van @{name}",
|
||||
"account.unblock": "Deblokkeer @{name}",
|
||||
"account.unblock_domain": "{domain} niet meer negeren",
|
||||
"account.unfollow": "Ontvolgen",
|
||||
"account.unmute": "@{name} niet meer negeren",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.unmute_notifications": "@{name} meldingen 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",
|
||||
"bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.",
|
||||
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favorieten",
|
||||
"column.follow_requests": "Volgverzoeken",
|
||||
"column.home": "Start",
|
||||
"column.lists": "Lijsten",
|
||||
"column.mutes": "Genegeerde gebruikers",
|
||||
"column.notifications": "Meldingen",
|
||||
"column.pins": "Vastgezette toots",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Weet je het zeker dat je {name} wilt blokkeren?",
|
||||
"confirmations.delete.confirm": "Verwijderen",
|
||||
"confirmations.delete.message": "Weet je het zeker dat je deze toot wilt verwijderen?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Weet je zeker dat je deze lijst definitief wilt verwijderen?",
|
||||
"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.mute.confirm": "Negeren",
|
||||
@@ -88,9 +91,9 @@
|
||||
"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.public_timeline": "de globale tijdlijn",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "Er is nog niks in deze lijst. Wanneer lijstleden nieuwe toots publiceren, zijn deze hier te zien.",
|
||||
"empty_column.notifications": "Je hebt nog geen meldingen. Heb interactie met andere mensen om het gesprek aan te gaan.",
|
||||
"empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere Mastodon-servers om het te vullen.",
|
||||
"empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere servers om het te vullen",
|
||||
"follow_request.authorize": "Goedkeuren",
|
||||
"follow_request.reject": "Afkeuren",
|
||||
"getting_started.appsshort": "Apps",
|
||||
@@ -99,42 +102,51 @@
|
||||
"getting_started.open_source_notice": "Mastodon is open-sourcesoftware. Je kunt bijdragen of problemen melden op GitHub via {github}.",
|
||||
"getting_started.userguide": "Gebruikersgids",
|
||||
"home.column_settings.advanced": "Geavanceerd",
|
||||
"home.column_settings.basic": "Basic",
|
||||
"home.column_settings.basic": "Basis",
|
||||
"home.column_settings.filter_regex": "Wegfilteren met reguliere expressies",
|
||||
"home.column_settings.show_reblogs": "Boosts tonen",
|
||||
"home.column_settings.show_replies": "Reacties tonen",
|
||||
"home.settings": "Kolom-instellingen",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.back": "om terug te gaan",
|
||||
"keyboard_shortcuts.boost": "om te boosten",
|
||||
"keyboard_shortcuts.column": "om op een toot te focussen in één van de kolommen",
|
||||
"keyboard_shortcuts.compose": "om het tekstvak voor toots te focussen",
|
||||
"keyboard_shortcuts.description": "Omschrijving",
|
||||
"keyboard_shortcuts.down": "om naar beneden door de lijst te bewegen",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"keyboard_shortcuts.favourite": "om als favoriet te markeren",
|
||||
"keyboard_shortcuts.heading": "Sneltoetsen",
|
||||
"keyboard_shortcuts.hotkey": "Sneltoets",
|
||||
"keyboard_shortcuts.legend": "om deze legenda weer te geven",
|
||||
"keyboard_shortcuts.mention": "om de auteur te vermelden",
|
||||
"keyboard_shortcuts.reply": "om te reageren",
|
||||
"keyboard_shortcuts.search": "om het zoekvak te focussen",
|
||||
"keyboard_shortcuts.toot": "om een nieuwe toot te starten",
|
||||
"keyboard_shortcuts.unfocus": "om het tekst- en zoekvak te ontfocussen",
|
||||
"keyboard_shortcuts.up": "om omhoog te bewegen in de lijst",
|
||||
"lightbox.close": "Sluiten",
|
||||
"lightbox.next": "Volgende",
|
||||
"lightbox.previous": "Vorige",
|
||||
"lists.account.add": "Aan lijst toevoegen",
|
||||
"lists.account.remove": "Uit lijst verwijderen",
|
||||
"lists.delete": "Lijst verwijderen",
|
||||
"lists.edit": "Lijst bewerken",
|
||||
"lists.new.create": "Lijst toevoegen",
|
||||
"lists.new.title_placeholder": "Naam nieuwe lijst",
|
||||
"lists.search": "Zoek naar mensen die je volgt",
|
||||
"lists.subheading": "Jouw lijsten",
|
||||
"loading_indicator.label": "Laden…",
|
||||
"media_gallery.toggle_visible": "Media wel/niet tonen",
|
||||
"missing_indicator.label": "Niet gevonden",
|
||||
"mute_modal.hide_notifications": "Hide notifications from this user?",
|
||||
"mute_modal.hide_notifications": "Verberg meldingen van deze persoon?",
|
||||
"navigation_bar.blocks": "Geblokkeerde gebruikers",
|
||||
"navigation_bar.community_timeline": "Lokale tijdlijn",
|
||||
"navigation_bar.edit_profile": "Profiel bewerken",
|
||||
"navigation_bar.favourites": "Favorieten",
|
||||
"navigation_bar.follow_requests": "Volgverzoeken",
|
||||
"navigation_bar.info": "Uitgebreide informatie",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "Toetsenbord sneltoetsen",
|
||||
"navigation_bar.lists": "Lijsten",
|
||||
"navigation_bar.logout": "Afmelden",
|
||||
"navigation_bar.mutes": "Genegeerde gebruikers",
|
||||
"navigation_bar.pins": "Vastgezette toots",
|
||||
@@ -186,18 +198,18 @@
|
||||
"privacy.unlisted.short": "Minder openbaar",
|
||||
"relative_time.days": "{number}d",
|
||||
"relative_time.hours": "{number}h",
|
||||
"relative_time.just_now": "now",
|
||||
"relative_time.just_now": "nu",
|
||||
"relative_time.minutes": "{number}m",
|
||||
"relative_time.seconds": "{number}s",
|
||||
"reply_indicator.cancel": "Annuleren",
|
||||
"report.placeholder": "Extra opmerkingen",
|
||||
"report.submit": "Verzenden",
|
||||
"report.target": "Rapporteren van",
|
||||
"report.target": "Rapporteer {target}",
|
||||
"search.placeholder": "Zoeken",
|
||||
"search_popout.search_format": "Geavanceerd zoeken",
|
||||
"search_popout.tips.hashtag": "hashtag",
|
||||
"search_popout.tips.status": "toot",
|
||||
"search_popout.tips.text": "Gebruik gewone tekst om te zoeken op weergavenamen, gebruikersnamen en hashtags.",
|
||||
"search_popout.tips.text": "Gebruik gewone tekst om te zoeken op weergavenamen, gebruikersnamen en hashtags",
|
||||
"search_popout.tips.user": "gebruiker",
|
||||
"search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}",
|
||||
"standalone.public_title": "Een kijkje binnenin...",
|
||||
@@ -229,7 +241,7 @@
|
||||
"tabs_bar.home": "Start",
|
||||
"tabs_bar.local_timeline": "Lokaal",
|
||||
"tabs_bar.notifications": "Meldingen",
|
||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||
"ui.beforeunload": "Je concept zal verloren gaan als je Mastodon verlaat.",
|
||||
"upload_area.title": "Hierin slepen om te uploaden",
|
||||
"upload_button.label": "Media toevoegen",
|
||||
"upload_form.description": "Omschrijf dit voor mensen met een visuele beperking",
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"account.block": "Blokkér @{name}",
|
||||
"account.block_domain": "Skjul alt fra {domain}",
|
||||
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||
"account.disclaimer_full": "Informasjonen nedenfor kan gi et ufullstendig bilde av brukerens profil.",
|
||||
"account.edit_profile": "Rediger profil",
|
||||
"account.follow": "Følg",
|
||||
"account.followers": "Følgere",
|
||||
@@ -10,43 +10,44 @@
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.media": "Media",
|
||||
"account.mention": "Nevn @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "{name} har flyttet til:",
|
||||
"account.mute": "Demp @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "Ignorer varsler fra @{name}",
|
||||
"account.posts": "Innlegg",
|
||||
"account.report": "Rapportér @{name}",
|
||||
"account.requested": "Venter på godkjennelse",
|
||||
"account.share": "Share @{name}'s profile",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.share": "Del @{name}s profil",
|
||||
"account.show_reblogs": "Vis boosts fra @{name}",
|
||||
"account.unblock": "Avblokker @{name}",
|
||||
"account.unblock_domain": "Vis {domain}",
|
||||
"account.unfollow": "Avfølg",
|
||||
"account.unmute": "Avdemp @{name}",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.view_full_profile": "View full profile",
|
||||
"account.unmute_notifications": "Vis varsler fra @{name}",
|
||||
"account.view_full_profile": "Vis full profil",
|
||||
"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.retry": "Try again",
|
||||
"bundle_column_error.body": "Noe gikk galt mens denne komponenten lastet.",
|
||||
"bundle_column_error.retry": "Prøv igjen",
|
||||
"bundle_column_error.title": "Network error",
|
||||
"bundle_modal_error.close": "Close",
|
||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
||||
"bundle_modal_error.retry": "Try again",
|
||||
"bundle_modal_error.close": "Lukk",
|
||||
"bundle_modal_error.message": "Noe gikk galt da denne komponenten lastet.",
|
||||
"bundle_modal_error.retry": "Prøv igjen",
|
||||
"column.blocks": "Blokkerte brukere",
|
||||
"column.community": "Lokal tidslinje",
|
||||
"column.favourites": "Likt",
|
||||
"column.follow_requests": "Følgeforespørsler",
|
||||
"column.home": "Hjem",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Dempede brukere",
|
||||
"column.notifications": "Varsler",
|
||||
"column.pins": "Pinned toot",
|
||||
"column.public": "Felles tidslinje",
|
||||
"column_back_button.label": "Tilbake",
|
||||
"column_header.hide_settings": "Hide settings",
|
||||
"column_header.moveLeft_settings": "Move column to the left",
|
||||
"column_header.moveRight_settings": "Move column to the right",
|
||||
"column_header.pin": "Pin",
|
||||
"column_header.show_settings": "Show settings",
|
||||
"column_header.unpin": "Unpin",
|
||||
"column_header.hide_settings": "Gjem innstillinger",
|
||||
"column_header.moveLeft_settings": "Flytt feltet til venstre",
|
||||
"column_header.moveRight_settings": "Flytt feltet til høyre",
|
||||
"column_header.pin": "Fest",
|
||||
"column_header.show_settings": "Vis innstillinger",
|
||||
"column_header.unpin": "Løsne",
|
||||
"column_subheading.navigation": "Navigasjon",
|
||||
"column_subheading.settings": "Innstillinger",
|
||||
"compose_form.lock_disclaimer": "Din konto er ikke {locked}. Hvem som helst kan følge deg og se dine private poster.",
|
||||
@@ -62,33 +63,35 @@
|
||||
"confirmations.block.message": "Er du sikker på at du vil blokkere {name}?",
|
||||
"confirmations.delete.confirm": "Slett",
|
||||
"confirmations.delete.message": "Er du sikker på at du vil slette denne statusen?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Skjul alt fra domenet",
|
||||
"confirmations.domain_block.message": "Er du sikker på at du vil skjule hele domenet {domain}? I de fleste tilfeller er det bedre med målrettet blokkering eller demping.",
|
||||
"confirmations.mute.confirm": "Demp",
|
||||
"confirmations.mute.message": "Er du sikker på at du vil dempe {name}?",
|
||||
"confirmations.unfollow.confirm": "Unfollow",
|
||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
||||
"embed.instructions": "Embed this status on your website by copying the code below.",
|
||||
"embed.preview": "Here is what it will look like:",
|
||||
"confirmations.unfollow.confirm": "Slutt å følge",
|
||||
"confirmations.unfollow.message": "Er du sikker på at du vil slutte å følge {name}?",
|
||||
"embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.",
|
||||
"embed.preview": "Slik kommer det til å se ut:",
|
||||
"emoji_button.activity": "Aktivitet",
|
||||
"emoji_button.custom": "Custom",
|
||||
"emoji_button.flags": "Flagg",
|
||||
"emoji_button.food": "Mat og drikke",
|
||||
"emoji_button.label": "Sett inn emoji",
|
||||
"emoji_button.nature": "Natur",
|
||||
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.not_found": "Ingen emojojoer!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "Objekter",
|
||||
"emoji_button.people": "Mennesker",
|
||||
"emoji_button.recent": "Frequently used",
|
||||
"emoji_button.recent": "Hyppig brukt",
|
||||
"emoji_button.search": "Søk...",
|
||||
"emoji_button.search_results": "Search results",
|
||||
"emoji_button.search_results": "Søkeresultat",
|
||||
"emoji_button.symbols": "Symboler",
|
||||
"emoji_button.travel": "Reise & steder",
|
||||
"empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!",
|
||||
"empty_column.hashtag": "Det er ingenting i denne hashtagen ennå.",
|
||||
"empty_column.home": "Du har ikke fulgt noen ennå. Besøk {publlic} eller bruk søk for å komme i gang og møte andre brukere.",
|
||||
"empty_column.home.public_timeline": "en offentlig tidslinje",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "Det er ikke noe i denne listen ennå.",
|
||||
"empty_column.notifications": "Du har ingen varsler ennå. Kommuniser med andre for å begynne samtalen.",
|
||||
"empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp",
|
||||
"follow_request.authorize": "Autorisér",
|
||||
@@ -104,19 +107,19 @@
|
||||
"home.column_settings.show_reblogs": "Vis fremhevinger",
|
||||
"home.column_settings.show_replies": "Vis svar",
|
||||
"home.settings": "Kolonneinnstillinger",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.back": "for å navigere tilbake",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.down": "for å flytte ned i listen",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.favourite": "for å favorittmarkere",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.hotkey": "Lyntast",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.reply": "for å svare",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Lukk",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Laster...",
|
||||
"media_gallery.toggle_visible": "Veksle synlighet",
|
||||
"missing_indicator.label": "Ikke funnet",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Følgeforespørsler",
|
||||
"navigation_bar.info": "Utvidet informasjon",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Logg ut",
|
||||
"navigation_bar.mutes": "Dempede brukere",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
@@ -237,11 +249,11 @@
|
||||
"upload_progress.label": "Laster opp...",
|
||||
"video.close": "Close video",
|
||||
"video.exit_fullscreen": "Exit full screen",
|
||||
"video.expand": "Expand video",
|
||||
"video.expand": "Utvid video",
|
||||
"video.fullscreen": "Full screen",
|
||||
"video.hide": "Hide video",
|
||||
"video.mute": "Mute sound",
|
||||
"video.hide": "Skjul video",
|
||||
"video.mute": "Skru av lyd",
|
||||
"video.pause": "Pause",
|
||||
"video.play": "Play",
|
||||
"video.unmute": "Unmute sound"
|
||||
"video.play": "Spill av",
|
||||
"video.unmute": "Skru på lyd"
|
||||
}
|
||||
|
@@ -7,25 +7,25 @@
|
||||
"account.followers": "Seguidors",
|
||||
"account.follows": "Abonaments",
|
||||
"account.follows_you": "Vos sèc",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "Rescondre los partages de @{name}",
|
||||
"account.media": "Mèdias",
|
||||
"account.mention": "Mencionar @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "{name} a mudat los catons a :",
|
||||
"account.mute": "Rescondre @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "Rescondre las notificacions de @{name}",
|
||||
"account.posts": "Estatuts",
|
||||
"account.report": "Senhalar @{name}",
|
||||
"account.requested": "Invitacion mandada. Clicatz per anullar.",
|
||||
"account.requested": "Invitacion mandada. Clicatz per anullar",
|
||||
"account.share": "Partejar lo perfil a @{name}",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.show_reblogs": "Mostrar los partages de @{name}",
|
||||
"account.unblock": "Desblocar @{name}",
|
||||
"account.unblock_domain": "Desblocar {domain}",
|
||||
"account.unfollow": "Quitar de sègre",
|
||||
"account.unmute": "Quitar de rescondre @{name}",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.unmute_notifications": "Mostrar las notificacions de @{name}",
|
||||
"account.view_full_profile": "Veire lo perfil complet",
|
||||
"boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven",
|
||||
"bundle_column_error.body": "Quicòm a fach meuca pendent lo cargament d’aqueste compausant.",
|
||||
"bundle_column_error.body": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.",
|
||||
"bundle_column_error.retry": "Tornar ensajar",
|
||||
"bundle_column_error.title": "Error de ret",
|
||||
"bundle_modal_error.close": "Tampar",
|
||||
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favorits",
|
||||
"column.follow_requests": "Demandas d’abonament",
|
||||
"column.home": "Acuèlh",
|
||||
"column.lists": "Listas",
|
||||
"column.mutes": "Personas rescondudas",
|
||||
"column.notifications": "Notificacions",
|
||||
"column.pins": "Tuts penjats",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Sètz segur de voler blocar {name} ?",
|
||||
"confirmations.delete.confirm": "Escafar",
|
||||
"confirmations.delete.message": "Sètz segur de voler escafar l’estatut ?",
|
||||
"confirmations.delete_list.confirm": "Suprimir",
|
||||
"confirmations.delete_list.message": "Sètz segur de voler suprimir aquesta lista per totjorn ?",
|
||||
"confirmations.domain_block.confirm": "Amagar tot lo domeni",
|
||||
"confirmations.domain_block.message": "Sètz segur segur de voler blocar completament {domain} ? De còps cal pas que blocar o rescondre unas personas solament.",
|
||||
"confirmations.mute.confirm": "Rescondre",
|
||||
@@ -69,7 +72,7 @@
|
||||
"confirmations.unfollow.confirm": "Quitar de sègre",
|
||||
"confirmations.unfollow.message": "Volètz vertadièrament quitar de sègre {name} ?",
|
||||
"embed.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.",
|
||||
"embed.preview": "Semblarà aquò : ",
|
||||
"embed.preview": "Semblarà aquò :",
|
||||
"emoji_button.activity": "Activitats",
|
||||
"emoji_button.custom": "Personalizats",
|
||||
"emoji_button.flags": "Drapèus",
|
||||
@@ -81,16 +84,16 @@
|
||||
"emoji_button.people": "Gents",
|
||||
"emoji_button.recent": "Sovent utilizats",
|
||||
"emoji_button.search": "Cercar…",
|
||||
"emoji_button.search_results": "Resultat de recèrca",
|
||||
"emoji_button.search_results": "Resultats de recèrca",
|
||||
"emoji_button.symbols": "Simbòls",
|
||||
"emoji_button.travel": "Viatges & lòcs",
|
||||
"empty_column.community": "Lo flux public local es void. Escrivè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 aquesta etiqueta.",
|
||||
"empty_column.home": "Vòstre flux d’acuèlh es void. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.",
|
||||
"empty_column.home.public_timeline": "lo flux public",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "I a pas res dins la lista pel moment. Quand de membres d’aquesta lista publiquen de novèls estatuts los veiretz aquí.",
|
||||
"empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.",
|
||||
"empty_column.public": "I a pas res aquí ! Escrivètz quicòm de public, o seguètz de personas d’autras instàncias per garnir lo flux public.",
|
||||
"empty_column.public": "I a pas res aquí ! Escrivètz quicòm de public, o seguètz de personas d’autras instàncias per garnir lo flux public",
|
||||
"follow_request.authorize": "Autorizar",
|
||||
"follow_request.reject": "Regetar",
|
||||
"getting_started.appsshort": "Apps",
|
||||
@@ -104,46 +107,55 @@
|
||||
"home.column_settings.show_reblogs": "Mostrar los partatges",
|
||||
"home.column_settings.show_replies": "Mostrar las responsas",
|
||||
"home.settings": "Paramètres de la colomna",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"keyboard_shortcuts.back": "per anar enrèire",
|
||||
"keyboard_shortcuts.boost": "per partejar",
|
||||
"keyboard_shortcuts.column": "per centrar un estatut a una colomna",
|
||||
"keyboard_shortcuts.compose": "per anar al camp tèxte",
|
||||
"keyboard_shortcuts.description": "Descripcion",
|
||||
"keyboard_shortcuts.down": "per far davalar dins la lista",
|
||||
"keyboard_shortcuts.enter": "per dobrir los estatuts",
|
||||
"keyboard_shortcuts.favourite": "per apondre als favorits",
|
||||
"keyboard_shortcuts.heading": "Acorchis clavièr",
|
||||
"keyboard_shortcuts.hotkey": "Acorchis",
|
||||
"keyboard_shortcuts.legend": "per mostrar aquesta legenda",
|
||||
"keyboard_shortcuts.mention": "per mencionar l’autor",
|
||||
"keyboard_shortcuts.reply": "per respondre",
|
||||
"keyboard_shortcuts.search": "per anar a la recèrca",
|
||||
"keyboard_shortcuts.toot": "per començar un estatut tot novèl",
|
||||
"keyboard_shortcuts.unfocus": "per quitar lo camp tèxte/de recèrca",
|
||||
"keyboard_shortcuts.up": "per far montar dins la lista",
|
||||
"lightbox.close": "Tampar",
|
||||
"lightbox.next": "Seguent",
|
||||
"lightbox.previous": "Precedent",
|
||||
"lists.account.add": "Ajustar a la lista",
|
||||
"lists.account.remove": "Levar de la lista",
|
||||
"lists.delete": "Suprimir la lista",
|
||||
"lists.edit": "Modificar la lista",
|
||||
"lists.new.create": "Ajustar una lista",
|
||||
"lists.new.title_placeholder": "Títol de la nòva lista",
|
||||
"lists.search": "Cercar demest lo monde que seguètz",
|
||||
"lists.subheading": "Vòstras listas",
|
||||
"loading_indicator.label": "Cargament…",
|
||||
"media_gallery.toggle_visible": "Modificar la visibilitat",
|
||||
"missing_indicator.label": "Pas trobat",
|
||||
"mute_modal.hide_notifications": "Hide notifications from this user?",
|
||||
"mute_modal.hide_notifications": "Rescondre las notificacions d’aquesta persona ?",
|
||||
"navigation_bar.blocks": "Personas blocadas",
|
||||
"navigation_bar.community_timeline": "Flux public local",
|
||||
"navigation_bar.edit_profile": "Modificar lo perfil",
|
||||
"navigation_bar.favourites": "Favorits",
|
||||
"navigation_bar.follow_requests": "Demandas d'abonament",
|
||||
"navigation_bar.follow_requests": "Demandas d’abonament",
|
||||
"navigation_bar.info": "Mai informacions",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "Acorchis clavièr",
|
||||
"navigation_bar.lists": "Listas",
|
||||
"navigation_bar.logout": "Desconnexion",
|
||||
"navigation_bar.mutes": "Personas rescondudas",
|
||||
"navigation_bar.pins": "Tuts penjats",
|
||||
"navigation_bar.preferences": "Preferéncias",
|
||||
"navigation_bar.public_timeline": "Flux public global",
|
||||
"notification.favourite": "{name} a ajustat a sos favorits :",
|
||||
"notification.favourite": "{name} a ajustat a sos favorits",
|
||||
"notification.follow": "{name} vos sèc",
|
||||
"notification.mention": "{name} vos a mencionat :",
|
||||
"notification.reblog": "{name} a partejat vòstre estatut :",
|
||||
"notification.mention": "{name} vos a mencionat",
|
||||
"notification.reblog": "{name} a partejat vòstre estatut",
|
||||
"notifications.clear": "Escafar",
|
||||
"notifications.clear_confirmation": "Volètz vertadièrament escafar totas vòstras las notificacions ?",
|
||||
"notifications.column_settings.alert": "Notificacions localas",
|
||||
@@ -159,7 +171,7 @@
|
||||
"onboarding.next": "Seguent",
|
||||
"onboarding.page_five.public_timelines": "Lo flux local mòstra los estatuts publics del monde de vòstra instància, aquí {domain}. Lo flux federat mòstra los estatuts publics de la gent que los de {domain} sègon. Son los fluxes publics, un bon biais de trobar de mond.",
|
||||
"onboarding.page_four.home": "Lo flux d’acuèlh mòstra los estatuts del mond que seguètz.",
|
||||
"onboarding.page_four.notifications": "La colomna de notificacions vos fa veire quand qualqu’un interagís amb vos",
|
||||
"onboarding.page_four.notifications": "La colomna de notificacions vos fa veire quand qualqu’un interagís amb vos.",
|
||||
"onboarding.page_one.federation": "Mastodon es un malhum de servidors independents que comunican per construire un malhum mai larg. Òm los apèla instàncias.",
|
||||
"onboarding.page_one.handle": "Sètz sus {domain}, doncas vòstre identificant complet es {handle}",
|
||||
"onboarding.page_one.welcome": "Benvengut a Mastodon !",
|
||||
@@ -197,7 +209,7 @@
|
||||
"search_popout.search_format": "Format recèrca avançada",
|
||||
"search_popout.tips.hashtag": "etiqueta",
|
||||
"search_popout.tips.status": "estatut",
|
||||
"search_popout.tips.text": "Tèxt brut tòrna escais, noms d’utilizaire e etiquetas correspondents",
|
||||
"search_popout.tips.text": "Lo tèxt brut tòrna escais, noms d’utilizaire e etiquetas correspondents",
|
||||
"search_popout.tips.user": "utilizaire",
|
||||
"search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
|
||||
"standalone.public_title": "Una ulhada dedins…",
|
||||
@@ -213,7 +225,7 @@
|
||||
"status.open": "Desplegar aqueste estatut",
|
||||
"status.pin": "Penjar al perfil",
|
||||
"status.reblog": "Partejar",
|
||||
"status.reblogged_by": "{name} a partejat :",
|
||||
"status.reblogged_by": "{name} a partejat",
|
||||
"status.reply": "Respondre",
|
||||
"status.replyAll": "Respondre a la conversacion",
|
||||
"status.report": "Senhalar @{name}",
|
||||
@@ -229,7 +241,7 @@
|
||||
"tabs_bar.home": "Acuèlh",
|
||||
"tabs_bar.local_timeline": "Flux public local",
|
||||
"tabs_bar.notifications": "Notificacions",
|
||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||
"ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Mastodon.",
|
||||
"upload_area.title": "Lisatz e depausatz per mandar",
|
||||
"upload_button.label": "Ajustar un mèdia",
|
||||
"upload_form.description": "Descripcion pels mal vesents",
|
||||
|
@@ -61,10 +61,10 @@
|
||||
"confirmation_modal.cancel": "Anuluj",
|
||||
"confirmations.block.confirm": "Zablokuj",
|
||||
"confirmations.block.message": "Czy na pewno chcesz zablokować {name}?",
|
||||
"confirmations.delete_list.confirm": "Usuń",
|
||||
"confirmations.delete_list.message": "Czy na pewno chcesz bezpowrotnie usunąć tą listę?",
|
||||
"confirmations.delete.confirm": "Usuń",
|
||||
"confirmations.delete.message": "Czy na pewno chcesz usunąć ten wpis?",
|
||||
"confirmations.delete_list.confirm": "Usuń",
|
||||
"confirmations.delete_list.message": "Czy na pewno chcesz bezpowrotnie usunąć tą listę?",
|
||||
"confirmations.domain_block.confirm": "Ukryj wszysyko z domeny",
|
||||
"confirmations.domain_block.message": "Czy na pewno chcesz zablokować całą domenę {domain}? Zwykle lepszym rozwiązaniem jest blokada lub wyciszenie kilku użytkowników.",
|
||||
"confirmations.mute.confirm": "Wycisz",
|
||||
@@ -128,7 +128,7 @@
|
||||
"lightbox.next": "Następne",
|
||||
"lightbox.previous": "Poprzednie",
|
||||
"lists.account.add": "Dodaj do listy",
|
||||
"lists.account.delete": "Usuń z listy",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Usuń listę",
|
||||
"lists.edit": "Edytuj listę",
|
||||
"lists.new.create": "Utwórz listę",
|
||||
|
@@ -7,22 +7,22 @@
|
||||
"account.followers": "Seguidores",
|
||||
"account.follows": "Segue",
|
||||
"account.follows_you": "Segue você",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "Esconder compartilhamentos de @{name}",
|
||||
"account.media": "Mídia",
|
||||
"account.mention": "Mencionar @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "{name} se mudou para:",
|
||||
"account.mute": "Silenciar @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "Silenciar notificações de @{name}",
|
||||
"account.posts": "Posts",
|
||||
"account.report": "Denunciar @{name}",
|
||||
"account.requested": "Aguardando aprovação. Clique para cancelar a solicitação.",
|
||||
"account.requested": "Aguardando aprovação. Clique para cancelar a solicitação",
|
||||
"account.share": "Compartilhar perfil de @{name}",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.show_reblogs": "Mostra compartilhamentos de @{name}",
|
||||
"account.unblock": "Desbloquear @{name}",
|
||||
"account.unblock_domain": "Desbloquear {domain}",
|
||||
"account.unfollow": "Deixar de seguir",
|
||||
"account.unmute": "Não silenciar @{name}",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.unmute_notifications": "Retirar silêncio das notificações vindas de @{name}",
|
||||
"account.view_full_profile": "Ver perfil completo",
|
||||
"boost_modal.combo": "Você pode pressionar {combo} para ignorar este diálogo na próxima vez",
|
||||
"bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.",
|
||||
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favoritos",
|
||||
"column.follow_requests": "Seguidores pendentes",
|
||||
"column.home": "Página inicial",
|
||||
"column.lists": "Listas",
|
||||
"column.mutes": "Usuários silenciados",
|
||||
"column.notifications": "Notificações",
|
||||
"column.pins": "Postagens fixadas",
|
||||
@@ -62,13 +63,15 @@
|
||||
"confirmations.block.message": "Você tem certeza de que quer bloquear {name}?",
|
||||
"confirmations.delete.confirm": "Excluir",
|
||||
"confirmations.delete.message": "Você tem certeza de que quer excluir esta postagem?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Você tem certeza que quer deletar permanentemente a lista?",
|
||||
"confirmations.domain_block.confirm": "Esconder o domínio inteiro",
|
||||
"confirmations.domain_block.message": "Você quer mesmo bloquear {domain} inteiro? Na maioria dos casos, silenciar ou bloquear alguns usuários é o suficiente e o recomendado.",
|
||||
"confirmations.mute.confirm": "Silenciar",
|
||||
"confirmations.mute.message": "Você tem certeza de que quer silenciar {name}?",
|
||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||
"confirmations.unfollow.message": "Você tem certeza de que quer deixar de seguir {name}?",
|
||||
"embed.instructions": "Incorpore esta postagem em seu site copiando o código abaixo:",
|
||||
"embed.instructions": "Incorpore esta postagem em seu site copiando o código abaixo.",
|
||||
"embed.preview": "Aqui está uma previsão de como ficará:",
|
||||
"emoji_button.activity": "Atividades",
|
||||
"emoji_button.custom": "Customizados",
|
||||
@@ -85,12 +88,12 @@
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viagens & Lugares",
|
||||
"empty_column.community": "A timeline local está vazia. Escreva algo publicamente para começar!",
|
||||
"empty_column.hashtag": "Ainda não há qualquer conteúdo com essa hashtag",
|
||||
"empty_column.hashtag": "Ainda não há qualquer conteúdo com essa hashtag.",
|
||||
"empty_column.home": "Você ainda não segue usuário algo. Visite a timeline {public} ou use o buscador para procurar e conhecer outros usuários.",
|
||||
"empty_column.home.public_timeline": "global",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.notifications": "Você ainda não possui notificações. Interaja com outros usuários para começar a conversar!",
|
||||
"empty_column.public": "Não há nada aqui! Escreva algo publicamente ou siga manualmente usuários de outras instâncias.",
|
||||
"empty_column.list": "Ainda não há nada nesta lista.",
|
||||
"empty_column.notifications": "Você ainda não possui notificações. Interaja com outros usuários para começar a conversar.",
|
||||
"empty_column.public": "Não há nada aqui! Escreva algo publicamente ou siga manualmente usuários de outras instâncias",
|
||||
"follow_request.authorize": "Autorizar",
|
||||
"follow_request.reject": "Rejeitar",
|
||||
"getting_started.appsshort": "Apps",
|
||||
@@ -104,37 +107,46 @@
|
||||
"home.column_settings.show_reblogs": "Mostrar compartilhamentos",
|
||||
"home.column_settings.show_replies": "Mostrar as respostas",
|
||||
"home.settings": "Configurações de colunas",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.back": "para navegar de volta",
|
||||
"keyboard_shortcuts.boost": "para compartilhar",
|
||||
"keyboard_shortcuts.column": "Focar um status em uma das colunas",
|
||||
"keyboard_shortcuts.compose": "para focar a área de redação",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.down": "para mover para baixo na lista",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.favourite": "para adicionar aos favoritos",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"keyboard_shortcuts.hotkey": "Atalho",
|
||||
"keyboard_shortcuts.legend": "para mostrar essa legenda",
|
||||
"keyboard_shortcuts.mention": "para mencionar o autor",
|
||||
"keyboard_shortcuts.reply": "para responder",
|
||||
"keyboard_shortcuts.search": "para focar a pesquisa",
|
||||
"keyboard_shortcuts.toot": "para compor um novo toot",
|
||||
"keyboard_shortcuts.unfocus": "para remover o foco da área de composição/pesquisa",
|
||||
"keyboard_shortcuts.up": "para mover para cima na lista",
|
||||
"lightbox.close": "Fechar",
|
||||
"lightbox.next": "Próximo",
|
||||
"lightbox.previous": "Anterior",
|
||||
"lists.account.add": "Adicionar a listas",
|
||||
"lists.account.remove": "Remover da lista",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Editar lista",
|
||||
"lists.new.create": "Adicionar lista",
|
||||
"lists.new.title_placeholder": "Novo título da lista",
|
||||
"lists.search": "Procurar entre as pessoas que você segue",
|
||||
"lists.subheading": "Suas listas",
|
||||
"loading_indicator.label": "Carregando...",
|
||||
"media_gallery.toggle_visible": "Esconder/Mostrar",
|
||||
"missing_indicator.label": "Não encontrado",
|
||||
"mute_modal.hide_notifications": "Hide notifications from this user?",
|
||||
"mute_modal.hide_notifications": "Esconder notificações deste usuário?",
|
||||
"navigation_bar.blocks": "Usuários bloqueados",
|
||||
"navigation_bar.community_timeline": "Local",
|
||||
"navigation_bar.edit_profile": "Editar perfil",
|
||||
"navigation_bar.favourites": "Favoritos",
|
||||
"navigation_bar.follow_requests": "Seguidores pendentes",
|
||||
"navigation_bar.info": "Mais informações",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "Atalhos de teclado",
|
||||
"navigation_bar.lists": "Listas",
|
||||
"navigation_bar.logout": "Sair",
|
||||
"navigation_bar.mutes": "Usuários silenciados",
|
||||
"navigation_bar.pins": "Postagens fixadas",
|
||||
@@ -165,7 +177,7 @@
|
||||
"onboarding.page_one.welcome": "Seja bem-vindo(a) ao Mastodon!",
|
||||
"onboarding.page_six.admin": "O administrador de sua instância é {admin}.",
|
||||
"onboarding.page_six.almost_done": "Quase acabando...",
|
||||
"onboarding.page_six.appetoot": "Bon Appetoot!",
|
||||
"onboarding.page_six.appetoot": "Bom Apetoot!",
|
||||
"onboarding.page_six.apps_available": "Há {apps} disponíveis para iOS, Android e outras plataformas.",
|
||||
"onboarding.page_six.github": "Mastodon é um software gratuito e de código aberto. Você pode reportar bugs, prequisitar novas funções ou contribuir para o código no {github}.",
|
||||
"onboarding.page_six.guidelines": "diretrizes da comunidade",
|
||||
@@ -208,7 +220,7 @@
|
||||
"status.load_more": "Carregar mais",
|
||||
"status.media_hidden": "Mídia escondida",
|
||||
"status.mention": "Mencionar @{name}",
|
||||
"status.more": "More",
|
||||
"status.more": "Mais",
|
||||
"status.mute_conversation": "Silenciar conversa",
|
||||
"status.open": "Expandir",
|
||||
"status.pin": "Fixar no perfil",
|
||||
@@ -229,7 +241,7 @@
|
||||
"tabs_bar.home": "Página inicial",
|
||||
"tabs_bar.local_timeline": "Local",
|
||||
"tabs_bar.notifications": "Notificações",
|
||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||
"ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.",
|
||||
"upload_area.title": "Arraste e solte para enviar",
|
||||
"upload_button.label": "Adicionar mídia",
|
||||
"upload_form.description": "Descreva a imagem para deficientes visuais",
|
||||
|
@@ -1,143 +1,155 @@
|
||||
{
|
||||
"account.block": "Bloquear @{name}",
|
||||
"account.block_domain": "Hide everything from {domain}",
|
||||
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
|
||||
"account.block_domain": "Esconder tudo do domínio {domain}",
|
||||
"account.disclaimer_full": "As informações abaixo podem refletir o perfil do usuário de forma incompleta.",
|
||||
"account.edit_profile": "Editar perfil",
|
||||
"account.follow": "Seguir",
|
||||
"account.followers": "Seguidores",
|
||||
"account.follows": "Segue",
|
||||
"account.follows_you": "É teu seguidor",
|
||||
"account.hide_reblogs": "Hide boosts from @{name}",
|
||||
"account.hide_reblogs": "Esconder partilhas de @{name}",
|
||||
"account.media": "Media",
|
||||
"account.mention": "Mencionar @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.moved_to": "{name} mudou a sua conta para:",
|
||||
"account.mute": "Silenciar @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.mute_notifications": "Silenciar notificações de @{name}",
|
||||
"account.posts": "Posts",
|
||||
"account.report": "Denunciar @{name}",
|
||||
"account.requested": "A aguardar aprovação",
|
||||
"account.share": "Share @{name}'s profile",
|
||||
"account.show_reblogs": "Show boosts from @{name}",
|
||||
"account.share": "Partilhar o perfil @{name}",
|
||||
"account.show_reblogs": "Mostrar partilhas de @{name}",
|
||||
"account.unblock": "Não bloquear @{name}",
|
||||
"account.unblock_domain": "Unhide {domain}",
|
||||
"account.unblock_domain": "Mostrar {domain}",
|
||||
"account.unfollow": "Deixar de seguir",
|
||||
"account.unmute": "Não silenciar @{name}",
|
||||
"account.unmute_notifications": "Unmute notifications from @{name}",
|
||||
"account.view_full_profile": "View full profile",
|
||||
"account.unmute_notifications": "Deixar de silenciar @{name}",
|
||||
"account.view_full_profile": "Ver perfil completo",
|
||||
"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.retry": "Try again",
|
||||
"bundle_column_error.title": "Network error",
|
||||
"bundle_modal_error.close": "Close",
|
||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
||||
"bundle_modal_error.retry": "Try again",
|
||||
"bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.",
|
||||
"bundle_column_error.retry": "Tente de novo",
|
||||
"bundle_column_error.title": "Erro de rede",
|
||||
"bundle_modal_error.close": "Fechar",
|
||||
"bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.",
|
||||
"bundle_modal_error.retry": "Tente de novo",
|
||||
"column.blocks": "Utilizadores Bloqueados",
|
||||
"column.community": "Local",
|
||||
"column.favourites": "Favoritos",
|
||||
"column.follow_requests": "Seguidores Pendentes",
|
||||
"column.home": "Home",
|
||||
"column.lists": "Listas",
|
||||
"column.mutes": "Utilizadores silenciados",
|
||||
"column.notifications": "Notificações",
|
||||
"column.pins": "Pinned toot",
|
||||
"column.public": "Global",
|
||||
"column_back_button.label": "Voltar",
|
||||
"column_header.hide_settings": "Hide settings",
|
||||
"column_header.moveLeft_settings": "Move column to the left",
|
||||
"column_header.moveRight_settings": "Move column to the right",
|
||||
"column_header.pin": "Pin",
|
||||
"column_header.show_settings": "Show settings",
|
||||
"column_header.unpin": "Unpin",
|
||||
"column_subheading.navigation": "Navigation",
|
||||
"column_subheading.settings": "Settings",
|
||||
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
|
||||
"compose_form.lock_disclaimer.lock": "locked",
|
||||
"column_header.hide_settings": "Esconder preferências",
|
||||
"column_header.moveLeft_settings": "Mover coluna para a esquerda",
|
||||
"column_header.moveRight_settings": "Mover coluna para a direita",
|
||||
"column_header.pin": "Fixar",
|
||||
"column_header.show_settings": "Mostrar preferências",
|
||||
"column_header.unpin": "Remover fixar",
|
||||
"column_subheading.navigation": "Navegação",
|
||||
"column_subheading.settings": "Preferências",
|
||||
"compose_form.lock_disclaimer": "A tua conta não está {locked}. Qualquer pessoa pode seguir-te e ver as publicações direcionadas apenas a seguidores.",
|
||||
"compose_form.lock_disclaimer.lock": "bloqueada",
|
||||
"compose_form.placeholder": "Em que estás a pensar?",
|
||||
"compose_form.publish": "Publicar",
|
||||
"compose_form.publish_loud": "{publish}!",
|
||||
"compose_form.sensitive": "Marcar media como conteúdo sensível",
|
||||
"compose_form.spoiler": "Esconder texto com aviso",
|
||||
"compose_form.spoiler_placeholder": "Aviso de conteúdo",
|
||||
"confirmation_modal.cancel": "Cancel",
|
||||
"confirmation_modal.cancel": "Cancelar",
|
||||
"confirmations.block.confirm": "Block",
|
||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||
"confirmations.delete.confirm": "Delete",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
||||
"confirmations.unfollow.confirm": "Unfollow",
|
||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
||||
"embed.instructions": "Embed this status on your website by copying the code below.",
|
||||
"embed.preview": "Here is what it will look like:",
|
||||
"emoji_button.activity": "Activity",
|
||||
"emoji_button.custom": "Custom",
|
||||
"emoji_button.flags": "Flags",
|
||||
"emoji_button.food": "Food & Drink",
|
||||
"confirmations.block.message": "De certeza que queres bloquear {name}?",
|
||||
"confirmations.delete.confirm": "Eliminar",
|
||||
"confirmations.delete.message": "De certeza que queres eliminar esta publicação?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Tens a certeza de que desejas apagar permanentemente esta lista?",
|
||||
"confirmations.domain_block.confirm": "Esconder tudo deste domínio",
|
||||
"confirmations.domain_block.message": "De certeza que queres bloquear por completo o domínio {domain}? Na maioria dos casos, silenciar ou bloquear alguns utilizadores é o suficiente e o recomendado.",
|
||||
"confirmations.mute.confirm": "Silenciar",
|
||||
"confirmations.mute.message": "De certeza que queres silenciar {name}?",
|
||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||
"confirmations.unfollow.message": "De certeza que queres deixar de seguir {name}?",
|
||||
"embed.instructions": "Publicar este post num outro site copiando o código abaixo.",
|
||||
"embed.preview": "Podes ver aqui como irá ficar:",
|
||||
"emoji_button.activity": "Actividade",
|
||||
"emoji_button.custom": "Especiais",
|
||||
"emoji_button.flags": "Bandeiras",
|
||||
"emoji_button.food": "Comida & Bebida",
|
||||
"emoji_button.label": "Inserir Emoji",
|
||||
"emoji_button.nature": "Nature",
|
||||
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "Objects",
|
||||
"emoji_button.people": "People",
|
||||
"emoji_button.recent": "Frequently used",
|
||||
"emoji_button.search": "Search...",
|
||||
"emoji_button.search_results": "Search results",
|
||||
"emoji_button.symbols": "Symbols",
|
||||
"emoji_button.travel": "Travel & Places",
|
||||
"empty_column.community": "Ainda não existem conteúdo local para mostrar!",
|
||||
"empty_column.hashtag": "Ainda não existe qualquer conteúdo com essa hashtag",
|
||||
"emoji_button.nature": "Natureza",
|
||||
"emoji_button.not_found": "Não tem emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "Objectos",
|
||||
"emoji_button.people": "Pessoas",
|
||||
"emoji_button.recent": "Regularmente utilizados",
|
||||
"emoji_button.search": "Procurar...",
|
||||
"emoji_button.search_results": "Resultados da pesquisa",
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viagens & Lugares",
|
||||
"empty_column.community": "Ainda não existe conteúdo local para mostrar!",
|
||||
"empty_column.hashtag": "Não foram encontradas publicações com essa hashtag.",
|
||||
"empty_column.home": "Ainda não segues qualquer utilizador. Visita {public} ou utiliza a pesquisa para procurar outros utilizadores.",
|
||||
"empty_column.home.public_timeline": "global",
|
||||
"empty_column.list": "There is nothing in this list yet.",
|
||||
"empty_column.list": "Ainda não existem publicações nesta lista.",
|
||||
"empty_column.notifications": "Não tens notificações. Interage com outros utilizadores para iniciar uma conversa.",
|
||||
"empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para ver aqui os conteúdos públicos.",
|
||||
"empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para ver aqui os conteúdos públicos",
|
||||
"follow_request.authorize": "Autorizar",
|
||||
"follow_request.reject": "Rejeitar",
|
||||
"getting_started.appsshort": "Apps",
|
||||
"getting_started.appsshort": "Aplicações",
|
||||
"getting_started.faq": "FAQ",
|
||||
"getting_started.heading": "Primeiros passos",
|
||||
"getting_started.open_source_notice": "Mastodon é software de fonte aberta. Podes contribuir ou repostar problemas no GitHub do projecto: {github}.",
|
||||
"getting_started.userguide": "User Guide",
|
||||
"getting_started.userguide": "Guia do utilizador",
|
||||
"home.column_settings.advanced": "Avançado",
|
||||
"home.column_settings.basic": "Básico",
|
||||
"home.column_settings.filter_regex": "Filtrar com uma expressão regular",
|
||||
"home.column_settings.show_reblogs": "Mostrar as partilhas",
|
||||
"home.column_settings.show_replies": "Mostrar as respostas",
|
||||
"home.settings": "Parâmetros da listagem",
|
||||
"keyboard_shortcuts.back": "to navigate back",
|
||||
"keyboard_shortcuts.boost": "to boost",
|
||||
"keyboard_shortcuts.column": "to focus a status in one of the columns",
|
||||
"keyboard_shortcuts.compose": "to focus the compose textarea",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.down": "to move down in the list",
|
||||
"keyboard_shortcuts.enter": "to open status",
|
||||
"keyboard_shortcuts.favourite": "to favourite",
|
||||
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "to display this legend",
|
||||
"keyboard_shortcuts.mention": "to mention author",
|
||||
"keyboard_shortcuts.reply": "to reply",
|
||||
"keyboard_shortcuts.search": "to focus search",
|
||||
"keyboard_shortcuts.toot": "to start a brand new toot",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"keyboard_shortcuts.back": "para navegar de volta",
|
||||
"keyboard_shortcuts.boost": "para partilhar",
|
||||
"keyboard_shortcuts.column": "para focar uma publicação numa das colunas",
|
||||
"keyboard_shortcuts.compose": "para focar na área de publicação",
|
||||
"keyboard_shortcuts.description": "Descrição",
|
||||
"keyboard_shortcuts.down": "para mover para baixo na lista",
|
||||
"keyboard_shortcuts.enter": "para expandir uma publicação",
|
||||
"keyboard_shortcuts.favourite": "para adicionar aos favoritos",
|
||||
"keyboard_shortcuts.heading": "Atalhos do teclado",
|
||||
"keyboard_shortcuts.hotkey": "Atalho",
|
||||
"keyboard_shortcuts.legend": "para mostrar esta legenda",
|
||||
"keyboard_shortcuts.mention": "para mencionar o autor",
|
||||
"keyboard_shortcuts.reply": "para responder",
|
||||
"keyboard_shortcuts.search": "para focar na pesquisa",
|
||||
"keyboard_shortcuts.toot": "para compor um novo post",
|
||||
"keyboard_shortcuts.unfocus": "para remover o foco da área de publicação/pesquisa",
|
||||
"keyboard_shortcuts.up": "para mover para cima na lista",
|
||||
"lightbox.close": "Fechar",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"loading_indicator.label": "Carregando...",
|
||||
"lightbox.next": "Próximo",
|
||||
"lightbox.previous": "Anterior",
|
||||
"lists.account.add": "Adicionar à lista",
|
||||
"lists.account.remove": "Remover da lista",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Editar lista",
|
||||
"lists.new.create": "Adicionar lista",
|
||||
"lists.new.title_placeholder": "Novo título da lista",
|
||||
"lists.search": "Pesquisa entre as pessoas que segues",
|
||||
"lists.subheading": "As tuas listas",
|
||||
"loading_indicator.label": "A carregar...",
|
||||
"media_gallery.toggle_visible": "Esconder/Mostrar",
|
||||
"missing_indicator.label": "Não encontrado",
|
||||
"mute_modal.hide_notifications": "Hide notifications from this user?",
|
||||
"mute_modal.hide_notifications": "Esconder notificações deste utilizador?",
|
||||
"navigation_bar.blocks": "Utilizadores bloqueados",
|
||||
"navigation_bar.community_timeline": "Local",
|
||||
"navigation_bar.edit_profile": "Editar perfil",
|
||||
"navigation_bar.favourites": "Favoritos",
|
||||
"navigation_bar.follow_requests": "Seguidores pendentes",
|
||||
"navigation_bar.info": "Mais informações",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.keyboard_shortcuts": "Atalhos de teclado",
|
||||
"navigation_bar.lists": "Listas",
|
||||
"navigation_bar.logout": "Sair",
|
||||
"navigation_bar.mutes": "Utilizadores silenciados",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
"navigation_bar.pins": "Posts fixos",
|
||||
"navigation_bar.preferences": "Preferências",
|
||||
"navigation_bar.public_timeline": "Global",
|
||||
"notification.favourite": "{name} adicionou o teu post aos favoritos",
|
||||
@@ -150,31 +162,31 @@
|
||||
"notifications.column_settings.favourite": "Favoritos:",
|
||||
"notifications.column_settings.follow": "Novos seguidores:",
|
||||
"notifications.column_settings.mention": "Menções:",
|
||||
"notifications.column_settings.push": "Push notifications",
|
||||
"notifications.column_settings.push_meta": "This device",
|
||||
"notifications.column_settings.push": "Notificações Push",
|
||||
"notifications.column_settings.push_meta": "Este dispositivo",
|
||||
"notifications.column_settings.reblog": "Partilhas:",
|
||||
"notifications.column_settings.show": "Mostrar nas colunas",
|
||||
"notifications.column_settings.sound": "Reproduzir som",
|
||||
"onboarding.done": "Done",
|
||||
"onboarding.next": "Next",
|
||||
"onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
|
||||
"onboarding.page_four.home": "The home timeline shows posts from people you follow.",
|
||||
"onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
|
||||
"onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
|
||||
"onboarding.page_one.welcome": "Welcome to Mastodon!",
|
||||
"onboarding.page_six.admin": "Your instance's admin is {admin}.",
|
||||
"onboarding.page_six.almost_done": "Almost done...",
|
||||
"onboarding.done": "Pronto",
|
||||
"onboarding.next": "Próximo",
|
||||
"onboarding.page_five.public_timelines": "A timeline local mostra as publicações de todos os utilizadores em {domain}. A timeline global mostra as publicações de todas as pessoas que pessoas em {domain} seguem. Estas são as timelines públicas, uma óptima forma de conhecer novas pessoas.",
|
||||
"onboarding.page_four.home": "A timeline home mostra as publicações de pessoas que tu segues.",
|
||||
"onboarding.page_four.notifications": "A coluna de notificações mostra-te quando alguém interage contigo.",
|
||||
"onboarding.page_one.federation": "Mastodon é uma rede de servidores independentes ligados entre si para fazer uma grande rede social. Nós chamamos instâncias a estes servidores.",
|
||||
"onboarding.page_one.handle": "Tu estás em {domain}, por isso o teu endereço completo de utilizador é {handle}",
|
||||
"onboarding.page_one.welcome": "Bem-vindo(a) ao Mastodon!",
|
||||
"onboarding.page_six.admin": "O administrador da tua instância é {admin}.",
|
||||
"onboarding.page_six.almost_done": "Quase pronto...",
|
||||
"onboarding.page_six.appetoot": "Bon Appetoot!",
|
||||
"onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
|
||||
"onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"onboarding.page_six.guidelines": "community guidelines",
|
||||
"onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
|
||||
"onboarding.page_six.various_app": "mobile apps",
|
||||
"onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
|
||||
"onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
|
||||
"onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
|
||||
"onboarding.skip": "Skip",
|
||||
"onboarding.page_six.apps_available": "Existem {apps} disponíveis para iOS, Android e outras plataformas.",
|
||||
"onboarding.page_six.github": "Mastodon é um software gratuito e de código aberto. Podes reportar bugs, solicitar novas funcionalidades e contribuir para o código em {github}.",
|
||||
"onboarding.page_six.guidelines": "termos de utilização da comunidade",
|
||||
"onboarding.page_six.read_guidelines": "Por favor, lê os {guidelines} de {domain}!",
|
||||
"onboarding.page_six.various_app": "aplicações de telemóvel",
|
||||
"onboarding.page_three.profile": "Edita o teu perfil para mudar a tua imagem, biografia e nome. Lá encontrarás também outras preferências que podes personalizar.",
|
||||
"onboarding.page_three.search": "Utiliza a caixa de pesquisa para procurar pessoas ou hashtags, exemplo {illustration} / {introductions}. Para procurar uma pessoa que não está nesta instância, utiliza o endereço completo.",
|
||||
"onboarding.page_two.compose": "Escreve posts na coluna de publicações. Podes publicar imagens, alterar a privacidade e adicionar alertas de conteúdo usando os ícones abaixo da caixa de composição.",
|
||||
"onboarding.skip": "Saltar",
|
||||
"privacy.change": "Ajustar a privacidade da mensagem",
|
||||
"privacy.direct.long": "Apenas para utilizadores mencionados",
|
||||
"privacy.direct.short": "Directo",
|
||||
@@ -186,7 +198,7 @@
|
||||
"privacy.unlisted.short": "Não listar",
|
||||
"relative_time.days": "{number}d",
|
||||
"relative_time.hours": "{number}h",
|
||||
"relative_time.just_now": "now",
|
||||
"relative_time.just_now": "agora",
|
||||
"relative_time.minutes": "{number}m",
|
||||
"relative_time.seconds": "{number}s",
|
||||
"reply_indicator.cancel": "Cancelar",
|
||||
@@ -194,54 +206,54 @@
|
||||
"report.submit": "Enviar",
|
||||
"report.target": "Denunciar",
|
||||
"search.placeholder": "Pesquisar",
|
||||
"search_popout.search_format": "Advanced search format",
|
||||
"search_popout.search_format": "Formato avançado de pesquisa",
|
||||
"search_popout.tips.hashtag": "hashtag",
|
||||
"search_popout.tips.status": "status",
|
||||
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
|
||||
"search_popout.tips.user": "user",
|
||||
"search_popout.tips.text": "O texto simples retorna a correspondência de nomes, utilizadores e hashtags",
|
||||
"search_popout.tips.user": "utilizador",
|
||||
"search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
|
||||
"standalone.public_title": "A look inside...",
|
||||
"status.cannot_reblog": "This post cannot be boosted",
|
||||
"standalone.public_title": "Espreitar lá dentro...",
|
||||
"status.cannot_reblog": "Este post não pode ser partilhado",
|
||||
"status.delete": "Eliminar",
|
||||
"status.embed": "Embed",
|
||||
"status.embed": "Incorporar",
|
||||
"status.favourite": "Adicionar aos favoritos",
|
||||
"status.load_more": "Carregar mais",
|
||||
"status.media_hidden": "Media escondida",
|
||||
"status.mention": "Mencionar @{name}",
|
||||
"status.more": "More",
|
||||
"status.mute_conversation": "Mute conversation",
|
||||
"status.more": "Mais",
|
||||
"status.mute_conversation": "Silenciar conversa",
|
||||
"status.open": "Expandir",
|
||||
"status.pin": "Pin on profile",
|
||||
"status.reblog": "Partilhar",
|
||||
"status.reblogged_by": "{name} partilhou",
|
||||
"status.reply": "Responder",
|
||||
"status.replyAll": "Reply to thread",
|
||||
"status.report": "Denúnciar @{name}",
|
||||
"status.replyAll": "Responder à conversa",
|
||||
"status.report": "Denunciar @{name}",
|
||||
"status.sensitive_toggle": "Clique para ver",
|
||||
"status.sensitive_warning": "Conteúdo sensível",
|
||||
"status.share": "Share",
|
||||
"status.show_less": "Mostrar menos",
|
||||
"status.show_more": "Mostrar mais",
|
||||
"status.unmute_conversation": "Unmute conversation",
|
||||
"status.unpin": "Unpin from profile",
|
||||
"status.unmute_conversation": "Deixar de silenciar esta conversa",
|
||||
"status.unpin": "Não fixar no perfil",
|
||||
"tabs_bar.compose": "Criar",
|
||||
"tabs_bar.federated_timeline": "Global",
|
||||
"tabs_bar.home": "Home",
|
||||
"tabs_bar.local_timeline": "Local",
|
||||
"tabs_bar.notifications": "Notificações",
|
||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||
"ui.beforeunload": "O teu rascunho vai ser perdido se abandonares o Mastodon.",
|
||||
"upload_area.title": "Arraste e solte para enviar",
|
||||
"upload_button.label": "Adicionar media",
|
||||
"upload_form.description": "Describe for the visually impaired",
|
||||
"upload_form.description": "Descrição da imagem para pessoas com dificuldades visuais",
|
||||
"upload_form.undo": "Anular",
|
||||
"upload_progress.label": "A gravar...",
|
||||
"video.close": "Close video",
|
||||
"video.exit_fullscreen": "Exit full screen",
|
||||
"video.expand": "Expand video",
|
||||
"video.close": "Fechar vídeo",
|
||||
"video.exit_fullscreen": "Sair de full screen",
|
||||
"video.expand": "Expandir vídeo",
|
||||
"video.fullscreen": "Full screen",
|
||||
"video.hide": "Hide video",
|
||||
"video.mute": "Mute sound",
|
||||
"video.pause": "Pause",
|
||||
"video.play": "Play",
|
||||
"video.unmute": "Unmute sound"
|
||||
"video.hide": "Esconder vídeo",
|
||||
"video.mute": "Silenciar",
|
||||
"video.pause": "Pausar",
|
||||
"video.play": "Reproduzir",
|
||||
"video.unmute": "Remover de silêncio"
|
||||
}
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Понравившееся",
|
||||
"column.follow_requests": "Запросы на подписку",
|
||||
"column.home": "Главная",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Список глушения",
|
||||
"column.notifications": "Уведомления",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Вы уверены, что хотите заблокировать {name}?",
|
||||
"confirmations.delete.confirm": "Удалить",
|
||||
"confirmations.delete.message": "Вы уверены, что хотите удалить этот статус?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Блокировать весь домен",
|
||||
"confirmations.domain_block.message": "Вы на самом деле уверены, что хотите блокировать весь {domain}? В большинстве случаев нескольких отдельных блокировок или глушений достаточно.",
|
||||
"confirmations.mute.confirm": "Заглушить",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Закрыть",
|
||||
"lightbox.next": "Далее",
|
||||
"lightbox.previous": "Назад",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Загрузка...",
|
||||
"media_gallery.toggle_visible": "Показать/скрыть",
|
||||
"missing_indicator.label": "Не найдено",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Запросы на подписку",
|
||||
"navigation_bar.info": "Об узле",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Выйти",
|
||||
"navigation_bar.mutes": "Список глушения",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favoriter",
|
||||
"column.follow_requests": "Följ förfrågningar",
|
||||
"column.home": "Hem",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Tystade användare",
|
||||
"column.notifications": "Meddelanden",
|
||||
"column.pins": "Nålade toots",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Är du säker att du vill blockera {name}?",
|
||||
"confirmations.delete.confirm": "Ta bort",
|
||||
"confirmations.delete.message": "Är du säker att du vill ta bort denna status?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Blockera hela domänen",
|
||||
"confirmations.domain_block.message": "Är du verkligen, verkligen säker på att du vill blockera hela {domain}? I de flesta fall är några riktade blockeringar eller nedtystade tillräckligt och föredras.",
|
||||
"confirmations.mute.confirm": "Tysta",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Stäng",
|
||||
"lightbox.next": "Nästa",
|
||||
"lightbox.previous": "Tidigare",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Laddar...",
|
||||
"media_gallery.toggle_visible": "Växla synlighet",
|
||||
"missing_indicator.label": "Hittades inte",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Följförfrågningar",
|
||||
"navigation_bar.info": "Om denna instans",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Logga ut",
|
||||
"navigation_bar.mutes": "Tystade användare",
|
||||
"navigation_bar.pins": "Nålade inlägg (toots)",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favourites",
|
||||
"column.follow_requests": "Follow requests",
|
||||
"column.home": "Home",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Muted users",
|
||||
"column.notifications": "Notifications",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||
"confirmations.delete.confirm": "Delete",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Close",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Loading...",
|
||||
"media_gallery.toggle_visible": "Toggle visibility",
|
||||
"missing_indicator.label": "Not found",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Follow requests",
|
||||
"navigation_bar.info": "About this instance",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Logout",
|
||||
"navigation_bar.mutes": "Muted users",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Favoriler",
|
||||
"column.follow_requests": "Takip istekleri",
|
||||
"column.home": "Anasayfa",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Susturulmuş kullanıcılar",
|
||||
"column.notifications": "Bildirimler",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "{name} kullanıcısını engellemek istiyor musunuz?",
|
||||
"confirmations.delete.confirm": "Sil",
|
||||
"confirmations.delete.message": "Bu gönderiyi silmek istiyor musunuz?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
||||
"confirmations.mute.confirm": "Sessize al",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Kapat",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Yükleniyor...",
|
||||
"media_gallery.toggle_visible": "Görünürlüğü değiştir",
|
||||
"missing_indicator.label": "Bulunamadı",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Takip istekleri",
|
||||
"navigation_bar.info": "Genişletilmiş bilgi",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Çıkış",
|
||||
"navigation_bar.mutes": "Sessize alınmış kullanıcılar",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "Вподобане",
|
||||
"column.follow_requests": "Запити на підписку",
|
||||
"column.home": "Головна",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Заглушені користувачі",
|
||||
"column.notifications": "Сповіщення",
|
||||
"column.pins": "Pinned toot",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "Ви впевнені, що хочете заблокувати {name}?",
|
||||
"confirmations.delete.confirm": "Видалити",
|
||||
"confirmations.delete.message": "Ви впевнені, що хочете видалити цей допис?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "Сховати весь домен",
|
||||
"confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів.",
|
||||
"confirmations.mute.confirm": "Заглушити",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "Закрити",
|
||||
"lightbox.next": "Next",
|
||||
"lightbox.previous": "Previous",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "Завантаження...",
|
||||
"media_gallery.toggle_visible": "Показати/приховати",
|
||||
"missing_indicator.label": "Не знайдено",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "Запити на підписку",
|
||||
"navigation_bar.info": "Про інстанцію",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Вийти",
|
||||
"navigation_bar.mutes": "Заглушені користувачі",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
|
2
app/javascript/mastodon/locales/whitelist_gl.json
Normal file
2
app/javascript/mastodon/locales/whitelist_gl.json
Normal file
@@ -0,0 +1,2 @@
|
||||
[
|
||||
]
|
@@ -25,11 +25,11 @@
|
||||
"account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
|
||||
"account.view_full_profile": "查看完整资料",
|
||||
"boost_modal.combo": "下次按住 {combo} 即可跳过此提示",
|
||||
"bundle_column_error.body": "载入组件出错。",
|
||||
"bundle_column_error.body": "载入这个组件时发生了错误。",
|
||||
"bundle_column_error.retry": "重试",
|
||||
"bundle_column_error.title": "网络错误",
|
||||
"bundle_modal_error.close": "关闭",
|
||||
"bundle_modal_error.message": "载入组件出错。",
|
||||
"bundle_modal_error.message": "载入这个组件时发生了错误。",
|
||||
"bundle_modal_error.retry": "重试",
|
||||
"column.blocks": "屏蔽用户",
|
||||
"column.community": "本站时间轴",
|
||||
@@ -50,8 +50,8 @@
|
||||
"column_header.unpin": "取消固定",
|
||||
"column_subheading.navigation": "导航",
|
||||
"column_subheading.settings": "设置",
|
||||
"compose_form.lock_disclaimer": "你的帐户没有{locked}。任何人都可以通过关注你来查看仅关注者可见的嘟文。",
|
||||
"compose_form.lock_disclaimer.lock": "被保护",
|
||||
"compose_form.lock_disclaimer": "你的帐户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。",
|
||||
"compose_form.lock_disclaimer.lock": "开启保护",
|
||||
"compose_form.placeholder": "在想啥?",
|
||||
"compose_form.publish": "嘟嘟",
|
||||
"compose_form.publish_loud": "{publish}!",
|
||||
@@ -60,17 +60,17 @@
|
||||
"compose_form.spoiler_placeholder": "折叠部分的警告消息",
|
||||
"confirmation_modal.cancel": "取消",
|
||||
"confirmations.block.confirm": "屏蔽",
|
||||
"confirmations.block.message": "想好了,真的要屏蔽 {name}?",
|
||||
"confirmations.block.message": "你确定要屏蔽 {name} 吗?",
|
||||
"confirmations.delete.confirm": "删除",
|
||||
"confirmations.delete.message": "想好了,真的要删除这条嘟文?",
|
||||
"confirmations.delete.message": "你确定要删除这条嘟文吗?",
|
||||
"confirmations.delete_list.confirm": "删除",
|
||||
"confirmations.delete_list.message": "你确定要永久删除这个列表吗?",
|
||||
"confirmations.domain_block.confirm": "隐藏整个网站的内容",
|
||||
"confirmations.domain_block.message": "你真的真的确定要隐藏所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就应该能满足你的需要了。",
|
||||
"confirmations.domain_block.message": "你真的确定要隐藏所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户应该就能满足你的需要了。",
|
||||
"confirmations.mute.confirm": "隐藏",
|
||||
"confirmations.mute.message": "想好了,真的要隐藏 {name}?",
|
||||
"confirmations.mute.message": "你确定要隐藏 {name} 吗?",
|
||||
"confirmations.unfollow.confirm": "取消关注",
|
||||
"confirmations.unfollow.message": "确定要取消关注 {name} 吗?",
|
||||
"confirmations.unfollow.message": "你确定要取消关注 {name} 吗?",
|
||||
"embed.instructions": "要在你的网站上嵌入这条嘟文,请复制以下代码。",
|
||||
"embed.preview": "它会像这样显示出来:",
|
||||
"emoji_button.activity": "活动",
|
||||
@@ -91,9 +91,9 @@
|
||||
"empty_column.hashtag": "这个话题标签下暂时没有内容。",
|
||||
"empty_column.home": "你还没有关注任何用户。快看看{public},向其他用户搭讪吧。",
|
||||
"empty_column.home.public_timeline": "公共时间轴",
|
||||
"empty_column.list": "这个列表中暂时没有内容。",
|
||||
"empty_column.notifications": "你还没有收到过通知信息,快向其他用户搭讪吧。",
|
||||
"empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户,这里就会有嘟文出现了哦!",
|
||||
"empty_column.list": "这个列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。",
|
||||
"empty_column.notifications": "你还没有收到过任何通知,快向其他用户搭讪吧。",
|
||||
"empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户后,这里就会有嘟文出现了哦!",
|
||||
"follow_request.authorize": "同意",
|
||||
"follow_request.reject": "拒绝",
|
||||
"getting_started.appsshort": "应用",
|
||||
@@ -138,15 +138,15 @@
|
||||
"loading_indicator.label": "加载中……",
|
||||
"media_gallery.toggle_visible": "切换显示/隐藏",
|
||||
"missing_indicator.label": "找不到内容",
|
||||
"mute_modal.hide_notifications": "隐藏来自这个用户的通知",
|
||||
"mute_modal.hide_notifications": "同时隐藏来自这个用户的通知",
|
||||
"navigation_bar.blocks": "被屏蔽的用户",
|
||||
"navigation_bar.community_timeline": "本站时间轴",
|
||||
"navigation_bar.edit_profile": "修改个人资料",
|
||||
"navigation_bar.favourites": "收藏的内容",
|
||||
"navigation_bar.follow_requests": "关注请求",
|
||||
"navigation_bar.info": "关于本站",
|
||||
"navigation_bar.lists": "列表",
|
||||
"navigation_bar.keyboard_shortcuts": "快捷键列表",
|
||||
"navigation_bar.lists": "列表",
|
||||
"navigation_bar.logout": "注销",
|
||||
"navigation_bar.mutes": "被隐藏的用户",
|
||||
"navigation_bar.pins": "置顶嘟文",
|
||||
@@ -157,25 +157,25 @@
|
||||
"notification.mention": "{name} 提及你",
|
||||
"notification.reblog": "{name} 转嘟了你的嘟文",
|
||||
"notifications.clear": "清空通知列表",
|
||||
"notifications.clear_confirmation": "你确定要清空通知列表吗?",
|
||||
"notifications.clear_confirmation": "你确定要永久清空通知列表吗?",
|
||||
"notifications.column_settings.alert": "桌面通知",
|
||||
"notifications.column_settings.favourite": "你的嘟文被收藏:",
|
||||
"notifications.column_settings.follow": "关注你:",
|
||||
"notifications.column_settings.mention": "提及你:",
|
||||
"notifications.column_settings.favourite": "当你的嘟文被收藏时:",
|
||||
"notifications.column_settings.follow": "当有人关注你时:",
|
||||
"notifications.column_settings.mention": "当有人在嘟文中提及你时:",
|
||||
"notifications.column_settings.push": "推送通知",
|
||||
"notifications.column_settings.push_meta": "此设备",
|
||||
"notifications.column_settings.reblog": "你的嘟文被转嘟:",
|
||||
"notifications.column_settings.reblog": "当有人转嘟了你的嘟文时:",
|
||||
"notifications.column_settings.show": "在通知栏显示",
|
||||
"notifications.column_settings.sound": "播放音效",
|
||||
"onboarding.done": "出发!",
|
||||
"onboarding.next": "下一步",
|
||||
"onboarding.page_five.public_timelines": "本站时间轴显示的是由本站({domain})用户发布的所有公开嘟文。跨站公共时间轴显示的的是由本站用户关注对象所发布的所有公开嘟文。这些就是寻人好去处的公共时间轴啦。",
|
||||
"onboarding.page_four.home": "你的主页上的时间轴上显示的是你关注对象的嘟文。",
|
||||
"onboarding.page_four.notifications": "如果有人与你互动,便会出现在通知栏中哦~",
|
||||
"onboarding.page_one.federation": "Mastodon 是由一系列独立的服务器共同打造的强大的社交网络,我们将这些各自独立但又相互连接的服务器叫做实例。",
|
||||
"onboarding.page_one.handle": "你在 {domain},{handle} 就是你的完整帐户名称。",
|
||||
"onboarding.page_four.home": "你的主页时间轴上显示的是你的关注对象所发布的嘟文。",
|
||||
"onboarding.page_four.notifications": "如果有人与你互动了,他们就会出现在通知栏中哦~",
|
||||
"onboarding.page_one.federation": "Mastodon 是由一系列独立的服务器共同打造的强大的社交网络,我们将这些各自独立而又相互连接的服务器叫做实例。",
|
||||
"onboarding.page_one.handle": "你是在 {domain} 上注册的,所以你的完整用户地址是 {handle}。",
|
||||
"onboarding.page_one.welcome": "欢迎来到 Mastodon!",
|
||||
"onboarding.page_six.admin": "{admin} 是你所在服务器实例的管理员.",
|
||||
"onboarding.page_six.admin": "{admin} 是你所在服务器实例的管理员。",
|
||||
"onboarding.page_six.almost_done": "差不多了……",
|
||||
"onboarding.page_six.appetoot": "嗷呜~",
|
||||
"onboarding.page_six.apps_available": "我们还有适用于 iOS、Android 和其它平台的{apps}哦~",
|
||||
@@ -184,8 +184,8 @@
|
||||
"onboarding.page_six.read_guidelines": "别忘了看看 {domain} 的{guidelines}!",
|
||||
"onboarding.page_six.various_app": "移动设备应用",
|
||||
"onboarding.page_three.profile": "你可以修改你的个人资料,比如头像、简介和昵称等偏好设置。",
|
||||
"onboarding.page_three.search": "你可以通过搜索功能寻找用户和话题标签,比如{illustration}或者{introductions}。如果你想搜索其他实例上的用户,就需要输入完整帐户名称(用户名@域名)哦。",
|
||||
"onboarding.page_two.compose": "在撰写栏中开始嘟嘟吧!下方的按钮分别用来上传图片,修改嘟文可见范围,以及添加警告信息。",
|
||||
"onboarding.page_three.search": "你可以通过搜索功能寻找用户和话题标签,比如{illustration}或者{introductions}。如果你想搜索其他实例上的用户,就需要输入完整用户地址(@用户名@域名)哦。",
|
||||
"onboarding.page_two.compose": "在撰写栏中开始嘟嘟吧!下方的按钮分别可以用来上传图片、修改嘟文可见范围,以及添加警告信息。",
|
||||
"onboarding.skip": "跳过",
|
||||
"privacy.change": "设置嘟文可见范围",
|
||||
"privacy.direct.long": "只有被提及的用户能看到",
|
||||
@@ -196,11 +196,11 @@
|
||||
"privacy.public.short": "公开",
|
||||
"privacy.unlisted.long": "所有人可见,但不会出现在公共时间轴上",
|
||||
"privacy.unlisted.short": "不公开",
|
||||
"relative_time.days": "{number} 天",
|
||||
"relative_time.hours": "{number} 时",
|
||||
"relative_time.days": "{number}天",
|
||||
"relative_time.hours": "{number}时",
|
||||
"relative_time.just_now": "刚刚",
|
||||
"relative_time.minutes": "{number} 分",
|
||||
"relative_time.seconds": "{number} 秒",
|
||||
"relative_time.minutes": "{number}分",
|
||||
"relative_time.seconds": "{number}秒",
|
||||
"reply_indicator.cancel": "取消",
|
||||
"report.placeholder": "附言",
|
||||
"report.submit": "提交",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "最愛的文章",
|
||||
"column.follow_requests": "關注請求",
|
||||
"column.home": "主頁",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "靜音名單",
|
||||
"column.notifications": "通知",
|
||||
"column.pins": "置頂文章",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "你確定要封鎖{name}嗎?",
|
||||
"confirmations.delete.confirm": "刪除",
|
||||
"confirmations.delete.message": "你確定要刪除{name}嗎?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "隱藏整個網站",
|
||||
"confirmations.domain_block.message": "你真的真的確定要隱藏整個 {domain} ?多數情況下,比較推薦封鎖或靜音幾個特定目標就好。",
|
||||
"confirmations.mute.confirm": "靜音",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "關閉",
|
||||
"lightbox.next": "繼續",
|
||||
"lightbox.previous": "回退",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "載入中...",
|
||||
"media_gallery.toggle_visible": "打開或關上",
|
||||
"missing_indicator.label": "找不到內容",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "關注請求",
|
||||
"navigation_bar.info": "關於本服務站",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "登出",
|
||||
"navigation_bar.mutes": "被你靜音的用戶",
|
||||
"navigation_bar.pins": "置頂文章",
|
||||
|
@@ -36,6 +36,7 @@
|
||||
"column.favourites": "最愛",
|
||||
"column.follow_requests": "關注請求",
|
||||
"column.home": "家",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "消音的使用者",
|
||||
"column.notifications": "通知",
|
||||
"column.pins": "置頂貼文",
|
||||
@@ -62,6 +63,8 @@
|
||||
"confirmations.block.message": "你確定要封鎖 {name} ?",
|
||||
"confirmations.delete.confirm": "刪除",
|
||||
"confirmations.delete.message": "你確定要刪除這個狀態?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.domain_block.confirm": "隱藏整個網域",
|
||||
"confirmations.domain_block.message": "你真的真的確定要隱藏整個 {domain} ?多數情況下,比較推薦封鎖或消音幾個特定目標就好。",
|
||||
"confirmations.mute.confirm": "消音",
|
||||
@@ -124,6 +127,14 @@
|
||||
"lightbox.close": "關閉",
|
||||
"lightbox.next": "繼續",
|
||||
"lightbox.previous": "回退",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"lists.new.create": "Add list",
|
||||
"lists.new.title_placeholder": "New list title",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "Your lists",
|
||||
"loading_indicator.label": "讀取中...",
|
||||
"media_gallery.toggle_visible": "切換可見性",
|
||||
"missing_indicator.label": "找不到",
|
||||
@@ -135,6 +146,7 @@
|
||||
"navigation_bar.follow_requests": "關注請求",
|
||||
"navigation_bar.info": "關於本站",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "登出",
|
||||
"navigation_bar.mutes": "消音的使用者",
|
||||
"navigation_bar.pins": "置頂貼文",
|
||||
|
@@ -15,7 +15,7 @@ const play = audio => {
|
||||
if (typeof audio.fastSeek === 'function') {
|
||||
audio.fastSeek(0);
|
||||
} else {
|
||||
audio.seek(0);
|
||||
audio.currentTime = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,10 @@
|
||||
import {
|
||||
FAVOURITED_STATUSES_FETCH_REQUEST,
|
||||
FAVOURITED_STATUSES_FETCH_SUCCESS,
|
||||
FAVOURITED_STATUSES_FETCH_FAIL,
|
||||
FAVOURITED_STATUSES_EXPAND_REQUEST,
|
||||
FAVOURITED_STATUSES_EXPAND_SUCCESS,
|
||||
FAVOURITED_STATUSES_EXPAND_FAIL,
|
||||
} from '../actions/favourites';
|
||||
import {
|
||||
PINNED_STATUSES_FETCH_SUCCESS,
|
||||
@@ -30,6 +34,7 @@ const normalizeList = (state, listType, statuses, next) => {
|
||||
return state.update(listType, listMap => listMap.withMutations(map => {
|
||||
map.set('next', next);
|
||||
map.set('loaded', true);
|
||||
map.set('isLoading', false);
|
||||
map.set('items', ImmutableList(statuses.map(item => item.id)));
|
||||
}));
|
||||
};
|
||||
@@ -37,6 +42,7 @@ const normalizeList = (state, listType, statuses, next) => {
|
||||
const appendToList = (state, listType, statuses, next) => {
|
||||
return state.update(listType, listMap => listMap.withMutations(map => {
|
||||
map.set('next', next);
|
||||
map.set('isLoading', false);
|
||||
map.set('items', map.get('items').concat(statuses.map(item => item.id)));
|
||||
}));
|
||||
};
|
||||
@@ -55,6 +61,12 @@ const removeOneFromList = (state, listType, status) => {
|
||||
|
||||
export default function statusLists(state = initialState, action) {
|
||||
switch(action.type) {
|
||||
case FAVOURITED_STATUSES_FETCH_REQUEST:
|
||||
case FAVOURITED_STATUSES_EXPAND_REQUEST:
|
||||
return state.setIn(['favourites', 'isLoading'], true);
|
||||
case FAVOURITED_STATUSES_FETCH_FAIL:
|
||||
case FAVOURITED_STATUSES_EXPAND_FAIL:
|
||||
return state.setIn(['favourites', 'isLoading'], false);
|
||||
case FAVOURITED_STATUSES_FETCH_SUCCESS:
|
||||
return normalizeList(state, 'favourites', action.statuses, action.next);
|
||||
case FAVOURITED_STATUSES_EXPAND_SUCCESS:
|
||||
|
46
app/javascript/mastodon/settings.js
Normal file
46
app/javascript/mastodon/settings.js
Normal file
@@ -0,0 +1,46 @@
|
||||
export default class Settings {
|
||||
|
||||
constructor(keyBase = null) {
|
||||
this.keyBase = keyBase;
|
||||
}
|
||||
|
||||
generateKey(id) {
|
||||
return this.keyBase ? [this.keyBase, `id${id}`].join('.') : id;
|
||||
}
|
||||
|
||||
set(id, data) {
|
||||
const key = this.generateKey(id);
|
||||
try {
|
||||
const encodedData = JSON.stringify(data);
|
||||
localStorage.setItem(key, encodedData);
|
||||
return data;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
get(id) {
|
||||
const key = this.generateKey(id);
|
||||
try {
|
||||
const rawData = localStorage.getItem(key);
|
||||
return JSON.parse(rawData);
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
remove(id) {
|
||||
const data = this.get(id);
|
||||
if (data) {
|
||||
const key = this.generateKey(id);
|
||||
try {
|
||||
localStorage.removeItem(key);
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const pushNotificationsSetting = new Settings('mastodon_push_notification_data');
|
@@ -62,7 +62,13 @@ export function connectStream(path, pollingRefresh = null, callbacks = () => ({
|
||||
|
||||
|
||||
export default function getStream(streamingAPIBaseURL, accessToken, stream, { connected, received, disconnected, reconnected }) {
|
||||
const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?access_token=${accessToken}&stream=${stream}`);
|
||||
const params = [ `stream=${stream}` ];
|
||||
|
||||
if (accessToken !== null) {
|
||||
params.push(`access_token=${accessToken}`);
|
||||
}
|
||||
|
||||
const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`);
|
||||
|
||||
ws.onopen = connected;
|
||||
ws.onmessage = e => received(JSON.parse(e.data));
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import axios from 'axios';
|
||||
import { store } from './containers/mastodon';
|
||||
import { setBrowserSupport, setSubscription, clearSubscription } from './actions/push_notifications';
|
||||
import { pushNotificationsSetting } from './settings';
|
||||
|
||||
// Taken from https://www.npmjs.com/package/web-push
|
||||
const urlBase64ToUint8Array = (base64String) => {
|
||||
@@ -35,16 +36,33 @@ const subscribe = (registration) =>
|
||||
const unsubscribe = ({ registration, subscription }) =>
|
||||
subscription ? subscription.unsubscribe().then(() => registration) : registration;
|
||||
|
||||
const sendSubscriptionToBackend = (subscription) =>
|
||||
axios.post('/api/web/push_subscriptions', {
|
||||
subscription,
|
||||
}).then(response => response.data);
|
||||
const sendSubscriptionToBackend = (subscription) => {
|
||||
const params = { subscription };
|
||||
|
||||
const me = store.getState().getIn(['meta', 'me']);
|
||||
if (me) {
|
||||
const data = pushNotificationsSetting.get(me);
|
||||
if (data) {
|
||||
params.data = data;
|
||||
}
|
||||
}
|
||||
|
||||
return axios.post('/api/web/push_subscriptions', params).then(response => response.data);
|
||||
};
|
||||
|
||||
// Last one checks for payload support: https://web-push-book.gauntface.com/chapter-06/01-non-standards-browsers/#no-payload
|
||||
const supportsPushNotifications = ('serviceWorker' in navigator && 'PushManager' in window && 'getKey' in PushSubscription.prototype);
|
||||
|
||||
export function register () {
|
||||
store.dispatch(setBrowserSupport(supportsPushNotifications));
|
||||
const me = store.getState().getIn(['meta', 'me']);
|
||||
|
||||
if (me && !pushNotificationsSetting.get(me)) {
|
||||
const alerts = store.getState().getIn(['push_notifications', 'alerts']);
|
||||
if (alerts) {
|
||||
pushNotificationsSetting.set(me, { alerts: alerts });
|
||||
}
|
||||
}
|
||||
|
||||
if (supportsPushNotifications) {
|
||||
if (!getApplicationServerKey()) {
|
||||
@@ -79,6 +97,9 @@ export function register () {
|
||||
// it means that the backend subscription is valid (and was set during hydration)
|
||||
if (!(subscription instanceof PushSubscription)) {
|
||||
store.dispatch(setSubscription(subscription));
|
||||
if (me) {
|
||||
pushNotificationsSetting.set(me, { alerts: subscription.alerts });
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
@@ -90,6 +111,9 @@ export function register () {
|
||||
|
||||
// Clear alerts and hide UI settings
|
||||
store.dispatch(clearSubscription());
|
||||
if (me) {
|
||||
pushNotificationsSetting.remove(me);
|
||||
}
|
||||
|
||||
try {
|
||||
getRegistration()
|
||||
|
@@ -19,7 +19,7 @@
|
||||
display: inline;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-weight: 500;
|
||||
font-weight: 700;
|
||||
background: transparent;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
|
@@ -473,6 +473,12 @@
|
||||
strong {
|
||||
font-weight: 500;
|
||||
color: $ui-base-color;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
|
@@ -121,6 +121,12 @@
|
||||
strong {
|
||||
color: $primary-text-color;
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,6 +228,12 @@
|
||||
font-weight: 500;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
@@ -265,6 +277,12 @@
|
||||
font-size: 14px;
|
||||
line-height: 18px;
|
||||
color: $ui-secondary-color;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.account-card {
|
||||
|
@@ -265,192 +265,286 @@
|
||||
|
||||
.compose-form {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.compose-form__warning {
|
||||
color: darken($ui-secondary-color, 65%);
|
||||
margin-bottom: 15px;
|
||||
background: $ui-primary-color;
|
||||
box-shadow: 0 2px 6px rgba($base-shadow-color, 0.3);
|
||||
padding: 8px 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
|
||||
strong {
|
||||
.compose-form__warning {
|
||||
color: darken($ui-secondary-color, 65%);
|
||||
font-weight: 500;
|
||||
}
|
||||
margin-bottom: 15px;
|
||||
background: $ui-primary-color;
|
||||
box-shadow: 0 2px 6px rgba($base-shadow-color, 0.3);
|
||||
padding: 8px 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
|
||||
a {
|
||||
color: darken($ui-primary-color, 33%);
|
||||
font-weight: 500;
|
||||
text-decoration: underline;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__modifiers {
|
||||
color: $ui-base-color;
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
background: $simple-background-color;
|
||||
border-radius: 0 0 4px;
|
||||
}
|
||||
|
||||
.compose-form__buttons-wrapper {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.compose-form__buttons {
|
||||
padding: 10px;
|
||||
background: darken($simple-background-color, 8%);
|
||||
box-shadow: inset 0 5px 5px rgba($base-shadow-color, 0.05);
|
||||
border-radius: 0 0 4px 4px;
|
||||
display: flex;
|
||||
|
||||
.icon-button {
|
||||
box-sizing: content-box;
|
||||
padding: 0 3px;
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__upload-button-icon {
|
||||
line-height: 27px;
|
||||
}
|
||||
|
||||
.compose-form__sensitive-button {
|
||||
display: none;
|
||||
|
||||
&.compose-form__sensitive-button--visible {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.compose-form__sensitive-button__icon {
|
||||
line-height: 27px;
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__upload-wrapper {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.compose-form__uploads-wrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
padding: 5px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.compose-form__upload {
|
||||
flex: 1 1 0;
|
||||
min-width: 40%;
|
||||
margin: 5px;
|
||||
|
||||
&-description {
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
box-sizing: border-box;
|
||||
background: linear-gradient(0deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent);
|
||||
padding: 10px;
|
||||
opacity: 0;
|
||||
transition: opacity .1s ease;
|
||||
|
||||
input {
|
||||
background: transparent;
|
||||
color: $ui-secondary-color;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
strong {
|
||||
color: darken($ui-secondary-color, 65%);
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: darken($ui-primary-color, 33%);
|
||||
font-weight: 500;
|
||||
text-decoration: underline;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus {
|
||||
color: $white;
|
||||
}
|
||||
|
||||
&::placeholder {
|
||||
opacity: 0.54;
|
||||
color: $ui-secondary-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
opacity: 1;
|
||||
.compose-form__autosuggest-wrapper {
|
||||
position: relative;
|
||||
|
||||
.emoji-picker-dropdown {
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
top: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.icon-button {
|
||||
mix-blend-mode: difference;
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__upload-thumbnail {
|
||||
border-radius: 4px;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
height: 100px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.compose-form__label {
|
||||
display: block;
|
||||
line-height: 24px;
|
||||
vertical-align: middle;
|
||||
|
||||
&.with-border {
|
||||
border-top: 1px solid $ui-base-color;
|
||||
padding-top: 10px;
|
||||
.autosuggest-textarea,
|
||||
.spoiler-input {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.compose-form__label__text {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 14px;
|
||||
margin-left: 8px;
|
||||
color: $ui-primary-color;
|
||||
.autosuggest-textarea__textarea,
|
||||
.spoiler-input__input {
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
color: $ui-base-color;
|
||||
background: $simple-background-color;
|
||||
padding: 10px;
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
resize: vertical;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
|
||||
&:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__textarea,
|
||||
.follow-form__input {
|
||||
background: $simple-background-color;
|
||||
|
||||
&:disabled {
|
||||
background: $ui-secondary-color;
|
||||
.spoiler-input__input {
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__autosuggest-wrapper {
|
||||
position: relative;
|
||||
.autosuggest-textarea__textarea {
|
||||
min-height: 100px;
|
||||
border-radius: 4px 4px 0 0;
|
||||
padding-bottom: 0;
|
||||
padding-right: 10px + 22px;
|
||||
resize: none;
|
||||
|
||||
.emoji-picker-dropdown {
|
||||
@media screen and (max-width: 600px) {
|
||||
height: 100px !important; // prevent auto-resize textarea
|
||||
resize: vertical;
|
||||
}
|
||||
}
|
||||
|
||||
.autosuggest-textarea__suggestions {
|
||||
box-sizing: border-box;
|
||||
display: none;
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
top: 5px;
|
||||
top: 100%;
|
||||
width: 100%;
|
||||
z-index: 99;
|
||||
box-shadow: 4px 4px 6px rgba($base-shadow-color, 0.4);
|
||||
background: $ui-secondary-color;
|
||||
border-radius: 0 0 4px 4px;
|
||||
color: $ui-base-color;
|
||||
font-size: 14px;
|
||||
padding: 6px;
|
||||
|
||||
&.autosuggest-textarea__suggestions--visible {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__publish {
|
||||
display: flex;
|
||||
min-width: 0;
|
||||
}
|
||||
.autosuggest-textarea__suggestions__item {
|
||||
padding: 10px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
|
||||
.compose-form__publish-button-wrapper {
|
||||
overflow: hidden;
|
||||
padding-top: 10px;
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active,
|
||||
&.selected {
|
||||
background: darken($ui-secondary-color, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
.autosuggest-account,
|
||||
.autosuggest-emoji {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
line-height: 18px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.autosuggest-account-icon,
|
||||
.autosuggest-emoji img {
|
||||
display: block;
|
||||
margin-right: 8px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.autosuggest-account .display-name__account {
|
||||
color: lighten($ui-base-color, 36%);
|
||||
}
|
||||
|
||||
.compose-form__modifiers {
|
||||
color: $ui-base-color;
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
background: $simple-background-color;
|
||||
|
||||
.compose-form__upload-wrapper {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.compose-form__uploads-wrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
padding: 5px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.compose-form__upload {
|
||||
flex: 1 1 0;
|
||||
min-width: 40%;
|
||||
margin: 5px;
|
||||
|
||||
&-description {
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
box-sizing: border-box;
|
||||
background: linear-gradient(0deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent);
|
||||
padding: 10px;
|
||||
opacity: 0;
|
||||
transition: opacity .1s ease;
|
||||
|
||||
input {
|
||||
background: transparent;
|
||||
color: $ui-secondary-color;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
|
||||
&:focus {
|
||||
color: $white;
|
||||
}
|
||||
|
||||
&::placeholder {
|
||||
opacity: 0.54;
|
||||
color: $ui-secondary-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.icon-button {
|
||||
mix-blend-mode: difference;
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__upload-thumbnail {
|
||||
border-radius: 4px;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
height: 100px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__buttons-wrapper {
|
||||
padding: 10px;
|
||||
background: darken($simple-background-color, 8%);
|
||||
border-radius: 0 0 4px 4px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.compose-form__buttons {
|
||||
display: flex;
|
||||
|
||||
.compose-form__upload-button-icon {
|
||||
line-height: 27px;
|
||||
}
|
||||
|
||||
.compose-form__sensitive-button {
|
||||
display: none;
|
||||
|
||||
&.compose-form__sensitive-button--visible {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.compose-form__sensitive-button__icon {
|
||||
line-height: 27px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.icon-button {
|
||||
box-sizing: content-box;
|
||||
padding: 0 3px;
|
||||
}
|
||||
|
||||
.character-counter__wrapper {
|
||||
align-self: center;
|
||||
margin-right: 4px;
|
||||
|
||||
.character-counter {
|
||||
cursor: default;
|
||||
font-family: 'mastodon-font-sans-serif', sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: lighten($ui-base-color, 12%);
|
||||
|
||||
&.character-counter--over {
|
||||
color: $warning-red;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.compose-form__publish {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
min-width: 0;
|
||||
|
||||
.compose-form__publish-button-wrapper {
|
||||
overflow: hidden;
|
||||
padding-top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.emojione {
|
||||
@@ -512,6 +606,11 @@
|
||||
font-weight: 400;
|
||||
overflow: hidden;
|
||||
white-space: pre-wrap;
|
||||
padding-top: 2px;
|
||||
|
||||
&:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
&.status__content--with-spoiler {
|
||||
white-space: normal;
|
||||
@@ -606,6 +705,10 @@
|
||||
|
||||
.status.status-direct {
|
||||
background: lighten($ui-base-color, 12%);
|
||||
|
||||
&.muted {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.detailed-status,
|
||||
@@ -760,7 +863,7 @@
|
||||
.status__action-bar {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
margin-top: 10px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.status__action-bar-button {
|
||||
@@ -793,7 +896,7 @@
|
||||
.emojione {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: -3px 0 0;
|
||||
margin: -1px 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -959,6 +1062,12 @@
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
@@ -1060,6 +1169,12 @@
|
||||
font-size: 15px;
|
||||
font-weight: 500;
|
||||
color: $primary-text-color;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
abbr {
|
||||
@@ -1951,121 +2066,6 @@
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.autosuggest-textarea,
|
||||
.spoiler-input {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.autosuggest-textarea__textarea,
|
||||
.spoiler-input__input {
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
color: $ui-base-color;
|
||||
background: $simple-background-color;
|
||||
padding: 10px;
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
resize: vertical;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
|
||||
&:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.spoiler-input__input {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.autosuggest-textarea__textarea {
|
||||
min-height: 100px;
|
||||
border-radius: 4px 4px 0 0;
|
||||
padding-bottom: 0;
|
||||
padding-right: 10px + 22px;
|
||||
resize: none;
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
height: 100px !important; // prevent auto-resize textarea
|
||||
resize: vertical;
|
||||
}
|
||||
}
|
||||
|
||||
.autosuggest-textarea__suggestions {
|
||||
box-sizing: border-box;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
width: 100%;
|
||||
z-index: 99;
|
||||
box-shadow: 4px 4px 6px rgba($base-shadow-color, 0.4);
|
||||
background: $ui-secondary-color;
|
||||
border-radius: 0 0 4px 4px;
|
||||
color: $ui-base-color;
|
||||
font-size: 14px;
|
||||
padding: 6px;
|
||||
|
||||
&.autosuggest-textarea__suggestions--visible {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.autosuggest-textarea__suggestions__item {
|
||||
padding: 10px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active,
|
||||
&.selected {
|
||||
background: darken($ui-secondary-color, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
.autosuggest-account,
|
||||
.autosuggest-emoji {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
line-height: 18px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.autosuggest-account-icon,
|
||||
.autosuggest-emoji img {
|
||||
display: block;
|
||||
margin-right: 8px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.autosuggest-account .display-name__account {
|
||||
color: lighten($ui-base-color, 36%);
|
||||
}
|
||||
|
||||
.character-counter__wrapper {
|
||||
line-height: 36px;
|
||||
margin: 0 16px 0 8px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.character-counter {
|
||||
cursor: default;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.character-counter--over {
|
||||
color: $warning-red;
|
||||
}
|
||||
|
||||
.getting-started__wrapper {
|
||||
position: relative;
|
||||
overflow-y: auto;
|
||||
@@ -2251,14 +2251,19 @@ button.icon-button.active i.fa-retweet {
|
||||
.status-card__image-image {
|
||||
border-radius: 4px 4px 0 0;
|
||||
}
|
||||
|
||||
.status-card__title {
|
||||
white-space: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
.status-card__image-image {
|
||||
border-radius: 4px 0 0 4px;
|
||||
display: block;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.load-more {
|
||||
@@ -2980,6 +2985,12 @@ button.icon-button.active i.fa-retweet {
|
||||
font-weight: 500;
|
||||
display: block;
|
||||
color: $ui-base-color;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3414,6 +3425,12 @@ button.icon-button.active i.fa-retweet {
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
padding: 3px 6px;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3744,6 +3761,12 @@ button.icon-button.active i.fa-retweet {
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3958,6 +3981,7 @@ button.icon-button.active i.fa-retweet {
|
||||
position: relative;
|
||||
background: $base-shadow-color;
|
||||
max-width: 100%;
|
||||
border-radius: 4px;
|
||||
|
||||
video {
|
||||
height: 100%;
|
||||
@@ -3992,8 +4016,8 @@ button.icon-button.active i.fa-retweet {
|
||||
left: 0;
|
||||
right: 0;
|
||||
box-sizing: border-box;
|
||||
background: linear-gradient(0deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 60%, transparent);
|
||||
padding: 0 10px;
|
||||
background: linear-gradient(0deg, rgba($base-shadow-color, 0.85) 0, rgba($base-shadow-color, 0.45) 60%, transparent);
|
||||
padding: 0 15px;
|
||||
opacity: 0;
|
||||
transition: opacity .1s ease;
|
||||
|
||||
@@ -4046,40 +4070,67 @@ button.icon-button.active i.fa-retweet {
|
||||
}
|
||||
}
|
||||
|
||||
&__buttons {
|
||||
&__buttons-bar {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
&__buttons {
|
||||
font-size: 16px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
&.left {
|
||||
float: left;
|
||||
|
||||
button {
|
||||
padding-right: 10px;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.right {
|
||||
float: right;
|
||||
|
||||
button {
|
||||
padding-left: 10px;
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
padding: 2px 10px;
|
||||
font-size: 16px;
|
||||
border: 0;
|
||||
color: $white;
|
||||
color: rgba($white, 0.75);
|
||||
|
||||
&:active,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $ui-highlight-color;
|
||||
color: $white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__time-sep,
|
||||
&__time-total,
|
||||
&__time-current {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
&__time-current {
|
||||
color: $white;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
&__time-sep {
|
||||
display: inline-block;
|
||||
margin: 0 6px;
|
||||
}
|
||||
|
||||
&__time-sep,
|
||||
&__time-total {
|
||||
color: $white;
|
||||
}
|
||||
|
||||
&__seek {
|
||||
cursor: pointer;
|
||||
height: 24px;
|
||||
@@ -4089,6 +4140,7 @@ button.icon-button.active i.fa-retweet {
|
||||
content: "";
|
||||
width: 100%;
|
||||
background: rgba($white, 0.35);
|
||||
border-radius: 4px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
height: 4px;
|
||||
@@ -4100,8 +4152,9 @@ button.icon-button.active i.fa-retweet {
|
||||
display: block;
|
||||
position: absolute;
|
||||
height: 4px;
|
||||
border-radius: 4px;
|
||||
top: 10px;
|
||||
background: $ui-highlight-color;
|
||||
background: lighten($ui-highlight-color, 8%);
|
||||
}
|
||||
|
||||
&__buffer {
|
||||
@@ -4118,7 +4171,8 @@ button.icon-button.active i.fa-retweet {
|
||||
top: 6px;
|
||||
margin-left: -6px;
|
||||
transition: opacity .1s ease;
|
||||
background: $ui-highlight-color;
|
||||
background: lighten($ui-highlight-color, 8%);
|
||||
box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2);
|
||||
pointer-events: none;
|
||||
|
||||
&.active {
|
||||
@@ -4132,6 +4186,16 @@ button.icon-button.active i.fa-retweet {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.detailed,
|
||||
&.fullscreen {
|
||||
.video-player__buttons {
|
||||
button {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.media-spoiler-video {
|
||||
|
@@ -56,6 +56,12 @@ code {
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.label_input {
|
||||
@@ -395,6 +401,12 @@ code {
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 740px) and (min-width: 441px) {
|
||||
@@ -430,6 +442,12 @@ code {
|
||||
strong {
|
||||
color: $ui-secondary-color;
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 740px) and (min-width: 441px) {
|
||||
@@ -474,6 +492,12 @@ code {
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -506,6 +530,12 @@ code {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
|
||||
.fa {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
@@ -12,6 +12,12 @@
|
||||
strong,
|
||||
a {
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
@@ -46,6 +52,12 @@
|
||||
strong,
|
||||
a {
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
|
@@ -7,9 +7,9 @@ body.rtl {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.character-counter__wrapper {
|
||||
margin-right: 8px;
|
||||
margin-left: 16px;
|
||||
.compose-form .compose-form__buttons-wrapper .character-counter__wrapper {
|
||||
margin-right: 0;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.navigation-bar__profile {
|
||||
@@ -30,6 +30,22 @@ body.rtl {
|
||||
.column-header__buttons {
|
||||
left: 0;
|
||||
right: auto;
|
||||
margin-left: -15px;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.column-inline-form .icon-button {
|
||||
margin-left: 0;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.column-header__links .text-btn {
|
||||
margin-left: 10px;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.account__avatar-wrapper {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.column-header__back-button {
|
||||
@@ -41,10 +57,6 @@ body.rtl {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.compose-form__modifiers {
|
||||
border-radius: 0 0 0 4px;
|
||||
}
|
||||
|
||||
.setting-toggle {
|
||||
margin-left: 0;
|
||||
margin-right: 8px;
|
||||
|
@@ -119,6 +119,12 @@
|
||||
strong {
|
||||
font-weight: 500;
|
||||
color: $ui-base-color;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
@@ -170,6 +176,12 @@
|
||||
strong {
|
||||
font-weight: 500;
|
||||
color: $ui-base-color;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
|
@@ -40,6 +40,12 @@
|
||||
|
||||
strong {
|
||||
font-weight: 500;
|
||||
|
||||
@each $lang in $cjk-langs {
|
||||
&:lang(#{$lang}) {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.inline-table > tbody > tr:nth-child(odd) > td,
|
||||
|
@@ -27,3 +27,6 @@ $ui-base-lighter-color: lighten($ui-base-color, 26%) !default; // Lighter darkes
|
||||
$ui-primary-color: $classic-primary-color !default; // Lighter
|
||||
$ui-secondary-color: $classic-secondary-color !default; // Lightest
|
||||
$ui-highlight-color: $classic-highlight-color !default; // Vibrant
|
||||
|
||||
// Language codes that uses CJK fonts
|
||||
$cjk-langs: ja, ko, zh-CN, zh-HK, zh-TW;
|
||||
|
@@ -20,11 +20,13 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
||||
private
|
||||
|
||||
def process_status
|
||||
media_attachments = process_attachments
|
||||
|
||||
ApplicationRecord.transaction do
|
||||
@status = Status.create!(status_params)
|
||||
|
||||
process_tags(@status)
|
||||
process_attachments(@status)
|
||||
attach_media(@status, media_attachments)
|
||||
end
|
||||
|
||||
resolve_thread(@status)
|
||||
@@ -105,22 +107,36 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
||||
emoji.save
|
||||
end
|
||||
|
||||
def process_attachments(status)
|
||||
def process_attachments
|
||||
return if @object['attachment'].nil?
|
||||
|
||||
media_attachments = []
|
||||
|
||||
as_array(@object['attachment']).each do |attachment|
|
||||
next if unsupported_media_type?(attachment['mediaType']) || attachment['url'].blank?
|
||||
|
||||
href = Addressable::URI.parse(attachment['url']).normalize.to_s
|
||||
media_attachment = MediaAttachment.create(status: status, account: status.account, remote_url: href, description: attachment['name'].presence)
|
||||
media_attachment = MediaAttachment.create(account: @account, remote_url: href, description: attachment['name'].presence)
|
||||
media_attachments << media_attachment
|
||||
|
||||
next if skip_download?
|
||||
|
||||
media_attachment.file_remote_url = href
|
||||
media_attachment.save
|
||||
end
|
||||
|
||||
media_attachments
|
||||
rescue Addressable::URI::InvalidURIError => e
|
||||
Rails.logger.debug e
|
||||
|
||||
media_attachments
|
||||
end
|
||||
|
||||
def attach_media(status, media_attachments)
|
||||
return if media_attachments.blank?
|
||||
|
||||
media = MediaAttachment.where(status_id: nil, id: media_attachments.take(4).map(&:id))
|
||||
media.update(status_id: status.id)
|
||||
end
|
||||
|
||||
def resolve_thread(status)
|
||||
|
@@ -26,6 +26,8 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
|
||||
cached_reblog = reblog
|
||||
status = nil
|
||||
|
||||
media_attachments = save_media
|
||||
|
||||
ApplicationRecord.transaction do
|
||||
status = Status.create!(
|
||||
uri: id,
|
||||
@@ -44,7 +46,7 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
|
||||
|
||||
save_mentions(status)
|
||||
save_hashtags(status)
|
||||
save_media(status)
|
||||
attach_media(status, media_attachments)
|
||||
save_emojis(status)
|
||||
end
|
||||
|
||||
@@ -126,18 +128,20 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
|
||||
ProcessHashtagsService.new.call(parent, tags)
|
||||
end
|
||||
|
||||
def save_media(parent)
|
||||
do_not_download = DomainBlock.find_by(domain: parent.account.domain)&.reject_media?
|
||||
def save_media
|
||||
do_not_download = DomainBlock.find_by(domain: @account.domain)&.reject_media?
|
||||
media_attachments = []
|
||||
|
||||
@xml.xpath('./xmlns:link[@rel="enclosure"]', xmlns: OStatus::TagManager::XMLNS).each do |link|
|
||||
next unless link['href']
|
||||
|
||||
media = MediaAttachment.where(status: parent, remote_url: link['href']).first_or_initialize(account: parent.account, status: parent, remote_url: link['href'])
|
||||
media = MediaAttachment.where(status: nil, remote_url: link['href']).first_or_initialize(account: @account, status: nil, remote_url: link['href'])
|
||||
parsed_url = Addressable::URI.parse(link['href']).normalize
|
||||
|
||||
next if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.empty?
|
||||
|
||||
media.save
|
||||
media_attachments << media
|
||||
|
||||
next if do_not_download
|
||||
|
||||
@@ -148,6 +152,15 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
|
||||
next
|
||||
end
|
||||
end
|
||||
|
||||
media_attachments
|
||||
end
|
||||
|
||||
def attach_media(parent, media_attachments)
|
||||
return if media_attachments.blank?
|
||||
|
||||
media = MediaAttachment.where(status_id: nil, id: media_attachments.take(4).map(&:id))
|
||||
media.update(status_id: parent.id)
|
||||
end
|
||||
|
||||
def save_emojis(parent)
|
||||
|
@@ -2,13 +2,26 @@
|
||||
|
||||
class ProviderDiscovery < OEmbed::ProviderDiscovery
|
||||
class << self
|
||||
def get(url, **options)
|
||||
provider = discover_provider(url, options)
|
||||
|
||||
options.delete(:html)
|
||||
|
||||
provider.get(url, options)
|
||||
end
|
||||
|
||||
def discover_provider(url, **options)
|
||||
res = Request.new(:get, url).perform
|
||||
format = options[:format]
|
||||
|
||||
raise OEmbed::NotFound, url if res.code != 200 || res.mime_type != 'text/html'
|
||||
if options[:html]
|
||||
html = Nokogiri::HTML(options[:html])
|
||||
else
|
||||
res = Request.new(:get, url).perform
|
||||
|
||||
html = Nokogiri::HTML(res.to_s)
|
||||
raise OEmbed::NotFound, url if res.code != 200 || res.mime_type != 'text/html'
|
||||
|
||||
html = Nokogiri::HTML(res.to_s)
|
||||
end
|
||||
|
||||
if format.nil? || format == :json
|
||||
provider_endpoint ||= html.at_xpath('//link[@type="application/json+oembed"]')&.attribute('href')&.value
|
||||
|
@@ -35,7 +35,7 @@ class StatusFilter
|
||||
end
|
||||
|
||||
def silenced_account?
|
||||
status_account_silenced? && !account_following_status_account?
|
||||
!account&.silenced? && status_account_silenced? && !account_following_status_account?
|
||||
end
|
||||
|
||||
def status_account_silenced?
|
||||
|
@@ -285,6 +285,7 @@ class Account < ApplicationRecord
|
||||
FROM accounts
|
||||
WHERE #{query} @@ #{textsearch}
|
||||
AND accounts.suspended = false
|
||||
AND accounts.moved_to_account_id IS NULL
|
||||
ORDER BY rank DESC
|
||||
LIMIT ?
|
||||
SQL
|
||||
@@ -310,6 +311,7 @@ class Account < ApplicationRecord
|
||||
WHERE accounts.id IN (SELECT * FROM first_degree)
|
||||
AND #{query} @@ #{textsearch}
|
||||
AND accounts.suspended = false
|
||||
AND accounts.moved_to_account_id IS NULL
|
||||
GROUP BY accounts.id
|
||||
ORDER BY rank DESC
|
||||
LIMIT ?
|
||||
@@ -325,6 +327,7 @@ class Account < ApplicationRecord
|
||||
LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = ?) OR (accounts.id = f.target_account_id AND f.account_id = ?)
|
||||
WHERE #{query} @@ #{textsearch}
|
||||
AND accounts.suspended = false
|
||||
AND accounts.moved_to_account_id IS NULL
|
||||
GROUP BY accounts.id
|
||||
ORDER BY rank DESC
|
||||
LIMIT ?
|
||||
|
@@ -45,6 +45,8 @@ class AccountFilter
|
||||
else
|
||||
Account.default_scoped
|
||||
end
|
||||
when 'staff'
|
||||
accounts_with_users.merge User.staff
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
end
|
||||
|
@@ -27,6 +27,8 @@ class CustomEmojiFilter
|
||||
CustomEmoji.remote
|
||||
when 'by_domain'
|
||||
CustomEmoji.where(domain: value)
|
||||
when 'shortcode'
|
||||
CustomEmoji.where(shortcode: value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
end
|
||||
|
@@ -4,7 +4,7 @@
|
||||
# Table name: lists
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# account_id :integer
|
||||
# account_id :integer not null
|
||||
# title :string default(""), not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
@@ -13,6 +13,8 @@
|
||||
class List < ApplicationRecord
|
||||
include Paginable
|
||||
|
||||
PER_ACCOUNT_LIMIT = 50
|
||||
|
||||
belongs_to :account
|
||||
|
||||
has_many :list_accounts, inverse_of: :list, dependent: :destroy
|
||||
@@ -20,6 +22,10 @@ class List < ApplicationRecord
|
||||
|
||||
validates :title, presence: true
|
||||
|
||||
validates_each :account_id, on: :create do |record, _attr, value|
|
||||
record.errors.add(:base, I18n.t('lists.errors.limit')) if List.where(account_id: value).count >= PER_ACCOUNT_LIMIT
|
||||
end
|
||||
|
||||
before_destroy :clean_feed_manager
|
||||
|
||||
private
|
||||
|
@@ -21,6 +21,7 @@
|
||||
# height :integer default(0), not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# embed_url :string default(""), not null
|
||||
#
|
||||
|
||||
class PreviewCard < ApplicationRecord
|
||||
@@ -32,7 +33,7 @@ class PreviewCard < ApplicationRecord
|
||||
|
||||
has_and_belongs_to_many :statuses
|
||||
|
||||
has_attached_file :image, styles: { original: '280x280>' }, convert_options: { all: '-quality 80 -strip' }
|
||||
has_attached_file :image, styles: { original: '400x400>' }, convert_options: { all: '-quality 80 -strip' }
|
||||
|
||||
include Attachmentable
|
||||
include Remotable
|
||||
|
@@ -14,16 +14,6 @@
|
||||
# web_push_subscription_id :integer
|
||||
#
|
||||
|
||||
# id :bigint not null, primary key
|
||||
# user_id :bigint not null
|
||||
# session_id :string not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# user_agent :string default(""), not null
|
||||
# ip :inet
|
||||
# access_token_id :bigint
|
||||
#
|
||||
|
||||
class SessionActivation < ApplicationRecord
|
||||
belongs_to :user, inverse_of: :session_activations, required: true
|
||||
belongs_to :access_token, class_name: 'Doorkeeper::AccessToken', dependent: :destroy
|
||||
|
@@ -23,7 +23,7 @@ class Tag < ApplicationRecord
|
||||
|
||||
class << self
|
||||
def search_for(term, limit = 5)
|
||||
pattern = sanitize_sql_like(term) + '%'
|
||||
pattern = sanitize_sql_like(term.strip) + '%'
|
||||
Tag.where('lower(name) like lower(?)', pattern).order(:name).limit(limit)
|
||||
end
|
||||
end
|
||||
|
@@ -7,9 +7,7 @@ class REST::AccountSerializer < ActiveModel::Serializer
|
||||
:note, :url, :avatar, :avatar_static, :header, :header_static,
|
||||
:followers_count, :following_count, :statuses_count
|
||||
|
||||
has_one :moved_to_account, key: :moved, serializer: REST::AccountSerializer, if: :moved?
|
||||
|
||||
delegate :moved?, to: :object
|
||||
has_one :moved_to_account, key: :moved, serializer: REST::AccountSerializer, if: :moved_and_not_nested?
|
||||
|
||||
def id
|
||||
object.id.to_s
|
||||
@@ -38,4 +36,8 @@ class REST::AccountSerializer < ActiveModel::Serializer
|
||||
def header_static
|
||||
full_asset_url(object.header_static_url)
|
||||
end
|
||||
|
||||
def moved_and_not_nested?
|
||||
object.moved? && object.moved_to_account.moved_to_account_id.nil?
|
||||
end
|
||||
end
|
||||
|
@@ -6,7 +6,7 @@ class REST::PreviewCardSerializer < ActiveModel::Serializer
|
||||
attributes :url, :title, :description, :type,
|
||||
:author_name, :author_url, :provider_name,
|
||||
:provider_url, :html, :width, :height,
|
||||
:image
|
||||
:image, :embed_url
|
||||
|
||||
def image
|
||||
object.image? ? full_asset_url(object.image.url(:original)) : nil
|
||||
|
@@ -4,7 +4,7 @@ class AccountSearchService < BaseService
|
||||
attr_reader :query, :limit, :options, :account
|
||||
|
||||
def call(query, limit, account = nil, options = {})
|
||||
@query = query
|
||||
@query = query.strip
|
||||
@limit = limit
|
||||
@options = options
|
||||
@account = account
|
||||
|
@@ -38,7 +38,13 @@ class FetchLinkCardService < BaseService
|
||||
@card ||= PreviewCard.new(url: @url)
|
||||
res = Request.new(:head, @url).perform
|
||||
|
||||
return if res.code != 200 || res.mime_type != 'text/html'
|
||||
return if res.code != 405 && (res.code != 200 || res.mime_type != 'text/html')
|
||||
|
||||
@response = Request.new(:get, @url).perform
|
||||
|
||||
return if @response.code != 200 || @response.mime_type != 'text/html'
|
||||
|
||||
@html = @response.to_s
|
||||
|
||||
attempt_oembed || attempt_opengraph
|
||||
end
|
||||
@@ -70,33 +76,32 @@ class FetchLinkCardService < BaseService
|
||||
end
|
||||
|
||||
def attempt_oembed
|
||||
response = OEmbed::Providers.get(@url)
|
||||
embed = OEmbed::Providers.get(@url, html: @html)
|
||||
|
||||
return false unless response.respond_to?(:type)
|
||||
return false unless embed.respond_to?(:type)
|
||||
|
||||
# The photo will change the URL. So, to avoid duplication of URLs, PreviewCard needs to be checked again.
|
||||
@card = PreviewCard.find_by(url: response.url) || @card if response.type == 'photo'
|
||||
|
||||
@card.type = response.type
|
||||
@card.title = response.respond_to?(:title) ? response.title : ''
|
||||
@card.author_name = response.respond_to?(:author_name) ? response.author_name : ''
|
||||
@card.author_url = response.respond_to?(:author_url) ? response.author_url : ''
|
||||
@card.provider_name = response.respond_to?(:provider_name) ? response.provider_name : ''
|
||||
@card.provider_url = response.respond_to?(:provider_url) ? response.provider_url : ''
|
||||
@card.type = embed.type
|
||||
@card.title = embed.respond_to?(:title) ? embed.title : ''
|
||||
@card.author_name = embed.respond_to?(:author_name) ? embed.author_name : ''
|
||||
@card.author_url = embed.respond_to?(:author_url) ? embed.author_url : ''
|
||||
@card.provider_name = embed.respond_to?(:provider_name) ? embed.provider_name : ''
|
||||
@card.provider_url = embed.respond_to?(:provider_url) ? embed.provider_url : ''
|
||||
@card.width = 0
|
||||
@card.height = 0
|
||||
|
||||
case @card.type
|
||||
when 'link'
|
||||
@card.image = URI.parse(response.thumbnail_url) if response.respond_to?(:thumbnail_url)
|
||||
@card.image = URI.parse(embed.thumbnail_url) if embed.respond_to?(:thumbnail_url)
|
||||
when 'photo'
|
||||
@card.url = response.url
|
||||
@card.width = response.width.presence || 0
|
||||
@card.height = response.height.presence || 0
|
||||
return false unless embed.respond_to?(:url)
|
||||
@card.embed_url = embed.url
|
||||
@card.image = URI.parse(embed.url)
|
||||
@card.width = embed.width.presence || 0
|
||||
@card.height = embed.height.presence || 0
|
||||
when 'video'
|
||||
@card.width = response.width.presence || 0
|
||||
@card.height = response.height.presence || 0
|
||||
@card.html = Formatter.instance.sanitize(response.html, Sanitize::Config::MASTODON_OEMBED)
|
||||
@card.width = embed.width.presence || 0
|
||||
@card.height = embed.height.presence || 0
|
||||
@card.html = Formatter.instance.sanitize(embed.html, Sanitize::Config::MASTODON_OEMBED)
|
||||
when 'rich'
|
||||
# Most providers rely on <script> tags, which is a no-no
|
||||
return false
|
||||
@@ -108,17 +113,11 @@ class FetchLinkCardService < BaseService
|
||||
end
|
||||
|
||||
def attempt_opengraph
|
||||
response = Request.new(:get, @url).perform
|
||||
|
||||
return if response.code != 200 || response.mime_type != 'text/html'
|
||||
|
||||
html = response.to_s
|
||||
|
||||
detector = CharlockHolmes::EncodingDetector.new
|
||||
detector.strip_tags = true
|
||||
|
||||
guess = detector.detect(html, response.charset)
|
||||
page = Nokogiri::HTML(html, nil, guess&.fetch(:encoding, nil))
|
||||
guess = detector.detect(@html, @response.charset)
|
||||
page = Nokogiri::HTML(@html, nil, guess&.fetch(:encoding, nil))
|
||||
|
||||
if meta_property(page, 'twitter:player')
|
||||
@card.type = :video
|
||||
@@ -135,16 +134,16 @@ class FetchLinkCardService < BaseService
|
||||
@card.image_remote_url = meta_property(page, 'og:image') if meta_property(page, 'og:image')
|
||||
end
|
||||
|
||||
@card.title = meta_property(page, 'og:title').presence || page.at_xpath('//title')&.content || ''
|
||||
@card.description = meta_property(page, 'og:description').presence || meta_property(page, 'description') || ''
|
||||
@card.title = meta_property(page, 'og:title').presence || page.at_xpath('//title')&.content || ''
|
||||
@card.description = meta_property(page, 'og:description').presence || meta_property(page, 'description') || ''
|
||||
|
||||
return if @card.title.blank? && @card.html.blank?
|
||||
|
||||
@card.save_with_optional_image!
|
||||
end
|
||||
|
||||
def meta_property(html, property)
|
||||
html.at_xpath("//meta[@property=\"#{property}\"]")&.attribute('content')&.value || html.at_xpath("//meta[@name=\"#{property}\"]")&.attribute('content')&.value
|
||||
def meta_property(page, property)
|
||||
page.at_xpath("//meta[@property=\"#{property}\"]")&.attribute('content')&.value || page.at_xpath("//meta[@name=\"#{property}\"]")&.attribute('content')&.value
|
||||
end
|
||||
|
||||
def lock_options
|
||||
|
@@ -40,6 +40,6 @@ class FetchRemoteStatusService < BaseService
|
||||
end
|
||||
|
||||
def confirmed_domain?(domain, account)
|
||||
account.domain.nil? || domain.casecmp(account.domain).zero? || domain.casecmp(Addressable::URI.parse(account.remote_url || account.uri).normalized_host).zero?
|
||||
account.domain.nil? || domain.casecmp(account.domain).zero? || domain.casecmp(Addressable::URI.parse(account.remote_url.presence || account.uri).normalized_host).zero?
|
||||
end
|
||||
end
|
||||
|
@@ -22,7 +22,7 @@ class FollowService < BaseService
|
||||
elsif source_account.requested?(target_account)
|
||||
# This isn't managed by a method in AccountInteractions, so we modify it
|
||||
# ourselves if necessary.
|
||||
req = follow_requests.find_by(target_account: other_account)
|
||||
req = source_account.follow_requests.find_by(target_account: target_account)
|
||||
req.update!(show_reblogs: reblogs)
|
||||
return
|
||||
end
|
||||
|
@@ -44,7 +44,7 @@ class ResolveRemoteAccountService < BaseService
|
||||
if lock.acquired?
|
||||
@account = Account.find_remote(@username, @domain)
|
||||
|
||||
if activitypub_ready?
|
||||
if activitypub_ready? || @account&.activitypub?
|
||||
handle_activitypub
|
||||
else
|
||||
handle_ostatus
|
||||
|
@@ -2,9 +2,9 @@
|
||||
|
||||
class StatusPinValidator < ActiveModel::Validator
|
||||
def validate(pin)
|
||||
pin.errors.add(:status, I18n.t('statuses.pin_errors.reblog')) if pin.status.reblog?
|
||||
pin.errors.add(:status, I18n.t('statuses.pin_errors.ownership')) if pin.account_id != pin.status.account_id
|
||||
pin.errors.add(:status, I18n.t('statuses.pin_errors.private')) unless %w(public unlisted).include?(pin.status.visibility)
|
||||
pin.errors.add(:status, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count > 4
|
||||
pin.errors.add(:base, I18n.t('statuses.pin_errors.reblog')) if pin.status.reblog?
|
||||
pin.errors.add(:base, I18n.t('statuses.pin_errors.ownership')) if pin.account_id != pin.status.account_id
|
||||
pin.errors.add(:base, I18n.t('statuses.pin_errors.private')) unless %w(public unlisted).include?(pin.status.visibility)
|
||||
pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count > 4
|
||||
end
|
||||
end
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user