mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-16 09:18:46 +00:00
Compare commits
76 Commits
tweak-491
...
199-add-re
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
083f78b8fb | ||
|
|
f1bfcb50f0 | ||
|
|
5cff053944 | ||
|
|
f6bb50b6ec | ||
|
|
99b2bc2668 | ||
|
|
fac6e392e9 | ||
|
|
908a770d2b | ||
|
|
e931cf656d | ||
|
|
4d8d1fa129 | ||
|
|
6151308c47 | ||
|
|
0979d4275a | ||
|
|
7e27a3c225 | ||
|
|
01ee460ceb | ||
|
|
a99179d31f | ||
|
|
268d90e810 | ||
|
|
35ae960122 | ||
|
|
6310dd233a | ||
|
|
7086aa598b | ||
|
|
10f51c9886 | ||
|
|
91e5d9f8af | ||
|
|
3df8c40508 | ||
|
|
17dc07f667 | ||
|
|
a043f8d277 | ||
|
|
34f1fd2a62 | ||
|
|
7d3c0e4cb4 | ||
|
|
f9eb4ea80a | ||
|
|
fc132915ec | ||
|
|
18e1de6a16 | ||
|
|
85470ec872 | ||
|
|
a9515f3186 | ||
|
|
6671297e7a | ||
|
|
6ba7d9d0d9 | ||
|
|
9b9e96eae5 | ||
|
|
0c3ce41031 | ||
|
|
8142bd2553 | ||
|
|
f8d50a4070 | ||
|
|
2304d52599 | ||
|
|
158cd7ee74 | ||
|
|
59b42188a7 | ||
|
|
683707839f | ||
|
|
c75493755f | ||
|
|
b7b331ad0d | ||
|
|
68373e799b | ||
|
|
12fa2500c4 | ||
|
|
d8b4f39007 | ||
|
|
aa177bdca7 | ||
|
|
fab65fb7e5 | ||
|
|
a640c322c1 | ||
|
|
bd0791d800 | ||
|
|
f009fef40b | ||
|
|
5fb013878f | ||
|
|
dc73241bd9 | ||
|
|
1637d24af4 | ||
|
|
e3fb528d12 | ||
|
|
e0354aba7c | ||
|
|
bb0edbd988 | ||
|
|
64d7a63f18 | ||
|
|
c0fc4e9935 | ||
|
|
97d2df77aa | ||
|
|
cf28049f0a | ||
|
|
a40e322f4b | ||
|
|
26573ad7e6 | ||
|
|
1bbe81030c | ||
|
|
5bf5003384 | ||
|
|
73923ea6c4 | ||
|
|
c7405fda11 | ||
|
|
e18390cfe6 | ||
|
|
22caa32ba2 | ||
|
|
6b2f4f8c09 | ||
|
|
c55263027a | ||
|
|
0deb9fa6b9 | ||
|
|
37d495eeeb | ||
|
|
0f979c3460 | ||
|
|
cc396f085d | ||
|
|
f86d280fd6 | ||
|
|
e8a9627f66 |
@@ -30,6 +30,7 @@ plugins:
|
|||||||
channel: eslint-4
|
channel: eslint-4
|
||||||
rubocop:
|
rubocop:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
channel: rubocop-0-54
|
||||||
scss-lint:
|
scss-lint:
|
||||||
enabled: true
|
enabled: true
|
||||||
exclude_patterns:
|
exclude_patterns:
|
||||||
|
|||||||
@@ -107,5 +107,8 @@ Style/RegexpLiteral:
|
|||||||
Style/SymbolArray:
|
Style/SymbolArray:
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
|
||||||
Style/TrailingCommaInLiteral:
|
Style/TrailingCommaInArrayLiteral:
|
||||||
|
EnforcedStyleForMultiline: 'comma'
|
||||||
|
|
||||||
|
Style/TrailingCommaInHashLiteral:
|
||||||
EnforcedStyleForMultiline: 'comma'
|
EnforcedStyleForMultiline: 'comma'
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ class Api::V1::DomainBlocksController < Api::BaseController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
BlockDomainFromAccountService.new.call(current_account, domain_block_params[:domain])
|
current_account.block_domain!(domain_block_params[:domain])
|
||||||
|
AfterAccountDomainBlockWorker.perform_async(current_account.id, domain_block_params[:domain])
|
||||||
render_empty
|
render_empty
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
class Api::V1::TrendsController < Api::BaseController
|
|
||||||
before_action :set_tags
|
|
||||||
|
|
||||||
respond_to :json
|
|
||||||
|
|
||||||
def index
|
|
||||||
render json: @tags, each_serializer: REST::TagSerializer
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def set_tags
|
|
||||||
@tags = TrendingTags.get(limit_param(10))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class IntentsController < ApplicationController
|
class IntentsController < ApplicationController
|
||||||
def show
|
before_action :check_uri
|
||||||
uri = Addressable::URI.parse(params[:uri])
|
rescue_from Addressable::URI::InvalidURIError, with: :handle_invalid_uri
|
||||||
|
|
||||||
|
def show
|
||||||
if uri.scheme == 'web+mastodon'
|
if uri.scheme == 'web+mastodon'
|
||||||
case uri.host
|
case uri.host
|
||||||
when 'follow'
|
when 'follow'
|
||||||
@@ -15,4 +16,18 @@ class IntentsController < ApplicationController
|
|||||||
|
|
||||||
not_found
|
not_found
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def check_uri
|
||||||
|
not_found if uri.blank?
|
||||||
|
end
|
||||||
|
|
||||||
|
def handle_invalid_uri
|
||||||
|
not_found
|
||||||
|
end
|
||||||
|
|
||||||
|
def uri
|
||||||
|
@uri ||= Addressable::URI.parse(params[:uri])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class Settings::FollowerDomainsController < Settings::BaseController
|
|||||||
def update
|
def update
|
||||||
domains = bulk_params[:select] || []
|
domains = bulk_params[:select] || []
|
||||||
|
|
||||||
SoftBlockDomainFollowersWorker.push_bulk(domains) do |domain|
|
AfterAccountDomainBlockWorker.push_bulk(domains) do |domain|
|
||||||
[current_account.id, domain]
|
[current_account.id, domain]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ class Settings::KeywordMutesController < Settings::BaseController
|
|||||||
@keyword_mute = keyword_mutes_for_account.create(keyword_mute_params)
|
@keyword_mute = keyword_mutes_for_account.create(keyword_mute_params)
|
||||||
|
|
||||||
if @keyword_mute.persisted?
|
if @keyword_mute.persisted?
|
||||||
|
Glitch::ApplyKeywordMutesWorker.perform_async(current_account.id)
|
||||||
redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
|
redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
|
||||||
else
|
else
|
||||||
render :new
|
render :new
|
||||||
@@ -23,6 +24,7 @@ class Settings::KeywordMutesController < Settings::BaseController
|
|||||||
|
|
||||||
def update
|
def update
|
||||||
if @keyword_mute.update(keyword_mute_params)
|
if @keyword_mute.update(keyword_mute_params)
|
||||||
|
Glitch::ApplyKeywordMutesWorker.perform_async(current_account.id)
|
||||||
redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
|
redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
|
||||||
else
|
else
|
||||||
render :edit
|
render :edit
|
||||||
@@ -32,12 +34,14 @@ class Settings::KeywordMutesController < Settings::BaseController
|
|||||||
def destroy
|
def destroy
|
||||||
@keyword_mute.destroy!
|
@keyword_mute.destroy!
|
||||||
|
|
||||||
|
Glitch::ApplyKeywordMutesWorker.perform_async(current_account.id)
|
||||||
redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
|
redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy_all
|
def destroy_all
|
||||||
keyword_mutes_for_account.delete_all
|
keyword_mutes_for_account.delete_all
|
||||||
|
|
||||||
|
Glitch::ApplyKeywordMutesWorker.perform_async(current_account.id)
|
||||||
redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
|
redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg')
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -52,7 +56,7 @@ class Settings::KeywordMutesController < Settings::BaseController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def keyword_mute_params
|
def keyword_mute_params
|
||||||
params.require(:keyword_mute).permit(:keyword, :whole_word)
|
params.require(:keyword_mute).permit(:keyword, :whole_word, :apply_to_mentions)
|
||||||
end
|
end
|
||||||
|
|
||||||
def paginated_keyword_mutes_for_account
|
def paginated_keyword_mutes_for_account
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ export default class ColumnBackButton extends React.PureComponent {
|
|||||||
|
|
||||||
handleClick = () => {
|
handleClick = () => {
|
||||||
// if history is exhausted, or we would leave mastodon, just go to root.
|
// if history is exhausted, or we would leave mastodon, just go to root.
|
||||||
if (window.history && (window.history.length === 1 || window.history.length === window._mastoInitialHistoryLen)) {
|
if (window.history.state) {
|
||||||
this.context.router.history.push('/');
|
|
||||||
} else {
|
|
||||||
this.context.router.history.goBack();
|
this.context.router.history.goBack();
|
||||||
|
} else {
|
||||||
|
this.context.router.history.push('/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ export default class ColumnBackButtonSlim extends React.PureComponent {
|
|||||||
|
|
||||||
handleClick = () => {
|
handleClick = () => {
|
||||||
// if history is exhausted, or we would leave mastodon, just go to root.
|
// if history is exhausted, or we would leave mastodon, just go to root.
|
||||||
if (window.history && (window.history.length === 1 || window.history.length === window._mastoInitialHistoryLen)) {
|
if (window.history.state) {
|
||||||
this.context.router.history.push('/');
|
|
||||||
} else {
|
|
||||||
this.context.router.history.goBack();
|
this.context.router.history.goBack();
|
||||||
|
} else {
|
||||||
|
this.context.router.history.push('/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -66,10 +66,10 @@ export default class ColumnHeader extends React.PureComponent {
|
|||||||
|
|
||||||
handleBackClick = () => {
|
handleBackClick = () => {
|
||||||
// if history is exhausted, or we would leave mastodon, just go to root.
|
// if history is exhausted, or we would leave mastodon, just go to root.
|
||||||
if (window.history && (window.history.length === 1 || window.history.length === window._mastoInitialHistoryLen)) {
|
if (window.history.state) {
|
||||||
this.context.router.history.push('/');
|
|
||||||
} else {
|
|
||||||
this.context.router.history.goBack();
|
this.context.router.history.goBack();
|
||||||
|
} else {
|
||||||
|
this.context.router.history.push('/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ const mapDispatchToProps = (dispatch, { onPickEmoji }) => ({
|
|||||||
const assetHost = process.env.CDN_HOST || '';
|
const assetHost = process.env.CDN_HOST || '';
|
||||||
let EmojiPicker, Emoji; // load asynchronously
|
let EmojiPicker, Emoji; // load asynchronously
|
||||||
|
|
||||||
const backgroundImageFn = () => `${assetHost}/emoji/sheet.png`;
|
const backgroundImageFn = () => `${assetHost}/emoji/sheet_10.png`;
|
||||||
const listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;
|
const listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;
|
||||||
|
|
||||||
const categoriesSort = [
|
const categoriesSort = [
|
||||||
|
|||||||
@@ -99,10 +99,6 @@ const keyMap = {
|
|||||||
@withRouter
|
@withRouter
|
||||||
export default class UI extends React.Component {
|
export default class UI extends React.Component {
|
||||||
|
|
||||||
static contextTypes = {
|
|
||||||
router: PropTypes.object.isRequired,
|
|
||||||
};
|
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
dispatch: PropTypes.func.isRequired,
|
dispatch: PropTypes.func.isRequired,
|
||||||
children: PropTypes.node,
|
children: PropTypes.node,
|
||||||
@@ -113,6 +109,7 @@ export default class UI extends React.Component {
|
|||||||
isComposing: PropTypes.bool,
|
isComposing: PropTypes.bool,
|
||||||
hasComposingText: PropTypes.bool,
|
hasComposingText: PropTypes.bool,
|
||||||
location: PropTypes.object,
|
location: PropTypes.object,
|
||||||
|
router: PropTypes.object,
|
||||||
intl: PropTypes.object.isRequired,
|
intl: PropTypes.object.isRequired,
|
||||||
dropdownMenuIsOpen: PropTypes.bool,
|
dropdownMenuIsOpen: PropTypes.bool,
|
||||||
};
|
};
|
||||||
@@ -200,7 +197,7 @@ export default class UI extends React.Component {
|
|||||||
|
|
||||||
handleServiceWorkerPostMessage = ({ data }) => {
|
handleServiceWorkerPostMessage = ({ data }) => {
|
||||||
if (data.type === 'navigate') {
|
if (data.type === 'navigate') {
|
||||||
this.context.router.history.push(data.path);
|
this.props.router.history.push(data.path);
|
||||||
} else {
|
} else {
|
||||||
console.warn('Unknown message type:', data.type);
|
console.warn('Unknown message type:', data.type);
|
||||||
}
|
}
|
||||||
@@ -305,10 +302,11 @@ export default class UI extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyBack = () => {
|
handleHotkeyBack = () => {
|
||||||
if (window.history && window.history.length === 1) {
|
// if history is exhausted, or we would leave mastodon, just go to root.
|
||||||
this.context.router.history.push('/');
|
if (window.history.state) {
|
||||||
} else {
|
|
||||||
this.context.router.history.goBack();
|
this.context.router.history.goBack();
|
||||||
|
} else {
|
||||||
|
this.context.router.history.push('/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,54 +316,54 @@ export default class UI extends React.Component {
|
|||||||
|
|
||||||
handleHotkeyToggleHelp = () => {
|
handleHotkeyToggleHelp = () => {
|
||||||
if (this.props.location.pathname === '/keyboard-shortcuts') {
|
if (this.props.location.pathname === '/keyboard-shortcuts') {
|
||||||
this.context.router.history.goBack();
|
this.props.router.history.goBack();
|
||||||
} else {
|
} else {
|
||||||
this.context.router.history.push('/keyboard-shortcuts');
|
this.props.router.history.push('/keyboard-shortcuts');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToHome = () => {
|
handleHotkeyGoToHome = () => {
|
||||||
this.context.router.history.push('/timelines/home');
|
this.props.router.history.push('/timelines/home');
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToNotifications = () => {
|
handleHotkeyGoToNotifications = () => {
|
||||||
this.context.router.history.push('/notifications');
|
this.props.router.history.push('/notifications');
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToLocal = () => {
|
handleHotkeyGoToLocal = () => {
|
||||||
this.context.router.history.push('/timelines/public/local');
|
this.props.router.history.push('/timelines/public/local');
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToFederated = () => {
|
handleHotkeyGoToFederated = () => {
|
||||||
this.context.router.history.push('/timelines/public');
|
this.props.router.history.push('/timelines/public');
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToDirect = () => {
|
handleHotkeyGoToDirect = () => {
|
||||||
this.context.router.history.push('/timelines/direct');
|
this.props.router.history.push('/timelines/direct');
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToStart = () => {
|
handleHotkeyGoToStart = () => {
|
||||||
this.context.router.history.push('/getting-started');
|
this.props.router.history.push('/getting-started');
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToFavourites = () => {
|
handleHotkeyGoToFavourites = () => {
|
||||||
this.context.router.history.push('/favourites');
|
this.props.router.history.push('/favourites');
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToPinned = () => {
|
handleHotkeyGoToPinned = () => {
|
||||||
this.context.router.history.push('/pinned');
|
this.props.router.history.push('/pinned');
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToProfile = () => {
|
handleHotkeyGoToProfile = () => {
|
||||||
this.context.router.history.push(`/accounts/${me}`);
|
this.props.router.history.push(`/accounts/${me}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToBlocked = () => {
|
handleHotkeyGoToBlocked = () => {
|
||||||
this.context.router.history.push('/blocks');
|
this.props.router.history.push('/blocks');
|
||||||
}
|
}
|
||||||
|
|
||||||
handleHotkeyGoToMuted = () => {
|
handleHotkeyGoToMuted = () => {
|
||||||
this.context.router.history.push('/mutes');
|
this.props.router.history.push('/mutes');
|
||||||
}
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import {
|
|||||||
FAVOURITES_FETCH_SUCCESS,
|
FAVOURITES_FETCH_SUCCESS,
|
||||||
} from 'flavours/glitch/actions/interactions';
|
} from 'flavours/glitch/actions/interactions';
|
||||||
import {
|
import {
|
||||||
TIMELINE_REFRESH_SUCCESS,
|
|
||||||
TIMELINE_UPDATE,
|
TIMELINE_UPDATE,
|
||||||
TIMELINE_EXPAND_SUCCESS,
|
TIMELINE_EXPAND_SUCCESS,
|
||||||
} from 'flavours/glitch/actions/timelines';
|
} from 'flavours/glitch/actions/timelines';
|
||||||
@@ -38,7 +37,6 @@ import {
|
|||||||
import { SEARCH_FETCH_SUCCESS } from 'flavours/glitch/actions/search';
|
import { SEARCH_FETCH_SUCCESS } from 'flavours/glitch/actions/search';
|
||||||
import {
|
import {
|
||||||
NOTIFICATIONS_UPDATE,
|
NOTIFICATIONS_UPDATE,
|
||||||
NOTIFICATIONS_REFRESH_SUCCESS,
|
|
||||||
NOTIFICATIONS_EXPAND_SUCCESS,
|
NOTIFICATIONS_EXPAND_SUCCESS,
|
||||||
} from 'flavours/glitch/actions/notifications';
|
} from 'flavours/glitch/actions/notifications';
|
||||||
import {
|
import {
|
||||||
@@ -144,11 +142,9 @@ export default function accounts(state = initialState, action) {
|
|||||||
case LIST_ACCOUNTS_FETCH_SUCCESS:
|
case LIST_ACCOUNTS_FETCH_SUCCESS:
|
||||||
case LIST_EDITOR_SUGGESTIONS_READY:
|
case LIST_EDITOR_SUGGESTIONS_READY:
|
||||||
return action.accounts ? normalizeAccounts(state, action.accounts) : state;
|
return action.accounts ? normalizeAccounts(state, action.accounts) : state;
|
||||||
case NOTIFICATIONS_REFRESH_SUCCESS:
|
|
||||||
case NOTIFICATIONS_EXPAND_SUCCESS:
|
case NOTIFICATIONS_EXPAND_SUCCESS:
|
||||||
case SEARCH_FETCH_SUCCESS:
|
case SEARCH_FETCH_SUCCESS:
|
||||||
return normalizeAccountsFromStatuses(normalizeAccounts(state, action.accounts), action.statuses);
|
return normalizeAccountsFromStatuses(normalizeAccounts(state, action.accounts), action.statuses);
|
||||||
case TIMELINE_REFRESH_SUCCESS:
|
|
||||||
case TIMELINE_EXPAND_SUCCESS:
|
case TIMELINE_EXPAND_SUCCESS:
|
||||||
case CONTEXT_FETCH_SUCCESS:
|
case CONTEXT_FETCH_SUCCESS:
|
||||||
case FAVOURITED_STATUSES_FETCH_SUCCESS:
|
case FAVOURITED_STATUSES_FETCH_SUCCESS:
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import {
|
|||||||
FAVOURITES_FETCH_SUCCESS,
|
FAVOURITES_FETCH_SUCCESS,
|
||||||
} from 'flavours/glitch/actions/interactions';
|
} from 'flavours/glitch/actions/interactions';
|
||||||
import {
|
import {
|
||||||
TIMELINE_REFRESH_SUCCESS,
|
|
||||||
TIMELINE_UPDATE,
|
TIMELINE_UPDATE,
|
||||||
TIMELINE_EXPAND_SUCCESS,
|
TIMELINE_EXPAND_SUCCESS,
|
||||||
} from 'flavours/glitch/actions/timelines';
|
} from 'flavours/glitch/actions/timelines';
|
||||||
@@ -40,7 +39,6 @@ import {
|
|||||||
import { SEARCH_FETCH_SUCCESS } from 'flavours/glitch/actions/search';
|
import { SEARCH_FETCH_SUCCESS } from 'flavours/glitch/actions/search';
|
||||||
import {
|
import {
|
||||||
NOTIFICATIONS_UPDATE,
|
NOTIFICATIONS_UPDATE,
|
||||||
NOTIFICATIONS_REFRESH_SUCCESS,
|
|
||||||
NOTIFICATIONS_EXPAND_SUCCESS,
|
NOTIFICATIONS_EXPAND_SUCCESS,
|
||||||
} from 'flavours/glitch/actions/notifications';
|
} from 'flavours/glitch/actions/notifications';
|
||||||
import {
|
import {
|
||||||
@@ -119,11 +117,9 @@ export default function accountsCounters(state = initialState, action) {
|
|||||||
case LIST_ACCOUNTS_FETCH_SUCCESS:
|
case LIST_ACCOUNTS_FETCH_SUCCESS:
|
||||||
case LIST_EDITOR_SUGGESTIONS_READY:
|
case LIST_EDITOR_SUGGESTIONS_READY:
|
||||||
return action.accounts ? normalizeAccounts(state, action.accounts) : state;
|
return action.accounts ? normalizeAccounts(state, action.accounts) : state;
|
||||||
case NOTIFICATIONS_REFRESH_SUCCESS:
|
|
||||||
case NOTIFICATIONS_EXPAND_SUCCESS:
|
case NOTIFICATIONS_EXPAND_SUCCESS:
|
||||||
case SEARCH_FETCH_SUCCESS:
|
case SEARCH_FETCH_SUCCESS:
|
||||||
return normalizeAccountsFromStatuses(normalizeAccounts(state, action.accounts), action.statuses);
|
return normalizeAccountsFromStatuses(normalizeAccounts(state, action.accounts), action.statuses);
|
||||||
case TIMELINE_REFRESH_SUCCESS:
|
|
||||||
case TIMELINE_EXPAND_SUCCESS:
|
case TIMELINE_EXPAND_SUCCESS:
|
||||||
case CONTEXT_FETCH_SUCCESS:
|
case CONTEXT_FETCH_SUCCESS:
|
||||||
case FAVOURITED_STATUSES_FETCH_SUCCESS:
|
case FAVOURITED_STATUSES_FETCH_SUCCESS:
|
||||||
|
|||||||
@@ -21,14 +21,12 @@ import {
|
|||||||
STATUS_UNMUTE_SUCCESS,
|
STATUS_UNMUTE_SUCCESS,
|
||||||
} from 'flavours/glitch/actions/statuses';
|
} from 'flavours/glitch/actions/statuses';
|
||||||
import {
|
import {
|
||||||
TIMELINE_REFRESH_SUCCESS,
|
|
||||||
TIMELINE_UPDATE,
|
TIMELINE_UPDATE,
|
||||||
TIMELINE_DELETE,
|
TIMELINE_DELETE,
|
||||||
TIMELINE_EXPAND_SUCCESS,
|
TIMELINE_EXPAND_SUCCESS,
|
||||||
} from 'flavours/glitch/actions/timelines';
|
} from 'flavours/glitch/actions/timelines';
|
||||||
import {
|
import {
|
||||||
NOTIFICATIONS_UPDATE,
|
NOTIFICATIONS_UPDATE,
|
||||||
NOTIFICATIONS_REFRESH_SUCCESS,
|
|
||||||
NOTIFICATIONS_EXPAND_SUCCESS,
|
NOTIFICATIONS_EXPAND_SUCCESS,
|
||||||
} from 'flavours/glitch/actions/notifications';
|
} from 'flavours/glitch/actions/notifications';
|
||||||
import {
|
import {
|
||||||
@@ -129,10 +127,8 @@ export default function statuses(state = initialState, action) {
|
|||||||
return state.setIn([action.id, 'muted'], true);
|
return state.setIn([action.id, 'muted'], true);
|
||||||
case STATUS_UNMUTE_SUCCESS:
|
case STATUS_UNMUTE_SUCCESS:
|
||||||
return state.setIn([action.id, 'muted'], false);
|
return state.setIn([action.id, 'muted'], false);
|
||||||
case TIMELINE_REFRESH_SUCCESS:
|
|
||||||
case TIMELINE_EXPAND_SUCCESS:
|
case TIMELINE_EXPAND_SUCCESS:
|
||||||
case CONTEXT_FETCH_SUCCESS:
|
case CONTEXT_FETCH_SUCCESS:
|
||||||
case NOTIFICATIONS_REFRESH_SUCCESS:
|
|
||||||
case NOTIFICATIONS_EXPAND_SUCCESS:
|
case NOTIFICATIONS_EXPAND_SUCCESS:
|
||||||
case FAVOURITED_STATUSES_FETCH_SUCCESS:
|
case FAVOURITED_STATUSES_FETCH_SUCCESS:
|
||||||
case FAVOURITED_STATUSES_EXPAND_SUCCESS:
|
case FAVOURITED_STATUSES_EXPAND_SUCCESS:
|
||||||
|
|||||||
@@ -9,7 +9,14 @@ const { unicodeToFilename } = require('./unicode_to_filename');
|
|||||||
const { unicodeToUnifiedName } = require('./unicode_to_unified_name');
|
const { unicodeToUnifiedName } = require('./unicode_to_unified_name');
|
||||||
const emojiMap = require('./emoji_map.json');
|
const emojiMap = require('./emoji_map.json');
|
||||||
const { emojiIndex } = require('emoji-mart');
|
const { emojiIndex } = require('emoji-mart');
|
||||||
const { default: emojiMartData } = require('emoji-mart/dist/data');
|
const { uncompress: emojiMartUncompress } = require('emoji-mart/dist/utils/data');
|
||||||
|
let data = require('emoji-mart/data/all.json');
|
||||||
|
|
||||||
|
if(data.compressed) {
|
||||||
|
data = emojiMartUncompress(data);
|
||||||
|
}
|
||||||
|
const emojiMartData = data;
|
||||||
|
|
||||||
|
|
||||||
const excluded = ['®', '©', '™'];
|
const excluded = ['®', '©', '™'];
|
||||||
const skins = ['🏻', '🏼', '🏽', '🏾', '🏿'];
|
const skins = ['🏻', '🏼', '🏽', '🏾', '🏿'];
|
||||||
@@ -88,6 +95,6 @@ module.exports = JSON.parse(JSON.stringify([
|
|||||||
shortCodesToEmojiData,
|
shortCodesToEmojiData,
|
||||||
emojiMartData.skins,
|
emojiMartData.skins,
|
||||||
emojiMartData.categories,
|
emojiMartData.categories,
|
||||||
emojiMartData.short_names,
|
emojiMartData.aliases,
|
||||||
emojisWithoutShortCodes,
|
emojisWithoutShortCodes,
|
||||||
]));
|
]));
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ let originalPool = {};
|
|||||||
let index = {};
|
let index = {};
|
||||||
let emojisList = {};
|
let emojisList = {};
|
||||||
let emoticonsList = {};
|
let emoticonsList = {};
|
||||||
|
let customEmojisList = [];
|
||||||
|
|
||||||
for (let emoji in data.emojis) {
|
for (let emoji in data.emojis) {
|
||||||
let emojiData = data.emojis[emoji];
|
let emojiData = data.emojis[emoji];
|
||||||
@@ -28,7 +29,18 @@ for (let emoji in data.emojis) {
|
|||||||
originalPool[id] = emojiData;
|
originalPool[id] = emojiData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clearCustomEmojis(pool) {
|
||||||
|
customEmojisList.forEach((emoji) => {
|
||||||
|
let emojiId = emoji.id || emoji.short_names[0];
|
||||||
|
|
||||||
|
delete pool[emojiId];
|
||||||
|
delete emojisList[emojiId];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function addCustomToPool(custom, pool) {
|
function addCustomToPool(custom, pool) {
|
||||||
|
if (customEmojisList.length) clearCustomEmojis(pool);
|
||||||
|
|
||||||
custom.forEach((emoji) => {
|
custom.forEach((emoji) => {
|
||||||
let emojiId = emoji.id || emoji.short_names[0];
|
let emojiId = emoji.id || emoji.short_names[0];
|
||||||
|
|
||||||
@@ -37,10 +49,14 @@ function addCustomToPool(custom, pool) {
|
|||||||
emojisList[emojiId] = getSanitizedData(emoji);
|
emojisList[emojiId] = getSanitizedData(emoji);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
customEmojisList = custom;
|
||||||
|
index = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
function search(value, { emojisToShowFilter, maxResults, include, exclude, custom = [] } = {}) {
|
function search(value, { emojisToShowFilter, maxResults, include, exclude, custom = [] } = {}) {
|
||||||
addCustomToPool(custom, originalPool);
|
if (customEmojisList !== custom)
|
||||||
|
addCustomToPool(custom, originalPool);
|
||||||
|
|
||||||
maxResults = maxResults || 75;
|
maxResults = maxResults || 75;
|
||||||
include = include || [];
|
include = include || [];
|
||||||
@@ -143,7 +159,7 @@ function search(value, { emojisToShowFilter, maxResults, include, exclude, custo
|
|||||||
|
|
||||||
if (results) {
|
if (results) {
|
||||||
if (emojisToShowFilter) {
|
if (emojisToShowFilter) {
|
||||||
results = results.filter((result) => emojisToShowFilter(data.emojis[result.id].unified));
|
results = results.filter((result) => emojisToShowFilter(data.emojis[result.id]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (results && results.length > maxResults) {
|
if (results && results.length > maxResults) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import Picker from 'emoji-mart/dist-es/components/picker';
|
import Picker from 'emoji-mart/dist-es/components/picker/picker';
|
||||||
import Emoji from 'emoji-mart/dist-es/components/emoji';
|
import Emoji from 'emoji-mart/dist-es/components/emoji/emoji';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
Picker,
|
Picker,
|
||||||
|
|||||||
@@ -28,11 +28,6 @@ function main() {
|
|||||||
store.dispatch(registerPushNotifications.register());
|
store.dispatch(registerPushNotifications.register());
|
||||||
}
|
}
|
||||||
perf.stop('main()');
|
perf.stop('main()');
|
||||||
|
|
||||||
// remember the initial URL
|
|
||||||
if (window.history && typeof window._mastoInitialHistoryLen === 'undefined') {
|
|
||||||
window._mastoInitialHistoryLen = window.history.length;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ export const STATUS_UNMUTE_FAIL = 'STATUS_UNMUTE_FAIL';
|
|||||||
export const STATUS_REVEAL = 'STATUS_REVEAL';
|
export const STATUS_REVEAL = 'STATUS_REVEAL';
|
||||||
export const STATUS_HIDE = 'STATUS_HIDE';
|
export const STATUS_HIDE = 'STATUS_HIDE';
|
||||||
|
|
||||||
|
export const REDRAFT = 'REDRAFT';
|
||||||
|
|
||||||
export function fetchStatusRequest(id, skipLoading) {
|
export function fetchStatusRequest(id, skipLoading) {
|
||||||
return {
|
return {
|
||||||
type: STATUS_FETCH_REQUEST,
|
type: STATUS_FETCH_REQUEST,
|
||||||
@@ -131,14 +133,27 @@ export function fetchStatusFail(id, error, skipLoading) {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export function deleteStatus(id) {
|
export function redraft(status) {
|
||||||
|
return {
|
||||||
|
type: REDRAFT,
|
||||||
|
status,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export function deleteStatus(id, withRedraft = false) {
|
||||||
return (dispatch, getState) => {
|
return (dispatch, getState) => {
|
||||||
|
const status = getState().getIn(['statuses', id]);
|
||||||
|
|
||||||
dispatch(deleteStatusRequest(id));
|
dispatch(deleteStatusRequest(id));
|
||||||
|
|
||||||
api(getState).delete(`/api/v1/statuses/${id}`).then(() => {
|
api(getState).delete(`/api/v1/statuses/${id}`).then(() => {
|
||||||
evictStatus(id);
|
evictStatus(id);
|
||||||
dispatch(deleteStatusSuccess(id));
|
dispatch(deleteStatusSuccess(id));
|
||||||
dispatch(deleteFromTimelines(id));
|
dispatch(deleteFromTimelines(id));
|
||||||
|
|
||||||
|
if (withRedraft) {
|
||||||
|
dispatch(redraft(status));
|
||||||
|
}
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
dispatch(deleteStatusFail(id, error));
|
dispatch(deleteStatusFail(id, error));
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
import api from '../api';
|
|
||||||
|
|
||||||
export const TRENDS_FETCH_REQUEST = 'TRENDS_FETCH_REQUEST';
|
|
||||||
export const TRENDS_FETCH_SUCCESS = 'TRENDS_FETCH_SUCCESS';
|
|
||||||
export const TRENDS_FETCH_FAIL = 'TRENDS_FETCH_FAIL';
|
|
||||||
|
|
||||||
export const fetchTrends = () => (dispatch, getState) => {
|
|
||||||
dispatch(fetchTrendsRequest());
|
|
||||||
|
|
||||||
api(getState)
|
|
||||||
.get('/api/v1/trends')
|
|
||||||
.then(({ data }) => dispatch(fetchTrendsSuccess(data)))
|
|
||||||
.catch(err => dispatch(fetchTrendsFail(err)));
|
|
||||||
};
|
|
||||||
|
|
||||||
export const fetchTrendsRequest = () => ({
|
|
||||||
type: TRENDS_FETCH_REQUEST,
|
|
||||||
skipLoading: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
export const fetchTrendsSuccess = trends => ({
|
|
||||||
type: TRENDS_FETCH_SUCCESS,
|
|
||||||
trends,
|
|
||||||
skipLoading: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
export const fetchTrendsFail = error => ({
|
|
||||||
type: TRENDS_FETCH_FAIL,
|
|
||||||
error,
|
|
||||||
skipLoading: true,
|
|
||||||
skipAlert: true,
|
|
||||||
});
|
|
||||||
@@ -1,16 +1,9 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Sparklines, SparklinesCurve } from 'react-sparklines';
|
import { Sparklines, SparklinesCurve } from 'react-sparklines';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { FormattedMessage, FormattedNumber } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
|
import { shortNumberFormat } from '../utils/numbers';
|
||||||
const shortNumberFormat = number => {
|
|
||||||
if (number < 1000) {
|
|
||||||
return <FormattedNumber value={number} />;
|
|
||||||
} else {
|
|
||||||
return <React.Fragment><FormattedNumber value={number / 1000} maximumFractionDigits={1} />K</React.Fragment>;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const Hashtag = ({ hashtag }) => (
|
const Hashtag = ({ hashtag }) => (
|
||||||
<div className='trends__item'>
|
<div className='trends__item'>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { me } from '../initial_state';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
||||||
|
redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' },
|
||||||
direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' },
|
direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' },
|
||||||
mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },
|
mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },
|
||||||
mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' },
|
mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' },
|
||||||
@@ -88,6 +89,10 @@ export default class StatusActionBar extends ImmutablePureComponent {
|
|||||||
this.props.onDelete(this.props.status);
|
this.props.onDelete(this.props.status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleRedraftClick = () => {
|
||||||
|
this.props.onDelete(this.props.status, true);
|
||||||
|
}
|
||||||
|
|
||||||
handlePinClick = () => {
|
handlePinClick = () => {
|
||||||
this.props.onPin(this.props.status);
|
this.props.onPin(this.props.status);
|
||||||
}
|
}
|
||||||
@@ -159,6 +164,7 @@ export default class StatusActionBar extends ImmutablePureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });
|
menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });
|
||||||
|
menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick });
|
||||||
} else {
|
} else {
|
||||||
menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick });
|
menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick });
|
||||||
menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick });
|
menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick });
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ import { showAlertForError } from '../actions/alerts';
|
|||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
|
deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
|
||||||
deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },
|
deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },
|
||||||
|
redraftConfirm: { id: 'confirmations.redraft.confirm', defaultMessage: 'Delete & redraft' },
|
||||||
|
redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.' },
|
||||||
blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },
|
blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -91,14 +93,14 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
onDelete (status) {
|
onDelete (status, withRedraft = false) {
|
||||||
if (!deleteModal) {
|
if (!deleteModal) {
|
||||||
dispatch(deleteStatus(status.get('id')));
|
dispatch(deleteStatus(status.get('id'), withRedraft));
|
||||||
} else {
|
} else {
|
||||||
dispatch(openModal('CONFIRM', {
|
dispatch(openModal('CONFIRM', {
|
||||||
message: intl.formatMessage(messages.deleteMessage),
|
message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),
|
||||||
confirm: intl.formatMessage(messages.deleteConfirm),
|
confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),
|
||||||
onConfirm: () => dispatch(deleteStatus(status.get('id'))),
|
onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)),
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,8 +3,9 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import DropdownMenuContainer from '../../../containers/dropdown_menu_container';
|
import DropdownMenuContainer from '../../../containers/dropdown_menu_container';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { defineMessages, injectIntl, FormattedMessage, FormattedNumber } from 'react-intl';
|
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||||
import { me } from '../../../initial_state';
|
import { me } from '../../../initial_state';
|
||||||
|
import { shortNumberFormat } from '../../../utils/numbers';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
mention: { id: 'account.mention', defaultMessage: 'Mention @{name}' },
|
mention: { id: 'account.mention', defaultMessage: 'Mention @{name}' },
|
||||||
@@ -146,17 +147,17 @@ export default class ActionBar extends React.PureComponent {
|
|||||||
<div className='account__action-bar-links'>
|
<div className='account__action-bar-links'>
|
||||||
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}`}>
|
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}`}>
|
||||||
<span><FormattedMessage id='account.posts' defaultMessage='Toots' /></span>
|
<span><FormattedMessage id='account.posts' defaultMessage='Toots' /></span>
|
||||||
<strong><FormattedNumber value={account.get('statuses_count')} /></strong>
|
<strong>{shortNumberFormat(account.get('statuses_count'))}</strong>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/following`}>
|
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/following`}>
|
||||||
<span><FormattedMessage id='account.follows' defaultMessage='Follows' /></span>
|
<span><FormattedMessage id='account.follows' defaultMessage='Follows' /></span>
|
||||||
<strong><FormattedNumber value={account.get('following_count')} /></strong>
|
<strong>{shortNumberFormat(account.get('following_count'))}</strong>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/followers`}>
|
<Link className='account__action-bar__tab' to={`/accounts/${account.get('id')}/followers`}>
|
||||||
<span><FormattedMessage id='account.followers' defaultMessage='Followers' /></span>
|
<span><FormattedMessage id='account.followers' defaultMessage='Followers' /></span>
|
||||||
<strong><FormattedNumber value={account.get('followers_count')} /></strong>
|
<strong>{shortNumberFormat(account.get('followers_count'))}</strong>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
|
|||||||
|
|
||||||
onBlockDomain (domain) {
|
onBlockDomain (domain) {
|
||||||
dispatch(openModal('CONFIRM', {
|
dispatch(openModal('CONFIRM', {
|
||||||
message: <FormattedMessage id='confirmations.domain_block.message' defaultMessage='Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.' values={{ domain: <strong>{domain}</strong> }} />,
|
message: <FormattedMessage id='confirmations.domain_block.message' defaultMessage='Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.' values={{ domain: <strong>{domain}</strong> }} />,
|
||||||
confirm: intl.formatMessage(messages.blockDomainConfirm),
|
confirm: intl.formatMessage(messages.blockDomainConfirm),
|
||||||
onConfirm: () => dispatch(blockDomain(domain)),
|
onConfirm: () => dispatch(blockDomain(domain)),
|
||||||
}));
|
}));
|
||||||
|
|||||||
@@ -128,12 +128,24 @@ export default class ComposeForm extends ImmutablePureComponent {
|
|||||||
} else if(prevProps.is_submitting && !this.props.is_submitting) {
|
} else if(prevProps.is_submitting && !this.props.is_submitting) {
|
||||||
this.autosuggestTextarea.textarea.focus();
|
this.autosuggestTextarea.textarea.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.props.spoiler !== prevProps.spoiler) {
|
||||||
|
if (this.props.spoiler) {
|
||||||
|
this.spoilerText.focus();
|
||||||
|
} else {
|
||||||
|
this.autosuggestTextarea.textarea.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setAutosuggestTextarea = (c) => {
|
setAutosuggestTextarea = (c) => {
|
||||||
this.autosuggestTextarea = c;
|
this.autosuggestTextarea = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setSpoilerText = (c) => {
|
||||||
|
this.spoilerText = c;
|
||||||
|
}
|
||||||
|
|
||||||
handleEmojiPick = (data) => {
|
handleEmojiPick = (data) => {
|
||||||
const { text } = this.props;
|
const { text } = this.props;
|
||||||
const position = this.autosuggestTextarea.textarea.selectionStart;
|
const position = this.autosuggestTextarea.textarea.selectionStart;
|
||||||
@@ -164,7 +176,7 @@ export default class ComposeForm extends ImmutablePureComponent {
|
|||||||
<div className={`spoiler-input ${this.props.spoiler ? 'spoiler-input--visible' : ''}`}>
|
<div className={`spoiler-input ${this.props.spoiler ? 'spoiler-input--visible' : ''}`}>
|
||||||
<label>
|
<label>
|
||||||
<span style={{ display: 'none' }}>{intl.formatMessage(messages.spoiler_placeholder)}</span>
|
<span style={{ display: 'none' }}>{intl.formatMessage(messages.spoiler_placeholder)}</span>
|
||||||
<input placeholder={intl.formatMessage(messages.spoiler_placeholder)} value={this.props.spoiler_text} onChange={this.handleChangeSpoilerText} onKeyDown={this.handleKeyDown} type='text' className='spoiler-input__input' id='cw-spoiler-input' />
|
<input placeholder={intl.formatMessage(messages.spoiler_placeholder)} value={this.props.spoiler_text} onChange={this.handleChangeSpoilerText} onKeyDown={this.handleKeyDown} type='text' className='spoiler-input__input' id='cw-spoiler-input' ref={this.setSpoilerText} />
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ const messages = defineMessages({
|
|||||||
const assetHost = process.env.CDN_HOST || '';
|
const assetHost = process.env.CDN_HOST || '';
|
||||||
let EmojiPicker, Emoji; // load asynchronously
|
let EmojiPicker, Emoji; // load asynchronously
|
||||||
|
|
||||||
const backgroundImageFn = () => `${assetHost}/emoji/sheet.png`;
|
const backgroundImageFn = () => `${assetHost}/emoji/sheet_10.png`;
|
||||||
const listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;
|
const listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;
|
||||||
|
|
||||||
const categoriesSort = [
|
const categoriesSort = [
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
import AccountContainer from '../../../containers/account_container';
|
import AccountContainer from '../../../containers/account_container';
|
||||||
@@ -11,36 +10,14 @@ export default class SearchResults extends ImmutablePureComponent {
|
|||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
results: ImmutablePropTypes.map.isRequired,
|
results: ImmutablePropTypes.map.isRequired,
|
||||||
trends: ImmutablePropTypes.list,
|
|
||||||
fetchTrends: PropTypes.func.isRequired,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
componentDidMount () {
|
|
||||||
const { fetchTrends } = this.props;
|
|
||||||
fetchTrends();
|
|
||||||
}
|
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { results, trends } = this.props;
|
const { results } = this.props;
|
||||||
|
|
||||||
let accounts, statuses, hashtags;
|
let accounts, statuses, hashtags;
|
||||||
let count = 0;
|
let count = 0;
|
||||||
|
|
||||||
if (results.isEmpty()) {
|
|
||||||
return (
|
|
||||||
<div className='search-results'>
|
|
||||||
<div className='trends'>
|
|
||||||
<div className='trends__header'>
|
|
||||||
<i className='fa fa-fire fa-fw' />
|
|
||||||
<FormattedMessage id='trends.header' defaultMessage='Trending now' />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{trends && trends.map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (results.get('accounts') && results.get('accounts').size > 0) {
|
if (results.get('accounts') && results.get('accounts').size > 0) {
|
||||||
count += results.get('accounts').size;
|
count += results.get('accounts').size;
|
||||||
accounts = (
|
accounts = (
|
||||||
|
|||||||
@@ -1,14 +1,8 @@
|
|||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import SearchResults from '../components/search_results';
|
import SearchResults from '../components/search_results';
|
||||||
import { fetchTrends } from '../../../actions/trends';
|
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
const mapStateToProps = state => ({
|
||||||
results: state.getIn(['search', 'results']),
|
results: state.getIn(['search', 'results']),
|
||||||
trends: state.getIn(['trends', 'items']),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapDispatchToProps = dispatch => ({
|
export default connect(mapStateToProps)(SearchResults);
|
||||||
fetchTrends: () => dispatch(fetchTrends()),
|
|
||||||
});
|
|
||||||
|
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(SearchResults);
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ describe('emoji', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('does an emoji that has no shortcode', () => {
|
it('does an emoji that has no shortcode', () => {
|
||||||
expect(emojify('🕉️')).toEqual('<img draggable="false" class="emojione" alt="🕉️" title="" src="/emoji/1f549.svg" />');
|
expect(emojify('👁🗨')).toEqual('<img draggable="false" class="emojione" alt="👁🗨" title="" src="/emoji/1f441-200d-1f5e8.svg" />');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('does an emoji whose filename is irregular', () => {
|
it('does an emoji whose filename is irregular', () => {
|
||||||
|
|||||||
@@ -44,6 +44,57 @@ describe('emoji_index', () => {
|
|||||||
expect(emojiIndex.search('apple').map(trimEmojis)).toEqual(expected);
|
expect(emojiIndex.search('apple').map(trimEmojis)).toEqual(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('can include/exclude categories', () => {
|
||||||
|
expect(search('flag', { include: ['people'] })).toEqual([]);
|
||||||
|
expect(emojiIndex.search('flag', { include: ['people'] })).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('(different behavior from emoji-mart) do not erases custom emoji if not passed again', () => {
|
||||||
|
const custom = [
|
||||||
|
{
|
||||||
|
id: 'mastodon',
|
||||||
|
name: 'mastodon',
|
||||||
|
short_names: ['mastodon'],
|
||||||
|
text: '',
|
||||||
|
emoticons: [],
|
||||||
|
keywords: ['mastodon'],
|
||||||
|
imageUrl: 'http://example.com',
|
||||||
|
custom: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
search('', { custom });
|
||||||
|
emojiIndex.search('', { custom });
|
||||||
|
const expected = [];
|
||||||
|
const lightExpected = [
|
||||||
|
{
|
||||||
|
id: 'mastodon',
|
||||||
|
custom: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
expect(search('masto').map(trimEmojis)).toEqual(lightExpected);
|
||||||
|
expect(emojiIndex.search('masto').map(trimEmojis)).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('(different behavior from emoji-mart) erases custom emoji if another is passed', () => {
|
||||||
|
const custom = [
|
||||||
|
{
|
||||||
|
id: 'mastodon',
|
||||||
|
name: 'mastodon',
|
||||||
|
short_names: ['mastodon'],
|
||||||
|
text: '',
|
||||||
|
emoticons: [],
|
||||||
|
keywords: ['mastodon'],
|
||||||
|
imageUrl: 'http://example.com',
|
||||||
|
custom: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
search('', { custom });
|
||||||
|
emojiIndex.search('', { custom });
|
||||||
|
const expected = [];
|
||||||
|
expect(search('masto', { custom: [] }).map(trimEmojis)).toEqual(expected);
|
||||||
|
expect(emojiIndex.search('masto').map(trimEmojis)).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
it('handles custom emoji', () => {
|
it('handles custom emoji', () => {
|
||||||
const custom = [
|
const custom = [
|
||||||
{
|
{
|
||||||
@@ -65,23 +116,18 @@ describe('emoji_index', () => {
|
|||||||
custom: true,
|
custom: true,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
expect(search('masto').map(trimEmojis)).toEqual(expected);
|
expect(search('masto', { custom }).map(trimEmojis)).toEqual(expected);
|
||||||
expect(emojiIndex.search('masto').map(trimEmojis)).toEqual(expected);
|
expect(emojiIndex.search('masto', { custom }).map(trimEmojis)).toEqual(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should filter only emojis we care about, exclude pineapple', () => {
|
it('should filter only emojis we care about, exclude pineapple', () => {
|
||||||
const emojisToShowFilter = unified => unified !== '1F34D';
|
const emojisToShowFilter = emoji => emoji.unified !== '1F34D';
|
||||||
expect(search('apple', { emojisToShowFilter }).map((obj) => obj.id))
|
expect(search('apple', { emojisToShowFilter }).map((obj) => obj.id))
|
||||||
.not.toContain('pineapple');
|
.not.toContain('pineapple');
|
||||||
expect(emojiIndex.search('apple', { emojisToShowFilter }).map((obj) => obj.id))
|
expect(emojiIndex.search('apple', { emojisToShowFilter }).map((obj) => obj.id))
|
||||||
.not.toContain('pineapple');
|
.not.toContain('pineapple');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can include/exclude categories', () => {
|
|
||||||
expect(search('flag', { include: ['people'] })).toEqual([]);
|
|
||||||
expect(emojiIndex.search('flag', { include: ['people'] })).toEqual([]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('does an emoji whose unified name is irregular', () => {
|
it('does an emoji whose unified name is irregular', () => {
|
||||||
const expected = [
|
const expected = [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,7 +9,13 @@ const { unicodeToFilename } = require('./unicode_to_filename');
|
|||||||
const { unicodeToUnifiedName } = require('./unicode_to_unified_name');
|
const { unicodeToUnifiedName } = require('./unicode_to_unified_name');
|
||||||
const emojiMap = require('./emoji_map.json');
|
const emojiMap = require('./emoji_map.json');
|
||||||
const { emojiIndex } = require('emoji-mart');
|
const { emojiIndex } = require('emoji-mart');
|
||||||
const { default: emojiMartData } = require('emoji-mart/dist/data');
|
const { uncompress: emojiMartUncompress } = require('emoji-mart/dist/utils/data');
|
||||||
|
let data = require('emoji-mart/data/all.json');
|
||||||
|
|
||||||
|
if(data.compressed) {
|
||||||
|
data = emojiMartUncompress(data);
|
||||||
|
}
|
||||||
|
const emojiMartData = data;
|
||||||
|
|
||||||
const excluded = ['®', '©', '™'];
|
const excluded = ['®', '©', '™'];
|
||||||
const skins = ['🏻', '🏼', '🏽', '🏾', '🏿'];
|
const skins = ['🏻', '🏼', '🏽', '🏾', '🏿'];
|
||||||
@@ -88,6 +94,6 @@ module.exports = JSON.parse(JSON.stringify([
|
|||||||
shortCodesToEmojiData,
|
shortCodesToEmojiData,
|
||||||
emojiMartData.skins,
|
emojiMartData.skins,
|
||||||
emojiMartData.categories,
|
emojiMartData.categories,
|
||||||
emojiMartData.short_names,
|
emojiMartData.aliases,
|
||||||
emojisWithoutShortCodes,
|
emojisWithoutShortCodes,
|
||||||
]));
|
]));
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ let originalPool = {};
|
|||||||
let index = {};
|
let index = {};
|
||||||
let emojisList = {};
|
let emojisList = {};
|
||||||
let emoticonsList = {};
|
let emoticonsList = {};
|
||||||
|
let customEmojisList = [];
|
||||||
|
|
||||||
for (let emoji in data.emojis) {
|
for (let emoji in data.emojis) {
|
||||||
let emojiData = data.emojis[emoji];
|
let emojiData = data.emojis[emoji];
|
||||||
@@ -28,7 +29,18 @@ for (let emoji in data.emojis) {
|
|||||||
originalPool[id] = emojiData;
|
originalPool[id] = emojiData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clearCustomEmojis(pool) {
|
||||||
|
customEmojisList.forEach((emoji) => {
|
||||||
|
let emojiId = emoji.id || emoji.short_names[0];
|
||||||
|
|
||||||
|
delete pool[emojiId];
|
||||||
|
delete emojisList[emojiId];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function addCustomToPool(custom, pool) {
|
function addCustomToPool(custom, pool) {
|
||||||
|
if (customEmojisList.length) clearCustomEmojis(pool);
|
||||||
|
|
||||||
custom.forEach((emoji) => {
|
custom.forEach((emoji) => {
|
||||||
let emojiId = emoji.id || emoji.short_names[0];
|
let emojiId = emoji.id || emoji.short_names[0];
|
||||||
|
|
||||||
@@ -37,10 +49,18 @@ function addCustomToPool(custom, pool) {
|
|||||||
emojisList[emojiId] = getSanitizedData(emoji);
|
emojisList[emojiId] = getSanitizedData(emoji);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
customEmojisList = custom;
|
||||||
|
index = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
function search(value, { emojisToShowFilter, maxResults, include, exclude, custom = [] } = {}) {
|
function search(value, { emojisToShowFilter, maxResults, include, exclude, custom } = {}) {
|
||||||
addCustomToPool(custom, originalPool);
|
if (custom !== undefined) {
|
||||||
|
if (customEmojisList !== custom)
|
||||||
|
addCustomToPool(custom, originalPool);
|
||||||
|
} else {
|
||||||
|
custom = [];
|
||||||
|
}
|
||||||
|
|
||||||
maxResults = maxResults || 75;
|
maxResults = maxResults || 75;
|
||||||
include = include || [];
|
include = include || [];
|
||||||
@@ -143,7 +163,7 @@ function search(value, { emojisToShowFilter, maxResults, include, exclude, custo
|
|||||||
|
|
||||||
if (results) {
|
if (results) {
|
||||||
if (emojisToShowFilter) {
|
if (emojisToShowFilter) {
|
||||||
results = results.filter((result) => emojisToShowFilter(data.emojis[result.id].unified));
|
results = results.filter((result) => emojisToShowFilter(data.emojis[result.id]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (results && results.length > maxResults) {
|
if (results && results.length > maxResults) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import Picker from 'emoji-mart/dist-es/components/picker';
|
import Picker from 'emoji-mart/dist-es/components/picker/picker';
|
||||||
import Emoji from 'emoji-mart/dist-es/components/emoji';
|
import Emoji from 'emoji-mart/dist-es/components/emoji/emoji';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
Picker,
|
Picker,
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
import classNames from 'classnames';
|
|
||||||
import React from 'react';
|
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
||||||
import { FormattedMessage, defineMessages } from 'react-intl';
|
|
||||||
import Hashtag from '../../../components/hashtag';
|
|
||||||
import { Link } from 'react-router-dom';
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
|
||||||
refresh_trends: { id: 'trends.refresh', defaultMessage: 'Refresh' },
|
|
||||||
});
|
|
||||||
|
|
||||||
export default class Trends extends ImmutablePureComponent {
|
|
||||||
|
|
||||||
static defaultProps = {
|
|
||||||
loading: false,
|
|
||||||
};
|
|
||||||
|
|
||||||
static propTypes = {
|
|
||||||
trends: ImmutablePropTypes.list,
|
|
||||||
loading: PropTypes.bool.isRequired,
|
|
||||||
showTrends: PropTypes.bool.isRequired,
|
|
||||||
fetchTrends: PropTypes.func.isRequired,
|
|
||||||
toggleTrends: PropTypes.func.isRequired,
|
|
||||||
};
|
|
||||||
|
|
||||||
componentDidMount () {
|
|
||||||
setTimeout(() => this.props.fetchTrends(), 5000);
|
|
||||||
}
|
|
||||||
|
|
||||||
handleRefreshTrends = () => {
|
|
||||||
this.props.fetchTrends();
|
|
||||||
}
|
|
||||||
|
|
||||||
handleToggle = () => {
|
|
||||||
this.props.toggleTrends(!this.props.showTrends);
|
|
||||||
}
|
|
||||||
|
|
||||||
render () {
|
|
||||||
const { intl, trends, loading, showTrends } = this.props;
|
|
||||||
|
|
||||||
if (!trends || trends.size < 1) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className='getting-started__trends'>
|
|
||||||
<div className='column-header__wrapper'>
|
|
||||||
<h1 className='column-header'>
|
|
||||||
<button>
|
|
||||||
<i className='fa fa-fire fa-fw' />
|
|
||||||
<FormattedMessage id='trends.header' defaultMessage='Trending now' />
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div className='column-header__buttons'>
|
|
||||||
{showTrends && <button onClick={this.handleRefreshTrends} className='column-header__button' title={intl.formatMessage(messages.refresh_trends)} aria-label={intl.formatMessage(messages.refresh_trends)} disabled={loading}><i className={classNames('fa', 'fa-refresh', { 'fa-spin': loading })} /></button>}
|
|
||||||
<button onClick={this.handleToggle} className='column-header__button'><i className={classNames('fa', showTrends ? 'fa-chevron-down' : 'fa-chevron-up')} /></button>
|
|
||||||
</div>
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{showTrends && <div className='getting-started__scrollable'>
|
|
||||||
{trends.take(3).map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}
|
|
||||||
<Link to='/trends' className='load-more'><FormattedMessage id='status.load_more' defaultMessage='Load more' /></Link>
|
|
||||||
</div>}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
import { connect } from 'react-redux';
|
|
||||||
import { injectIntl } from 'react-intl';
|
|
||||||
import { fetchTrends } from '../../../actions/trends';
|
|
||||||
import Trends from '../components/trends';
|
|
||||||
import { changeSetting } from '../../../actions/settings';
|
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
|
||||||
trends: state.getIn(['trends', 'items']),
|
|
||||||
loading: state.getIn(['trends', 'isLoading']),
|
|
||||||
showTrends: state.getIn(['settings', 'trends', 'show']),
|
|
||||||
});
|
|
||||||
|
|
||||||
const mapDispatchToProps = dispatch => ({
|
|
||||||
fetchTrends: () => dispatch(fetchTrends()),
|
|
||||||
toggleTrends: show => dispatch(changeSetting(['trends', 'show'], show)),
|
|
||||||
});
|
|
||||||
|
|
||||||
export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(Trends));
|
|
||||||
@@ -12,7 +12,6 @@ import { fetchFollowRequests } from '../../actions/accounts';
|
|||||||
import { List as ImmutableList } from 'immutable';
|
import { List as ImmutableList } from 'immutable';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import NavigationBar from '../compose/components/navigation_bar';
|
import NavigationBar from '../compose/components/navigation_bar';
|
||||||
import TrendsContainer from './containers/trends_container';
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' },
|
home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' },
|
||||||
@@ -132,8 +131,6 @@ export default class GettingStarted extends ImmutablePureComponent {
|
|||||||
{navItems}
|
{navItems}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{multiColumn && <TrendsContainer />}
|
|
||||||
|
|
||||||
{!multiColumn && <div className='flex-spacer' />}
|
{!multiColumn && <div className='flex-spacer' />}
|
||||||
|
|
||||||
<div className='getting-started getting-started__footer'>
|
<div className='getting-started getting-started__footer'>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { me } from '../../../initial_state';
|
|||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
||||||
|
redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' },
|
||||||
direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' },
|
direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' },
|
||||||
mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },
|
mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },
|
||||||
reply: { id: 'status.reply', defaultMessage: 'Reply' },
|
reply: { id: 'status.reply', defaultMessage: 'Reply' },
|
||||||
@@ -67,6 +68,10 @@ export default class ActionBar extends React.PureComponent {
|
|||||||
this.props.onDelete(this.props.status);
|
this.props.onDelete(this.props.status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleRedraftClick = () => {
|
||||||
|
this.props.onDelete(this.props.status, true);
|
||||||
|
}
|
||||||
|
|
||||||
handleDirectClick = () => {
|
handleDirectClick = () => {
|
||||||
this.props.onDirect(this.props.status.get('account'), this.context.router.history);
|
this.props.onDirect(this.props.status.get('account'), this.context.router.history);
|
||||||
}
|
}
|
||||||
@@ -132,6 +137,7 @@ export default class ActionBar extends React.PureComponent {
|
|||||||
menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });
|
menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });
|
||||||
menu.push(null);
|
menu.push(null);
|
||||||
menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });
|
menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });
|
||||||
|
menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick });
|
||||||
} else {
|
} else {
|
||||||
menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick });
|
menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick });
|
||||||
menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick });
|
menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick });
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from
|
|||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
|
deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
|
||||||
deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },
|
deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },
|
||||||
|
redraftConfirm: { id: 'confirmations.redraft.confirm', defaultMessage: 'Delete & redraft' },
|
||||||
|
redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.' },
|
||||||
blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },
|
blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },
|
||||||
revealAll: { id: 'status.show_more_all', defaultMessage: 'Show more for all' },
|
revealAll: { id: 'status.show_more_all', defaultMessage: 'Show more for all' },
|
||||||
hideAll: { id: 'status.show_less_all', defaultMessage: 'Show less for all' },
|
hideAll: { id: 'status.show_less_all', defaultMessage: 'Show less for all' },
|
||||||
@@ -77,9 +79,12 @@ const makeMapStateToProps = () => {
|
|||||||
let id = ids.shift();
|
let id = ids.shift();
|
||||||
const replies = state.getIn(['contexts', 'replies', id]);
|
const replies = state.getIn(['contexts', 'replies', id]);
|
||||||
|
|
||||||
|
if (status.get('id') !== id) {
|
||||||
|
mutable.push(id);
|
||||||
|
}
|
||||||
|
|
||||||
if (replies) {
|
if (replies) {
|
||||||
replies.forEach(reply => {
|
replies.reverse().forEach(reply => {
|
||||||
mutable.push(reply);
|
|
||||||
ids.unshift(reply);
|
ids.unshift(reply);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -169,16 +174,16 @@ export default class Status extends ImmutablePureComponent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handleDeleteClick = (status) => {
|
handleDeleteClick = (status, withRedraft = false) => {
|
||||||
const { dispatch, intl } = this.props;
|
const { dispatch, intl } = this.props;
|
||||||
|
|
||||||
if (!deleteModal) {
|
if (!deleteModal) {
|
||||||
dispatch(deleteStatus(status.get('id')));
|
dispatch(deleteStatus(status.get('id'), withRedraft));
|
||||||
} else {
|
} else {
|
||||||
dispatch(openModal('CONFIRM', {
|
dispatch(openModal('CONFIRM', {
|
||||||
message: intl.formatMessage(messages.deleteMessage),
|
message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),
|
||||||
confirm: intl.formatMessage(messages.deleteConfirm),
|
confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),
|
||||||
onConfirm: () => dispatch(deleteStatus(status.get('id'))),
|
onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)),
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,6 +63,12 @@ export default class ReportModal extends ImmutablePureComponent {
|
|||||||
this.props.dispatch(submitReport());
|
this.props.dispatch(submitReport());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleKeyDown = e => {
|
||||||
|
if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) {
|
||||||
|
this.handleSubmit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
componentDidMount () {
|
componentDidMount () {
|
||||||
this.props.dispatch(expandAccountTimeline(this.props.account.get('id'), { withReplies: true }));
|
this.props.dispatch(expandAccountTimeline(this.props.account.get('id'), { withReplies: true }));
|
||||||
}
|
}
|
||||||
@@ -98,6 +104,7 @@ export default class ReportModal extends ImmutablePureComponent {
|
|||||||
placeholder={intl.formatMessage(messages.placeholder)}
|
placeholder={intl.formatMessage(messages.placeholder)}
|
||||||
value={comment}
|
value={comment}
|
||||||
onChange={this.handleCommentChange}
|
onChange={this.handleCommentChange}
|
||||||
|
onKeyDown={this.handleKeyDown}
|
||||||
disabled={isSubmitting}
|
disabled={isSubmitting}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ import {
|
|||||||
Mutes,
|
Mutes,
|
||||||
PinnedStatuses,
|
PinnedStatuses,
|
||||||
Lists,
|
Lists,
|
||||||
Trends,
|
|
||||||
} from './util/async-components';
|
} from './util/async-components';
|
||||||
import { HotKeys } from 'react-hotkeys';
|
import { HotKeys } from 'react-hotkeys';
|
||||||
import { me } from '../../initial_state';
|
import { me } from '../../initial_state';
|
||||||
@@ -155,7 +154,6 @@ class SwitchingColumnsArea extends React.PureComponent {
|
|||||||
<WrappedRoute path='/pinned' component={PinnedStatuses} content={children} />
|
<WrappedRoute path='/pinned' component={PinnedStatuses} content={children} />
|
||||||
|
|
||||||
<WrappedRoute path='/search' component={Compose} content={children} componentParams={{ isSearchPage: true }} />
|
<WrappedRoute path='/search' component={Compose} content={children} componentParams={{ isSearchPage: true }} />
|
||||||
<WrappedRoute path='/trends' component={Trends} content={children} />
|
|
||||||
|
|
||||||
<WrappedRoute path='/statuses/new' component={Compose} content={children} />
|
<WrappedRoute path='/statuses/new' component={Compose} content={children} />
|
||||||
<WrappedRoute path='/statuses/:statusId' exact component={Status} content={children} />
|
<WrappedRoute path='/statuses/:statusId' exact component={Status} content={children} />
|
||||||
|
|||||||
@@ -129,7 +129,3 @@ export function EmbedModal () {
|
|||||||
export function ListEditor () {
|
export function ListEditor () {
|
||||||
return import(/* webpackChunkName: "features/list_editor" */'../../list_editor');
|
return import(/* webpackChunkName: "features/list_editor" */'../../list_editor');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function Trends () {
|
|
||||||
return import(/* webpackChunkName: "features/trends" */'../../trends');
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "متأكد من أنك تود حظر إسم النطاق {domain} بالكامل ؟ في غالب الأحيان يُستَحسَن كتم أو حظر بعض الحسابات بدلا من حظر نطاق بالكامل.",
|
"confirmations.domain_block.message": "متأكد من أنك تود حظر إسم النطاق {domain} بالكامل ؟ في غالب الأحيان يُستَحسَن كتم أو حظر بعض الحسابات بدلا من حظر نطاق بالكامل.",
|
||||||
"confirmations.mute.confirm": "أكتم",
|
"confirmations.mute.confirm": "أكتم",
|
||||||
"confirmations.mute.message": "هل أنت متأكد أنك تريد كتم {name} ؟",
|
"confirmations.mute.message": "هل أنت متأكد أنك تريد كتم {name} ؟",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "إلغاء المتابعة",
|
"confirmations.unfollow.confirm": "إلغاء المتابعة",
|
||||||
"confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟",
|
"confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟",
|
||||||
"embed.instructions": "يمكنكم إدماج هذه الحالة على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.",
|
"embed.instructions": "يمكنكم إدماج هذه الحالة على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "رَقِّي",
|
"status.reblog": "رَقِّي",
|
||||||
"status.reblog_private": "القيام بالترقية إلى الجمهور الأصلي",
|
"status.reblog_private": "القيام بالترقية إلى الجمهور الأصلي",
|
||||||
"status.reblogged_by": "{name} رقى",
|
"status.reblogged_by": "{name} رقى",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "ردّ",
|
"status.reply": "ردّ",
|
||||||
"status.replyAll": "رُد على الخيط",
|
"status.replyAll": "رُد على الخيط",
|
||||||
"status.report": "إبلِغ عن @{name}",
|
"status.report": "إبلِغ عن @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
|
"ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
|
||||||
"upload_area.title": "إسحب ثم أفلت للرفع",
|
"upload_area.title": "إسحب ثم أفلت للرفع",
|
||||||
"upload_button.label": "إضافة وسائط",
|
"upload_button.label": "إضافة وسائط",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
"confirmations.domain_block.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.confirm": "Mute",
|
||||||
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Unfollow",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"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.instructions": "Embed this status on your website by copying the code below.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Споделяне",
|
"status.reblog": "Споделяне",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} сподели",
|
"status.reblogged_by": "{name} сподели",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Отговор",
|
"status.reply": "Отговор",
|
||||||
"status.replyAll": "Reply to thread",
|
"status.replyAll": "Reply to thread",
|
||||||
"status.report": "Report @{name}",
|
"status.report": "Report @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||||
"upload_area.title": "Drag & drop to upload",
|
"upload_area.title": "Drag & drop to upload",
|
||||||
"upload_button.label": "Добави медия",
|
"upload_button.label": "Добави медия",
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
"column_header.unpin": "No fixis",
|
"column_header.unpin": "No fixis",
|
||||||
"column_subheading.settings": "Configuració",
|
"column_subheading.settings": "Configuració",
|
||||||
"compose_form.direct_message_warning": "Aquest toot només serà enviat als usuaris esmentats. De totes maneres, els operadors de la teva o de qualsevol de les instàncies receptores poden inspeccionar aquest missatge.",
|
"compose_form.direct_message_warning": "Aquest toot només serà enviat als usuaris esmentats. De totes maneres, els operadors de la teva o de qualsevol de les instàncies receptores poden inspeccionar aquest missatge.",
|
||||||
"compose_form.direct_message_warning_learn_more": "Learn more",
|
"compose_form.direct_message_warning_learn_more": "Aprèn més",
|
||||||
"compose_form.hashtag_warning": "Aquest toot no es mostrarà en cap etiqueta ja que no està llistat. Només els toots públics poden ser cercats per etiqueta.",
|
"compose_form.hashtag_warning": "Aquest toot no es mostrarà en cap etiqueta ja que no està llistat. Només els toots públics poden ser cercats per etiqueta.",
|
||||||
"compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges a seguidors.",
|
"compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges a seguidors.",
|
||||||
"compose_form.lock_disclaimer.lock": "blocat",
|
"compose_form.lock_disclaimer.lock": "blocat",
|
||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Estàs realment, realment segur que vols blocar totalment {domain}? En la majoria dels casos blocar o silenciar uns pocs objectius és suficient i preferible.",
|
"confirmations.domain_block.message": "Estàs realment, realment segur que vols blocar totalment {domain}? En la majoria dels casos blocar o silenciar uns pocs objectius és suficient i preferible.",
|
||||||
"confirmations.mute.confirm": "Silencia",
|
"confirmations.mute.confirm": "Silencia",
|
||||||
"confirmations.mute.message": "Estàs segur que vols silenciar {name}?",
|
"confirmations.mute.message": "Estàs segur que vols silenciar {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Esborrar i refer",
|
||||||
|
"confirmations.redraft.message": "Estàs segur que vols esborrar aquesta publicació i tornar a redactar-la? Perderàs totes les respostes, impulsos i favorits.",
|
||||||
"confirmations.unfollow.confirm": "Deixa de seguir",
|
"confirmations.unfollow.confirm": "Deixa de seguir",
|
||||||
"confirmations.unfollow.message": "Estàs segur que vols deixar de seguir {name}?",
|
"confirmations.unfollow.message": "Estàs segur que vols deixar de seguir {name}?",
|
||||||
"embed.instructions": "Incrusta aquest estat al lloc web copiant el codi a continuació.",
|
"embed.instructions": "Incrusta aquest estat al lloc web copiant el codi a continuació.",
|
||||||
@@ -114,7 +116,7 @@
|
|||||||
"getting_started.documentation": "Documentation",
|
"getting_started.documentation": "Documentation",
|
||||||
"getting_started.heading": "Començant",
|
"getting_started.heading": "Començant",
|
||||||
"getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir o informar de problemes a GitHub a {github}.",
|
"getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir o informar de problemes a GitHub a {github}.",
|
||||||
"getting_started.terms": "Terms of service",
|
"getting_started.terms": "Termes del servei",
|
||||||
"home.column_settings.advanced": "Avançat",
|
"home.column_settings.advanced": "Avançat",
|
||||||
"home.column_settings.basic": "Bàsic",
|
"home.column_settings.basic": "Bàsic",
|
||||||
"home.column_settings.filter_regex": "Filtrar per expressió regular",
|
"home.column_settings.filter_regex": "Filtrar per expressió regular",
|
||||||
@@ -158,7 +160,7 @@
|
|||||||
"navigation_bar.blocks": "Usuaris bloquejats",
|
"navigation_bar.blocks": "Usuaris bloquejats",
|
||||||
"navigation_bar.community_timeline": "Línia de temps Local",
|
"navigation_bar.community_timeline": "Línia de temps Local",
|
||||||
"navigation_bar.direct": "Missatges directes",
|
"navigation_bar.direct": "Missatges directes",
|
||||||
"navigation_bar.discover": "Discover",
|
"navigation_bar.discover": "Descobreix",
|
||||||
"navigation_bar.domain_blocks": "Dominis ocults",
|
"navigation_bar.domain_blocks": "Dominis ocults",
|
||||||
"navigation_bar.edit_profile": "Editar perfil",
|
"navigation_bar.edit_profile": "Editar perfil",
|
||||||
"navigation_bar.favourites": "Favorits",
|
"navigation_bar.favourites": "Favorits",
|
||||||
@@ -172,7 +174,7 @@
|
|||||||
"navigation_bar.pins": "Toots fixats",
|
"navigation_bar.pins": "Toots fixats",
|
||||||
"navigation_bar.preferences": "Preferències",
|
"navigation_bar.preferences": "Preferències",
|
||||||
"navigation_bar.public_timeline": "Línia de temps federada",
|
"navigation_bar.public_timeline": "Línia de temps federada",
|
||||||
"navigation_bar.security": "Security",
|
"navigation_bar.security": "Seguretat",
|
||||||
"notification.favourite": "{name} ha afavorit el teu estat",
|
"notification.favourite": "{name} ha afavorit el teu estat",
|
||||||
"notification.follow": "{name} et segueix",
|
"notification.follow": "{name} et segueix",
|
||||||
"notification.mention": "{name} t'ha esmentat",
|
"notification.mention": "{name} t'ha esmentat",
|
||||||
@@ -188,7 +190,7 @@
|
|||||||
"notifications.column_settings.reblog": "Impulsos:",
|
"notifications.column_settings.reblog": "Impulsos:",
|
||||||
"notifications.column_settings.show": "Mostrar en la columna",
|
"notifications.column_settings.show": "Mostrar en la columna",
|
||||||
"notifications.column_settings.sound": "Reproduïr so",
|
"notifications.column_settings.sound": "Reproduïr so",
|
||||||
"notifications.group": "{count} notifications",
|
"notifications.group": "{count} notificacions",
|
||||||
"onboarding.done": "Fet",
|
"onboarding.done": "Fet",
|
||||||
"onboarding.next": "Següent",
|
"onboarding.next": "Següent",
|
||||||
"onboarding.page_five.public_timelines": "La línia de temps local mostra missatges públics de tothom de {domain}. La línia de temps federada mostra els missatges públics de tothom que la gent de {domain} segueix. Aquests són les línies de temps Públiques, una bona manera de descobrir noves persones.",
|
"onboarding.page_five.public_timelines": "La línia de temps local mostra missatges públics de tothom de {domain}. La línia de temps federada mostra els missatges públics de tothom que la gent de {domain} segueix. Aquests són les línies de temps Públiques, una bona manera de descobrir noves persones.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Impuls",
|
"status.reblog": "Impuls",
|
||||||
"status.reblog_private": "Impulsar a l'audiència original",
|
"status.reblog_private": "Impulsar a l'audiència original",
|
||||||
"status.reblogged_by": "{name} ha retootejat",
|
"status.reblogged_by": "{name} ha retootejat",
|
||||||
|
"status.redraft": "Esborrar i reescriure",
|
||||||
"status.reply": "Respondre",
|
"status.reply": "Respondre",
|
||||||
"status.replyAll": "Respondre al tema",
|
"status.replyAll": "Respondre al tema",
|
||||||
"status.report": "Informar sobre @{name}",
|
"status.report": "Informar sobre @{name}",
|
||||||
@@ -283,9 +286,7 @@
|
|||||||
"tabs_bar.search": "Cerca",
|
"tabs_bar.search": "Cerca",
|
||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, una {person} altres {people}} parlant",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "El vostre esborrany es perdrà si sortiu de Mastodon.",
|
"ui.beforeunload": "El vostre esborrany es perdrà si sortiu de Mastodon.",
|
||||||
"upload_area.title": "Arrossega i deixa anar per carregar",
|
"upload_area.title": "Arrossega i deixa anar per carregar",
|
||||||
"upload_button.label": "Afegir multimèdia",
|
"upload_button.label": "Afegir multimèdia",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Site sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà.",
|
"confirmations.domain_block.message": "Site sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà.",
|
||||||
"confirmations.mute.confirm": "Piattà",
|
"confirmations.mute.confirm": "Piattà",
|
||||||
"confirmations.mute.message": "Site sicuru·a che vulete piattà @{name}?",
|
"confirmations.mute.message": "Site sicuru·a che vulete piattà @{name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Disabbunassi",
|
"confirmations.unfollow.confirm": "Disabbunassi",
|
||||||
"confirmations.unfollow.message": "Site sicuru·a ch'ùn vulete più siguità @{name}?",
|
"confirmations.unfollow.message": "Site sicuru·a ch'ùn vulete più siguità @{name}?",
|
||||||
"embed.instructions": "Integrà stu statutu à u vostru situ cù u codice quì sottu.",
|
"embed.instructions": "Integrà stu statutu à u vostru situ cù u codice quì sottu.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Sparte",
|
"status.reblog": "Sparte",
|
||||||
"status.reblog_private": "Sparte à l'audienza uriginale",
|
"status.reblog_private": "Sparte à l'audienza uriginale",
|
||||||
"status.reblogged_by": "{name} hà spartutu",
|
"status.reblogged_by": "{name} hà spartutu",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Risponde",
|
"status.reply": "Risponde",
|
||||||
"status.replyAll": "Risponde à tutti",
|
"status.replyAll": "Risponde à tutti",
|
||||||
"status.report": "Palisà @{name}",
|
"status.report": "Palisà @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "A bruttacopia sarà persa s'ellu hè chjosu Mastodon.",
|
"ui.beforeunload": "A bruttacopia sarà persa s'ellu hè chjosu Mastodon.",
|
||||||
"upload_area.title": "Drag & drop per caricà un fugliale",
|
"upload_area.title": "Drag & drop per caricà un fugliale",
|
||||||
"upload_button.label": "Aghjunghje un media",
|
"upload_button.label": "Aghjunghje un media",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"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.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",
|
"confirmations.mute.confirm": "Stummschalten",
|
||||||
"confirmations.mute.message": "Bist du dir sicher, dass du {name} stummschalten möchtest?",
|
"confirmations.mute.message": "Bist du dir sicher, dass du {name} stummschalten möchtest?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Entfolgen",
|
"confirmations.unfollow.confirm": "Entfolgen",
|
||||||
"confirmations.unfollow.message": "Bist du dir sicher, dass du {name} entfolgen möchtest?",
|
"confirmations.unfollow.message": "Bist du dir sicher, dass du {name} entfolgen möchtest?",
|
||||||
"embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, indem du den folgenden Code einfügst.",
|
"embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, indem du den folgenden Code einfügst.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Teilen",
|
"status.reblog": "Teilen",
|
||||||
"status.reblog_private": "An das eigentliche Publikum teilen",
|
"status.reblog_private": "An das eigentliche Publikum teilen",
|
||||||
"status.reblogged_by": "{name} teilte",
|
"status.reblogged_by": "{name} teilte",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Antworten",
|
"status.reply": "Antworten",
|
||||||
"status.replyAll": "Auf Thread antworten",
|
"status.replyAll": "Auf Thread antworten",
|
||||||
"status.report": "@{name} melden",
|
"status.report": "@{name} melden",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Dein Entwurf geht verloren, wenn du Mastodon verlässt.",
|
"ui.beforeunload": "Dein Entwurf geht verloren, wenn du Mastodon verlässt.",
|
||||||
"upload_area.title": "Zum Hochladen hereinziehen",
|
"upload_area.title": "Zum Hochladen hereinziehen",
|
||||||
"upload_button.label": "Mediendatei hinzufügen",
|
"upload_button.label": "Mediendatei hinzufügen",
|
||||||
|
|||||||
@@ -219,6 +219,10 @@
|
|||||||
"defaultMessage": "Delete",
|
"defaultMessage": "Delete",
|
||||||
"id": "status.delete"
|
"id": "status.delete"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"defaultMessage": "Delete & re-draft",
|
||||||
|
"id": "status.redraft"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"defaultMessage": "Direct message @{name}",
|
"defaultMessage": "Direct message @{name}",
|
||||||
"id": "status.direct"
|
"id": "status.direct"
|
||||||
@@ -377,6 +381,14 @@
|
|||||||
"defaultMessage": "Are you sure you want to delete this status?",
|
"defaultMessage": "Are you sure you want to delete this status?",
|
||||||
"id": "confirmations.delete.message"
|
"id": "confirmations.delete.message"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"defaultMessage": "Delete & redraft",
|
||||||
|
"id": "confirmations.redraft.confirm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"defaultMessage": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
|
"id": "confirmations.redraft.message"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"defaultMessage": "Block",
|
"defaultMessage": "Block",
|
||||||
"id": "confirmations.block.confirm"
|
"id": "confirmations.block.confirm"
|
||||||
@@ -437,7 +449,7 @@
|
|||||||
"id": "confirmations.block.message"
|
"id": "confirmations.block.message"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"defaultMessage": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
"defaultMessage": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
|
||||||
"id": "confirmations.domain_block.message"
|
"id": "confirmations.domain_block.message"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -804,10 +816,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"descriptors": [
|
"descriptors": [
|
||||||
{
|
|
||||||
"defaultMessage": "Trending now",
|
|
||||||
"id": "trends.header"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"defaultMessage": "People",
|
"defaultMessage": "People",
|
||||||
"id": "search_results.accounts"
|
"id": "search_results.accounts"
|
||||||
@@ -1036,23 +1044,6 @@
|
|||||||
],
|
],
|
||||||
"path": "app/javascript/mastodon/features/follow_requests/index.json"
|
"path": "app/javascript/mastodon/features/follow_requests/index.json"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"descriptors": [
|
|
||||||
{
|
|
||||||
"defaultMessage": "Refresh",
|
|
||||||
"id": "trends.refresh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"defaultMessage": "Trending now",
|
|
||||||
"id": "trends.header"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"defaultMessage": "Load more",
|
|
||||||
"id": "status.load_more"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"path": "app/javascript/mastodon/features/getting_started/components/trends.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"descriptors": [
|
"descriptors": [
|
||||||
{
|
{
|
||||||
@@ -1507,6 +1498,10 @@
|
|||||||
"defaultMessage": "Delete",
|
"defaultMessage": "Delete",
|
||||||
"id": "status.delete"
|
"id": "status.delete"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"defaultMessage": "Delete & re-draft",
|
||||||
|
"id": "status.redraft"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"defaultMessage": "Direct message @{name}",
|
"defaultMessage": "Direct message @{name}",
|
||||||
"id": "status.direct"
|
"id": "status.direct"
|
||||||
@@ -1588,6 +1583,14 @@
|
|||||||
"defaultMessage": "Are you sure you want to delete this status?",
|
"defaultMessage": "Are you sure you want to delete this status?",
|
||||||
"id": "confirmations.delete.message"
|
"id": "confirmations.delete.message"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"defaultMessage": "Delete & redraft",
|
||||||
|
"id": "confirmations.redraft.confirm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"defaultMessage": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
|
"id": "confirmations.redraft.message"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"defaultMessage": "Block",
|
"defaultMessage": "Block",
|
||||||
"id": "confirmations.block.confirm"
|
"id": "confirmations.block.confirm"
|
||||||
@@ -1607,19 +1610,6 @@
|
|||||||
],
|
],
|
||||||
"path": "app/javascript/mastodon/features/status/index.json"
|
"path": "app/javascript/mastodon/features/status/index.json"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"descriptors": [
|
|
||||||
{
|
|
||||||
"defaultMessage": "Trending now",
|
|
||||||
"id": "trends.header"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"defaultMessage": "Refresh trends",
|
|
||||||
"id": "trends.refresh"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"path": "app/javascript/mastodon/features/trends/index.json"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"descriptors": [
|
"descriptors": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Σίγουρα θες να μπλοκάρεις ολόκληρο το {domain}; Συνήθως μερικά εστιασμένα μπλοκ ή αποσιωπήσεις επαρκούν και προτιμούνται.",
|
"confirmations.domain_block.message": "Σίγουρα θες να μπλοκάρεις ολόκληρο το {domain}; Συνήθως μερικά εστιασμένα μπλοκ ή αποσιωπήσεις επαρκούν και προτιμούνται.",
|
||||||
"confirmations.mute.confirm": "Αποσιώπηση",
|
"confirmations.mute.confirm": "Αποσιώπηση",
|
||||||
"confirmations.mute.message": "Σίγουρα θες να αποσιωπήσεις τον/την {name};",
|
"confirmations.mute.message": "Σίγουρα θες να αποσιωπήσεις τον/την {name};",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Διακοπή παρακολούθησης",
|
"confirmations.unfollow.confirm": "Διακοπή παρακολούθησης",
|
||||||
"confirmations.unfollow.message": "Σίγουρα θες να πάψεις να ακολουθείς τον/την {name};",
|
"confirmations.unfollow.message": "Σίγουρα θες να πάψεις να ακολουθείς τον/την {name};",
|
||||||
"embed.instructions": "Ενσωματώστε αυτή την κατάσταση στην ιστοσελίδα σας αντιγράφοντας τον παρακάτω κώδικα.",
|
"embed.instructions": "Ενσωματώστε αυτή την κατάσταση στην ιστοσελίδα σας αντιγράφοντας τον παρακάτω κώδικα.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Boost",
|
"status.reblog": "Boost",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} boosted",
|
"status.reblogged_by": "{name} boosted",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Reply",
|
"status.reply": "Reply",
|
||||||
"status.replyAll": "Reply to thread",
|
"status.replyAll": "Reply to thread",
|
||||||
"status.report": "Καταγγελία @{name}",
|
"status.report": "Καταγγελία @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||||
"upload_area.title": "Drag & drop to upload",
|
"upload_area.title": "Drag & drop to upload",
|
||||||
"upload_button.label": "Add media",
|
"upload_button.label": "Add media",
|
||||||
|
|||||||
@@ -84,9 +84,11 @@
|
|||||||
"confirmations.delete_list.confirm": "Delete",
|
"confirmations.delete_list.confirm": "Delete",
|
||||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
"confirmations.domain_block.confirm": "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.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
|
||||||
"confirmations.mute.confirm": "Mute",
|
"confirmations.mute.confirm": "Mute",
|
||||||
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Unfollow",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"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.instructions": "Embed this status on your website by copying the code below.",
|
||||||
@@ -269,6 +271,7 @@
|
|||||||
"status.reblog": "Boost",
|
"status.reblog": "Boost",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} boosted",
|
"status.reblogged_by": "{name} boosted",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Reply",
|
"status.reply": "Reply",
|
||||||
"status.replyAll": "Reply to thread",
|
"status.replyAll": "Reply to thread",
|
||||||
"status.report": "Report @{name}",
|
"status.report": "Report @{name}",
|
||||||
@@ -289,8 +292,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||||
"upload_area.title": "Drag & drop to upload",
|
"upload_area.title": "Drag & drop to upload",
|
||||||
"upload_button.label": "Add media",
|
"upload_button.label": "Add media",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas.",
|
"confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas.",
|
||||||
"confirmations.mute.confirm": "Silentigi",
|
"confirmations.mute.confirm": "Silentigi",
|
||||||
"confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?",
|
"confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Ne plu sekvi",
|
"confirmations.unfollow.confirm": "Ne plu sekvi",
|
||||||
"confirmations.unfollow.message": "Ĉu vi certas, ke vi volas ĉesi sekvi {name}?",
|
"confirmations.unfollow.message": "Ĉu vi certas, ke vi volas ĉesi sekvi {name}?",
|
||||||
"embed.instructions": "Enkorpigu ĉi tiun mesaĝon en vian retejon per kopio de la suba kodo.",
|
"embed.instructions": "Enkorpigu ĉi tiun mesaĝon en vian retejon per kopio de la suba kodo.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Diskonigi",
|
"status.reblog": "Diskonigi",
|
||||||
"status.reblog_private": "Diskonigi al la originala atentaro",
|
"status.reblog_private": "Diskonigi al la originala atentaro",
|
||||||
"status.reblogged_by": "{name} diskonigis",
|
"status.reblogged_by": "{name} diskonigis",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Respondi",
|
"status.reply": "Respondi",
|
||||||
"status.replyAll": "Respondi al la fadeno",
|
"status.replyAll": "Respondi al la fadeno",
|
||||||
"status.report": "Signali @{name}",
|
"status.report": "Signali @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Aŭdovidaĵoj",
|
"timeline.media": "Aŭdovidaĵoj",
|
||||||
"timeline.posts": "Mesaĝoj",
|
"timeline.posts": "Mesaĝoj",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, pluraj, unu {person} alia(j) {people}} parolas",
|
"trends.count_by_accounts": "{count} {rawCount, pluraj, unu {person} alia(j) {people}} parolas",
|
||||||
"trends.header": "Nun furoras",
|
|
||||||
"trends.refresh": "Aktualigi",
|
|
||||||
"ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.",
|
"ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.",
|
||||||
"upload_area.title": "Altreni kaj lasi por alŝuti",
|
"upload_area.title": "Altreni kaj lasi por alŝuti",
|
||||||
"upload_button.label": "Aldoni aŭdovidaĵon",
|
"upload_button.label": "Aldoni aŭdovidaĵon",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "¿Seguro de que quieres bloquear al dominio entero? En algunos casos es preferible bloquear o silenciar objetivos determinados.",
|
"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",
|
"confirmations.mute.confirm": "Silenciar",
|
||||||
"confirmations.mute.message": "¿Estás seguro de que quieres silenciar a {name}?",
|
"confirmations.mute.message": "¿Estás seguro de que quieres silenciar a {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Dejar de seguir",
|
"confirmations.unfollow.confirm": "Dejar de seguir",
|
||||||
"confirmations.unfollow.message": "¿Estás seguro de que quieres dejar de seguir a {name}?",
|
"confirmations.unfollow.message": "¿Estás seguro de que quieres dejar de seguir a {name}?",
|
||||||
"embed.instructions": "Añade este toot a tu sitio web con el siguiente código.",
|
"embed.instructions": "Añade este toot a tu sitio web con el siguiente código.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Retootear",
|
"status.reblog": "Retootear",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "Retooteado por {name}",
|
"status.reblogged_by": "Retooteado por {name}",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Responder",
|
"status.reply": "Responder",
|
||||||
"status.replyAll": "Responder al hilo",
|
"status.replyAll": "Responder al hilo",
|
||||||
"status.report": "Reportar",
|
"status.report": "Reportar",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.",
|
"ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.",
|
||||||
"upload_area.title": "Arrastra y suelta para subir",
|
"upload_area.title": "Arrastra y suelta para subir",
|
||||||
"upload_button.label": "Subir multimedia",
|
"upload_button.label": "Subir multimedia",
|
||||||
|
|||||||
@@ -10,17 +10,17 @@
|
|||||||
"account.follow": "Jarraitu",
|
"account.follow": "Jarraitu",
|
||||||
"account.followers": "Jarraitzaileak",
|
"account.followers": "Jarraitzaileak",
|
||||||
"account.follows": "Jarraitzen",
|
"account.follows": "Jarraitzen",
|
||||||
"account.follows_you": "Jarraitzen dizu",
|
"account.follows_you": "Jarraitzen zaitu",
|
||||||
"account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak",
|
"account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak",
|
||||||
"account.media": "Media",
|
"account.media": "Media",
|
||||||
"account.mention": "@{name} aipatu",
|
"account.mention": "Aipatu @{name}",
|
||||||
"account.moved_to": "{name} hona lekualdatu da:",
|
"account.moved_to": "{name} hona lekualdatu da:",
|
||||||
"account.mute": "Mututu @{name}",
|
"account.mute": "Mututu @{name}",
|
||||||
"account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak",
|
"account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak",
|
||||||
"account.muted": "Mutututa",
|
"account.muted": "Mutututa",
|
||||||
"account.posts": "Toot-ak",
|
"account.posts": "Toot-ak",
|
||||||
"account.posts_with_replies": "Toot eta erantzunak",
|
"account.posts_with_replies": "Toot eta erantzunak",
|
||||||
"account.report": "@{name} salatu",
|
"account.report": "Salatu @{name}",
|
||||||
"account.requested": "Onarpenaren zain. Klikatu jarraitzeko eskaera ezeztatzeko",
|
"account.requested": "Onarpenaren zain. Klikatu jarraitzeko eskaera ezeztatzeko",
|
||||||
"account.share": "@{name}(e)ren profila elkarbanatu",
|
"account.share": "@{name}(e)ren profila elkarbanatu",
|
||||||
"account.show_reblogs": "Erakutsi @{name}(r)en bultzadak",
|
"account.show_reblogs": "Erakutsi @{name}(r)en bultzadak",
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
"column.blocks": "Blokeatutako erabiltzaileak",
|
"column.blocks": "Blokeatutako erabiltzaileak",
|
||||||
"column.community": "Denbora-lerro lokala",
|
"column.community": "Denbora-lerro lokala",
|
||||||
"column.direct": "Mezu zuzenak",
|
"column.direct": "Mezu zuzenak",
|
||||||
"column.domain_blocks": "Domeinu ezkutuak",
|
"column.domain_blocks": "Ezkutatutako domeinuak",
|
||||||
"column.favourites": "Gogokoak",
|
"column.favourites": "Gogokoak",
|
||||||
"column.follow_requests": "Jarraitzeko eskariak",
|
"column.follow_requests": "Jarraitzeko eskariak",
|
||||||
"column.home": "Hasiera",
|
"column.home": "Hasiera",
|
||||||
@@ -67,22 +67,24 @@
|
|||||||
"compose_form.placeholder": "Zer duzu buruan?",
|
"compose_form.placeholder": "Zer duzu buruan?",
|
||||||
"compose_form.publish": "Toot",
|
"compose_form.publish": "Toot",
|
||||||
"compose_form.publish_loud": "{publish}!",
|
"compose_form.publish_loud": "{publish}!",
|
||||||
"compose_form.sensitive.marked": "Multimedia mingarri gisa markatu da",
|
"compose_form.sensitive.marked": "Multimedia edukia hunkigarri gisa markatu da",
|
||||||
"compose_form.sensitive.unmarked": "Multimedia ez da mingarri gisa markatu",
|
"compose_form.sensitive.unmarked": "Multimedia edukia ez da hunkigarri gisa markatu",
|
||||||
"compose_form.spoiler.marked": "Testua abisu batek ezkutatzen du",
|
"compose_form.spoiler.marked": "Testua abisu batek ezkutatzen du",
|
||||||
"compose_form.spoiler.unmarked": "Testua ez dago ezkutatuta",
|
"compose_form.spoiler.unmarked": "Testua ez dago ezkutatuta",
|
||||||
"compose_form.spoiler_placeholder": "Idatzi zure abisua hemen",
|
"compose_form.spoiler_placeholder": "Idatzi zure abisua hemen",
|
||||||
"confirmation_modal.cancel": "Utzi",
|
"confirmation_modal.cancel": "Utzi",
|
||||||
"confirmations.block.confirm": "Block",
|
"confirmations.block.confirm": "Block",
|
||||||
"confirmations.block.message": "Ziur {name} blokeatu nahi duzula?",
|
"confirmations.block.message": "Ziur {name} blokeatu nahi duzula?",
|
||||||
"confirmations.delete.confirm": "Delete",
|
"confirmations.delete.confirm": "Ezabatu",
|
||||||
"confirmations.delete.message": "Ziur mezu hau ezabatu nahi duzula?",
|
"confirmations.delete.message": "Ziur mezu hau ezabatu nahi duzula?",
|
||||||
"confirmations.delete_list.confirm": "Delete",
|
"confirmations.delete_list.confirm": "Ezabatu",
|
||||||
"confirmations.delete_list.message": "Ziur behin betiko ezabatu nahi duzula zerrenda hau?",
|
"confirmations.delete_list.message": "Ziur behin betiko ezabatu nahi duzula zerrenda hau?",
|
||||||
"confirmations.domain_block.confirm": "Ezkutatu domeinu osoa",
|
"confirmations.domain_block.confirm": "Ezkutatu domeinu osoa",
|
||||||
"confirmations.domain_block.message": "Ziur, erabat ziur, {domain} domeinu osoa blokeatu nahi duzula? Gehienetan gutxi batzuk blokeatu edo mututzearekin nahikoa da.",
|
"confirmations.domain_block.message": "Ziur, erabat ziur, {domain} domeinu osoa blokeatu nahi duzula? Gehienetan gutxi batzuk blokeatu edo mututzearekin nahikoa da.",
|
||||||
"confirmations.mute.confirm": "Mututu",
|
"confirmations.mute.confirm": "Mututu",
|
||||||
"confirmations.mute.message": "Ziur {name} mututu nahi duzula?",
|
"confirmations.mute.message": "Ziur {name} mututu nahi duzula?",
|
||||||
|
"confirmations.redraft.confirm": "Ezabatu eta berridatzi",
|
||||||
|
"confirmations.redraft.message": "Ziur mezu hau ezabatu eta berridatzi nahi duzula? Berari egindako erantzun, bultzada eta gogokoak galduko dira.",
|
||||||
"confirmations.unfollow.confirm": "Utzi jarraitzeari",
|
"confirmations.unfollow.confirm": "Utzi jarraitzeari",
|
||||||
"confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?",
|
"confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?",
|
||||||
"embed.instructions": "Txertatu mezu hau zure webgunean beheko kodea kopatuz.",
|
"embed.instructions": "Txertatu mezu hau zure webgunean beheko kodea kopatuz.",
|
||||||
@@ -112,7 +114,7 @@
|
|||||||
"follow_request.authorize": "Baimendu",
|
"follow_request.authorize": "Baimendu",
|
||||||
"follow_request.reject": "Ukatu",
|
"follow_request.reject": "Ukatu",
|
||||||
"getting_started.documentation": "Dokumentazioa",
|
"getting_started.documentation": "Dokumentazioa",
|
||||||
"getting_started.heading": "Abiapuntua",
|
"getting_started.heading": "Menua",
|
||||||
"getting_started.open_source_notice": "Mastodon software librea da. Ekarpenak egin ditzakezu edo akatsen berri eman GitHub bidez: {github}.",
|
"getting_started.open_source_notice": "Mastodon software librea da. Ekarpenak egin ditzakezu edo akatsen berri eman GitHub bidez: {github}.",
|
||||||
"getting_started.terms": "Erabilera baldintzak",
|
"getting_started.terms": "Erabilera baldintzak",
|
||||||
"home.column_settings.advanced": "Aurreratua",
|
"home.column_settings.advanced": "Aurreratua",
|
||||||
@@ -144,7 +146,7 @@
|
|||||||
"lightbox.previous": "Aurrekoa",
|
"lightbox.previous": "Aurrekoa",
|
||||||
"lists.account.add": "Gehitu zerrendara",
|
"lists.account.add": "Gehitu zerrendara",
|
||||||
"lists.account.remove": "Kendu zerrendatik",
|
"lists.account.remove": "Kendu zerrendatik",
|
||||||
"lists.delete": "Delete list",
|
"lists.delete": "Ezabatu zerrenda",
|
||||||
"lists.edit": "Editatu zerrenda",
|
"lists.edit": "Editatu zerrenda",
|
||||||
"lists.new.create": "Gehitu zerrenda",
|
"lists.new.create": "Gehitu zerrenda",
|
||||||
"lists.new.title_placeholder": "Zerrenda berriaren izena",
|
"lists.new.title_placeholder": "Zerrenda berriaren izena",
|
||||||
@@ -159,7 +161,7 @@
|
|||||||
"navigation_bar.community_timeline": "Denbora-lerro lokala",
|
"navigation_bar.community_timeline": "Denbora-lerro lokala",
|
||||||
"navigation_bar.direct": "Mezu zuzenak",
|
"navigation_bar.direct": "Mezu zuzenak",
|
||||||
"navigation_bar.discover": "Aurkitu",
|
"navigation_bar.discover": "Aurkitu",
|
||||||
"navigation_bar.domain_blocks": "Domeinu ezkutuak",
|
"navigation_bar.domain_blocks": "Ezkutatutako domeinuak",
|
||||||
"navigation_bar.edit_profile": "Aldatu profila",
|
"navigation_bar.edit_profile": "Aldatu profila",
|
||||||
"navigation_bar.favourites": "Gogokoak",
|
"navigation_bar.favourites": "Gogokoak",
|
||||||
"navigation_bar.follow_requests": "Jarraitzeko eskariak",
|
"navigation_bar.follow_requests": "Jarraitzeko eskariak",
|
||||||
@@ -248,7 +250,7 @@
|
|||||||
"status.block": "Block @{name}",
|
"status.block": "Block @{name}",
|
||||||
"status.cancel_reblog_private": "Kendu bultzada",
|
"status.cancel_reblog_private": "Kendu bultzada",
|
||||||
"status.cannot_reblog": "Mezu honi ezin zaio bultzada eman",
|
"status.cannot_reblog": "Mezu honi ezin zaio bultzada eman",
|
||||||
"status.delete": "Delete",
|
"status.delete": "Ezabatu",
|
||||||
"status.direct": "Mezu zuzena @{name}(r)i",
|
"status.direct": "Mezu zuzena @{name}(r)i",
|
||||||
"status.embed": "Txertatu",
|
"status.embed": "Txertatu",
|
||||||
"status.favourite": "Gogokoa",
|
"status.favourite": "Gogokoa",
|
||||||
@@ -264,11 +266,12 @@
|
|||||||
"status.reblog": "Bultzada",
|
"status.reblog": "Bultzada",
|
||||||
"status.reblog_private": "Bultzada jatorrizko hartzaileei",
|
"status.reblog_private": "Bultzada jatorrizko hartzaileei",
|
||||||
"status.reblogged_by": "{name}(r)en bultzada",
|
"status.reblogged_by": "{name}(r)en bultzada",
|
||||||
|
"status.redraft": "Ezabatu eta berridatzi",
|
||||||
"status.reply": "Erantzun",
|
"status.reply": "Erantzun",
|
||||||
"status.replyAll": "Erantzun harian",
|
"status.replyAll": "Erantzun harian",
|
||||||
"status.report": "Salatu @{name}",
|
"status.report": "Salatu @{name}",
|
||||||
"status.sensitive_toggle": "Egin klik ikusteko",
|
"status.sensitive_toggle": "Egin klik ikusteko",
|
||||||
"status.sensitive_warning": "Eduki mingarria",
|
"status.sensitive_warning": "Eduki hunkigarria",
|
||||||
"status.share": "Partekatu",
|
"status.share": "Partekatu",
|
||||||
"status.show_less": "Erakutsi gutxiago",
|
"status.show_less": "Erakutsi gutxiago",
|
||||||
"status.show_less_all": "Erakutsi denetarik gutxiago",
|
"status.show_less_all": "Erakutsi denetarik gutxiago",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toot-ak",
|
"timeline.posts": "Toot-ak",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} hitz egiten",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} hitz egiten",
|
||||||
"trends.header": "Joera orain",
|
|
||||||
"trends.refresh": "Freskatu",
|
|
||||||
"ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.",
|
"ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.",
|
||||||
"upload_area.title": "Arrastatu eta jaregin igotzeko",
|
"upload_area.title": "Arrastatu eta jaregin igotzeko",
|
||||||
"upload_button.label": "Gehitu multimedia",
|
"upload_button.label": "Gehitu multimedia",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "آیا جدی جدی میخواهید کل دامین {domain} را مسدود کنید؟ بیشتر وقتها مسدودکردن یا بیصداکردن چند حساب کاربری خاص کافی است و توصیه میشود.",
|
"confirmations.domain_block.message": "آیا جدی جدی میخواهید کل دامین {domain} را مسدود کنید؟ بیشتر وقتها مسدودکردن یا بیصداکردن چند حساب کاربری خاص کافی است و توصیه میشود.",
|
||||||
"confirmations.mute.confirm": "بیصدا کن",
|
"confirmations.mute.confirm": "بیصدا کن",
|
||||||
"confirmations.mute.message": "آیا واقعاً میخواهید {name} را بیصدا کنید؟",
|
"confirmations.mute.message": "آیا واقعاً میخواهید {name} را بیصدا کنید؟",
|
||||||
|
"confirmations.redraft.confirm": "پاککردن و بازنویسی",
|
||||||
|
"confirmations.redraft.message": "آیا واقعاً میخواهید این نوشته را پاک کنید و آن را از نو بنویسید؟ با این کار همهٔ پاسخها، بازبوقها، و پسندیدهشدنهای آن از دست میرود.",
|
||||||
"confirmations.unfollow.confirm": "لغو پیگیری",
|
"confirmations.unfollow.confirm": "لغو پیگیری",
|
||||||
"confirmations.unfollow.message": "آیا واقعاً میخواهید به پیگیری از {name} پایان دهید؟",
|
"confirmations.unfollow.message": "آیا واقعاً میخواهید به پیگیری از {name} پایان دهید؟",
|
||||||
"embed.instructions": "برای جاگذاری این نوشته در سایت خودتان، کد زیر را کپی کنید.",
|
"embed.instructions": "برای جاگذاری این نوشته در سایت خودتان، کد زیر را کپی کنید.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "بازبوقیدن",
|
"status.reblog": "بازبوقیدن",
|
||||||
"status.reblog_private": "بازبوق به مخاطبان اولیه",
|
"status.reblog_private": "بازبوق به مخاطبان اولیه",
|
||||||
"status.reblogged_by": "{name} بازبوقید",
|
"status.reblogged_by": "{name} بازبوقید",
|
||||||
|
"status.redraft": "پاککردن و بازنویسی",
|
||||||
"status.reply": "پاسخ",
|
"status.reply": "پاسخ",
|
||||||
"status.replyAll": "به نوشته پاسخ دهید",
|
"status.replyAll": "به نوشته پاسخ دهید",
|
||||||
"status.report": "گزارش دادن @{name}",
|
"status.report": "گزارش دادن @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "عکس و ویدیو",
|
"timeline.media": "عکس و ویدیو",
|
||||||
"timeline.posts": "بوقها",
|
"timeline.posts": "بوقها",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {نفر نوشته است} other {نفر نوشتهاند}}",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {نفر نوشته است} other {نفر نوشتهاند}}",
|
||||||
"trends.header": "موضوعات داغ",
|
|
||||||
"trends.refresh": "بهروزرسانی",
|
|
||||||
"ui.beforeunload": "اگر از ماستدون خارج شوید پیشنویس شما پاک خواهد شد.",
|
"ui.beforeunload": "اگر از ماستدون خارج شوید پیشنویس شما پاک خواهد شد.",
|
||||||
"upload_area.title": "برای بارگذاری به اینجا بکشید",
|
"upload_area.title": "برای بارگذاری به اینجا بکشید",
|
||||||
"upload_button.label": "افزودن تصویر",
|
"upload_button.label": "افزودن تصویر",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Haluatko aivan varmasti estää koko verkko-osoitteen {domain}? Useimmiten jokunen kohdistettu esto ja mykistys riittää, ja se on suositeltavampi tapa toimia.",
|
"confirmations.domain_block.message": "Haluatko aivan varmasti estää koko verkko-osoitteen {domain}? Useimmiten jokunen kohdistettu esto ja mykistys riittää, ja se on suositeltavampi tapa toimia.",
|
||||||
"confirmations.mute.confirm": "Mykistä",
|
"confirmations.mute.confirm": "Mykistä",
|
||||||
"confirmations.mute.message": "Haluatko varmasti mykistää käyttäjän {name}?",
|
"confirmations.mute.message": "Haluatko varmasti mykistää käyttäjän {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Lakkaa seuraamasta",
|
"confirmations.unfollow.confirm": "Lakkaa seuraamasta",
|
||||||
"confirmations.unfollow.message": "Haluatko varmasti lakata seuraamasta käyttäjää {name}?",
|
"confirmations.unfollow.message": "Haluatko varmasti lakata seuraamasta käyttäjää {name}?",
|
||||||
"embed.instructions": "Upota statuspäivitys sivullesi kopioimalla alla oleva koodi.",
|
"embed.instructions": "Upota statuspäivitys sivullesi kopioimalla alla oleva koodi.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Buustaa",
|
"status.reblog": "Buustaa",
|
||||||
"status.reblog_private": "Buustaa alkuperäiselle yleisölle",
|
"status.reblog_private": "Buustaa alkuperäiselle yleisölle",
|
||||||
"status.reblogged_by": "{name} buustasi",
|
"status.reblogged_by": "{name} buustasi",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Vastaa",
|
"status.reply": "Vastaa",
|
||||||
"status.replyAll": "Vastaa ketjuun",
|
"status.replyAll": "Vastaa ketjuun",
|
||||||
"status.report": "Raportoi @{name}",
|
"status.report": "Raportoi @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.",
|
"ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.",
|
||||||
"upload_area.title": "Lataa raahaamalla ja pudottamalla tähän",
|
"upload_area.title": "Lataa raahaamalla ja pudottamalla tähän",
|
||||||
"upload_button.label": "Lisää mediaa",
|
"upload_button.label": "Lisää mediaa",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"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.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",
|
"confirmations.mute.confirm": "Masquer",
|
||||||
"confirmations.mute.message": "Confirmez-vous le masquage de {name} ?",
|
"confirmations.mute.message": "Confirmez-vous le masquage de {name} ?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Ne plus suivre",
|
"confirmations.unfollow.confirm": "Ne plus suivre",
|
||||||
"confirmations.unfollow.message": "Voulez-vous arrêter de suivre {name} ?",
|
"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.instructions": "Intégrez ce statut à votre site en copiant le code ci-dessous.",
|
||||||
@@ -114,7 +116,7 @@
|
|||||||
"getting_started.documentation": "Documentation",
|
"getting_started.documentation": "Documentation",
|
||||||
"getting_started.heading": "Pour commencer",
|
"getting_started.heading": "Pour commencer",
|
||||||
"getting_started.open_source_notice": "Mastodon est un logiciel libre. Vous pouvez contribuer et envoyer vos commentaires et rapports de bogues via {github} sur GitHub.",
|
"getting_started.open_source_notice": "Mastodon est un logiciel libre. Vous pouvez contribuer et envoyer vos commentaires et rapports de bogues via {github} sur GitHub.",
|
||||||
"getting_started.terms": "Terms of service",
|
"getting_started.terms": "Conditions d’utilisation",
|
||||||
"home.column_settings.advanced": "Avancé",
|
"home.column_settings.advanced": "Avancé",
|
||||||
"home.column_settings.basic": "Basique",
|
"home.column_settings.basic": "Basique",
|
||||||
"home.column_settings.filter_regex": "Filtrer avec une expression rationnelle",
|
"home.column_settings.filter_regex": "Filtrer avec une expression rationnelle",
|
||||||
@@ -158,7 +160,7 @@
|
|||||||
"navigation_bar.blocks": "Comptes bloqués",
|
"navigation_bar.blocks": "Comptes bloqués",
|
||||||
"navigation_bar.community_timeline": "Fil public local",
|
"navigation_bar.community_timeline": "Fil public local",
|
||||||
"navigation_bar.direct": "Messages directs",
|
"navigation_bar.direct": "Messages directs",
|
||||||
"navigation_bar.discover": "Discover",
|
"navigation_bar.discover": "Découvrir",
|
||||||
"navigation_bar.domain_blocks": "Domaines cachés",
|
"navigation_bar.domain_blocks": "Domaines cachés",
|
||||||
"navigation_bar.edit_profile": "Modifier le profil",
|
"navigation_bar.edit_profile": "Modifier le profil",
|
||||||
"navigation_bar.favourites": "Favoris",
|
"navigation_bar.favourites": "Favoris",
|
||||||
@@ -172,7 +174,7 @@
|
|||||||
"navigation_bar.pins": "Pouets épinglés",
|
"navigation_bar.pins": "Pouets épinglés",
|
||||||
"navigation_bar.preferences": "Préférences",
|
"navigation_bar.preferences": "Préférences",
|
||||||
"navigation_bar.public_timeline": "Fil public global",
|
"navigation_bar.public_timeline": "Fil public global",
|
||||||
"navigation_bar.security": "Security",
|
"navigation_bar.security": "Sécurité",
|
||||||
"notification.favourite": "{name} a ajouté à ses favoris :",
|
"notification.favourite": "{name} a ajouté à ses favoris :",
|
||||||
"notification.follow": "{name} vous suit",
|
"notification.follow": "{name} vous suit",
|
||||||
"notification.mention": "{name} vous a mentionné⋅e :",
|
"notification.mention": "{name} vous a mentionné⋅e :",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Partager",
|
"status.reblog": "Partager",
|
||||||
"status.reblog_private": "Booster vers l'audience originale",
|
"status.reblog_private": "Booster vers l'audience originale",
|
||||||
"status.reblogged_by": "{name} a partagé :",
|
"status.reblogged_by": "{name} a partagé :",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Répondre",
|
"status.reply": "Répondre",
|
||||||
"status.replyAll": "Répondre au fil",
|
"status.replyAll": "Répondre au fil",
|
||||||
"status.report": "Signaler @{name}",
|
"status.report": "Signaler @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Pouets",
|
"timeline.posts": "Pouets",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
|
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
|
||||||
"upload_area.title": "Glissez et déposez pour envoyer",
|
"upload_area.title": "Glissez et déposez pour envoyer",
|
||||||
"upload_button.label": "Joindre un média",
|
"upload_button.label": "Joindre un média",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"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.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.confirm": "Acalar",
|
||||||
"confirmations.mute.message": "Está segura de que quere acalar a {name}?",
|
"confirmations.mute.message": "Está segura de que quere acalar a {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||||
"confirmations.unfollow.message": "Quere deixar de seguir a {name}?",
|
"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.instructions": "Copie o código inferior para incrustar no seu sitio web este estado.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Promover",
|
"status.reblog": "Promover",
|
||||||
"status.reblog_private": "Promover a audiencia orixinal",
|
"status.reblog_private": "Promover a audiencia orixinal",
|
||||||
"status.reblogged_by": "{name} promoveu",
|
"status.reblogged_by": "{name} promoveu",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Resposta",
|
"status.reply": "Resposta",
|
||||||
"status.replyAll": "Resposta a conversa",
|
"status.replyAll": "Resposta a conversa",
|
||||||
"status.report": "Informar @{name}",
|
"status.report": "Informar @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "O borrador perderase se sae de Mastodon.",
|
"ui.beforeunload": "O borrador perderase se sae de Mastodon.",
|
||||||
"upload_area.title": "Arrastre e solte para subir",
|
"upload_area.title": "Arrastre e solte para subir",
|
||||||
"upload_button.label": "Engadir medios",
|
"upload_button.label": "Engadir medios",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "באמת באמת לחסום את כל קהילת {domain}? ברב המקרים השתקות נבחרות של מספר משתמשים מסויימים צריכה להספיק.",
|
"confirmations.domain_block.message": "באמת באמת לחסום את כל קהילת {domain}? ברב המקרים השתקות נבחרות של מספר משתמשים מסויימים צריכה להספיק.",
|
||||||
"confirmations.mute.confirm": "להשתיק",
|
"confirmations.mute.confirm": "להשתיק",
|
||||||
"confirmations.mute.message": "להשתיק את {name}?",
|
"confirmations.mute.message": "להשתיק את {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "להפסיק מעקב",
|
"confirmations.unfollow.confirm": "להפסיק מעקב",
|
||||||
"confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?",
|
"confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?",
|
||||||
"embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.",
|
"embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "הדהוד",
|
"status.reblog": "הדהוד",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "הודהד על ידי {name}",
|
"status.reblogged_by": "הודהד על ידי {name}",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "תגובה",
|
"status.reply": "תגובה",
|
||||||
"status.replyAll": "תגובה לכולם",
|
"status.replyAll": "תגובה לכולם",
|
||||||
"status.report": "דיווח על @{name}",
|
"status.report": "דיווח על @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.",
|
"ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.",
|
||||||
"upload_area.title": "ניתן להעלות על ידי Drag & drop",
|
"upload_area.title": "ניתן להעלות על ידי Drag & drop",
|
||||||
"upload_button.label": "הוספת מדיה",
|
"upload_button.label": "הוספת מדיה",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"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.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",
|
"confirmations.mute.confirm": "Utišaj",
|
||||||
"confirmations.mute.message": "Jesi li siguran da želiš utišati {name}?",
|
"confirmations.mute.message": "Jesi li siguran da želiš utišati {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Unfollow",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"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.instructions": "Embed this status on your website by copying the code below.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Podigni",
|
"status.reblog": "Podigni",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} je podigao",
|
"status.reblogged_by": "{name} je podigao",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Odgovori",
|
"status.reply": "Odgovori",
|
||||||
"status.replyAll": "Odgovori na temu",
|
"status.replyAll": "Odgovori na temu",
|
||||||
"status.report": "Prijavi @{name}",
|
"status.report": "Prijavi @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||||
"upload_area.title": "Povuci i spusti kako bi uploadao",
|
"upload_area.title": "Povuci i spusti kako bi uploadao",
|
||||||
"upload_button.label": "Dodaj media",
|
"upload_button.label": "Dodaj media",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Nagyon biztos abban, hogy le szeretné tiltani az egész {domain}-t? A legtöbb esetben néhány célszerű tiltás vagy némítás elegendő és kívánatosabb megoldás.",
|
"confirmations.domain_block.message": "Nagyon biztos abban, hogy le szeretné tiltani az egész {domain}-t? A legtöbb esetben néhány célszerű tiltás vagy némítás elegendő és kívánatosabb megoldás.",
|
||||||
"confirmations.mute.confirm": "Némít",
|
"confirmations.mute.confirm": "Némít",
|
||||||
"confirmations.mute.message": "Biztos benne, hogy némítani szeretné {name}?",
|
"confirmations.mute.message": "Biztos benne, hogy némítani szeretné {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Követés visszavonása",
|
"confirmations.unfollow.confirm": "Követés visszavonása",
|
||||||
"confirmations.unfollow.message": "Biztos benne, hogy vissza szeretné vonni {name} követését?",
|
"confirmations.unfollow.message": "Biztos benne, hogy vissza szeretné vonni {name} követését?",
|
||||||
"embed.instructions": "Ágyazza be ezen státuszt weboldalába az alábbi kód másolásával.",
|
"embed.instructions": "Ágyazza be ezen státuszt weboldalába az alábbi kód másolásával.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Reblog",
|
"status.reblog": "Reblog",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} reblogolta",
|
"status.reblogged_by": "{name} reblogolta",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Válasz",
|
"status.reply": "Válasz",
|
||||||
"status.replyAll": "Válaszolj a beszélgetésre",
|
"status.replyAll": "Válaszolj a beszélgetésre",
|
||||||
"status.report": "Report @{name}",
|
"status.report": "Report @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "A piszkozata el fog vesztődni ha elhagyja Mastodon-t.",
|
"ui.beforeunload": "A piszkozata el fog vesztődni ha elhagyja Mastodon-t.",
|
||||||
"upload_area.title": "Húzza ide a feltöltéshez",
|
"upload_area.title": "Húzza ide a feltöltéshez",
|
||||||
"upload_button.label": "Média hozzáadása",
|
"upload_button.label": "Média hozzáadása",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Հաստատ֊հաստա՞տ վստահ ես, որ ուզում ես արգելափակել ամբողջ {domain} տիրույթը։ Սովորաբար մի երկու թիրախավորված արգելափակում կամ լռեցում բավական է ու նախընտրելի։",
|
"confirmations.domain_block.message": "Հաստատ֊հաստա՞տ վստահ ես, որ ուզում ես արգելափակել ամբողջ {domain} տիրույթը։ Սովորաբար մի երկու թիրախավորված արգելափակում կամ լռեցում բավական է ու նախընտրելի։",
|
||||||
"confirmations.mute.confirm": "Լռեցնել",
|
"confirmations.mute.confirm": "Լռեցնել",
|
||||||
"confirmations.mute.message": "Վստա՞հ ես, որ ուզում ես {name}֊ին լռեցնել։",
|
"confirmations.mute.message": "Վստա՞հ ես, որ ուզում ես {name}֊ին լռեցնել։",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Ապահետեւել",
|
"confirmations.unfollow.confirm": "Ապահետեւել",
|
||||||
"confirmations.unfollow.message": "Վստա՞հ ես, որ ուզում ես այլեւս չհետեւել {name}֊ին։",
|
"confirmations.unfollow.message": "Վստա՞հ ես, որ ուզում ես այլեւս չհետեւել {name}֊ին։",
|
||||||
"embed.instructions": "Այս թութը քո կայքում ներդնելու համար կարող ես պատճենել ներքոհիշյալ կոդը։",
|
"embed.instructions": "Այս թութը քո կայքում ներդնելու համար կարող ես պատճենել ներքոհիշյալ կոդը։",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Տարածել",
|
"status.reblog": "Տարածել",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} տարածել է",
|
"status.reblogged_by": "{name} տարածել է",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Պատասխանել",
|
"status.reply": "Պատասխանել",
|
||||||
"status.replyAll": "Պատասխանել թելին",
|
"status.replyAll": "Պատասխանել թելին",
|
||||||
"status.report": "Բողոքել @{name}֊ից",
|
"status.report": "Բողոքել @{name}֊ից",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Քո սեւագիրը կկորի, եթե լքես Մաստոդոնը։",
|
"ui.beforeunload": "Քո սեւագիրը կկորի, եթե լքես Մաստոդոնը։",
|
||||||
"upload_area.title": "Քաշիր ու նետիր՝ վերբեռնելու համար",
|
"upload_area.title": "Քաշիր ու նետիր՝ վերբեռնելու համար",
|
||||||
"upload_button.label": "Ավելացնել մեդիա",
|
"upload_button.label": "Ավելացնել մեդիա",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Apakah anda benar benar yakin untuk memblokir keseluruhan {domain}? Dalam kasus tertentu beberapa pemblokiran atau penyembunyian lebih baik.",
|
"confirmations.domain_block.message": "Apakah anda benar benar yakin untuk memblokir keseluruhan {domain}? Dalam kasus tertentu beberapa pemblokiran atau penyembunyian lebih baik.",
|
||||||
"confirmations.mute.confirm": "Bisukan",
|
"confirmations.mute.confirm": "Bisukan",
|
||||||
"confirmations.mute.message": "Apa anda yakin ingin membisukan {name}?",
|
"confirmations.mute.message": "Apa anda yakin ingin membisukan {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Berhenti mengikuti",
|
"confirmations.unfollow.confirm": "Berhenti mengikuti",
|
||||||
"confirmations.unfollow.message": "Apakah anda ingin berhenti mengikuti {name}?",
|
"confirmations.unfollow.message": "Apakah anda ingin berhenti mengikuti {name}?",
|
||||||
"embed.instructions": "Sematkan status ini di website anda dengan menyalin kode di bawah ini.",
|
"embed.instructions": "Sematkan status ini di website anda dengan menyalin kode di bawah ini.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Boost",
|
"status.reblog": "Boost",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "di-boost {name}",
|
"status.reblogged_by": "di-boost {name}",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Balas",
|
"status.reply": "Balas",
|
||||||
"status.replyAll": "Balas ke semua",
|
"status.replyAll": "Balas ke semua",
|
||||||
"status.report": "Laporkan @{name}",
|
"status.report": "Laporkan @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Mastodon.",
|
"ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Mastodon.",
|
||||||
"upload_area.title": "Seret & lepaskan untuk mengunggah",
|
"upload_area.title": "Seret & lepaskan untuk mengunggah",
|
||||||
"upload_button.label": "Tambahkan media",
|
"upload_button.label": "Tambahkan media",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
"confirmations.domain_block.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.confirm": "Mute",
|
||||||
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Unfollow",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"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.instructions": "Embed this status on your website by copying the code below.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Repetar",
|
"status.reblog": "Repetar",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} repetita",
|
"status.reblogged_by": "{name} repetita",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Respondar",
|
"status.reply": "Respondar",
|
||||||
"status.replyAll": "Respondar a filo",
|
"status.replyAll": "Respondar a filo",
|
||||||
"status.report": "Denuncar @{name}",
|
"status.report": "Denuncar @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||||
"upload_area.title": "Tranar faligar por kargar",
|
"upload_area.title": "Tranar faligar por kargar",
|
||||||
"upload_button.label": "Adjuntar kontenajo",
|
"upload_button.label": "Adjuntar kontenajo",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Sei davvero sicuro che vuoi bloccare l'intero {domain}? Nella maggior parte dei casi, pochi blocchi o silenziamenti mirati sono sufficienti e preferibili.",
|
"confirmations.domain_block.message": "Sei davvero sicuro che vuoi bloccare l'intero {domain}? Nella maggior parte dei casi, pochi blocchi o silenziamenti mirati sono sufficienti e preferibili.",
|
||||||
"confirmations.mute.confirm": "Silenzia",
|
"confirmations.mute.confirm": "Silenzia",
|
||||||
"confirmations.mute.message": "Sei sicuro di voler silenziare {name}?",
|
"confirmations.mute.message": "Sei sicuro di voler silenziare {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Smetti di seguire",
|
"confirmations.unfollow.confirm": "Smetti di seguire",
|
||||||
"confirmations.unfollow.message": "Sei sicuro che non vuoi più seguire {name}?",
|
"confirmations.unfollow.message": "Sei sicuro che non vuoi più seguire {name}?",
|
||||||
"embed.instructions": "Inserisci questo status nel tuo sito copiando il codice qui sotto.",
|
"embed.instructions": "Inserisci questo status nel tuo sito copiando il codice qui sotto.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Condividi",
|
"status.reblog": "Condividi",
|
||||||
"status.reblog_private": "Condividi con i destinatari iniziali",
|
"status.reblog_private": "Condividi con i destinatari iniziali",
|
||||||
"status.reblogged_by": "{name} ha condiviso",
|
"status.reblogged_by": "{name} ha condiviso",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Rispondi",
|
"status.reply": "Rispondi",
|
||||||
"status.replyAll": "Rispondi alla conversazione",
|
"status.replyAll": "Rispondi alla conversazione",
|
||||||
"status.report": "Segnala @{name}",
|
"status.report": "Segnala @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "La bozza andrà persa se esci da Mastodon.",
|
"ui.beforeunload": "La bozza andrà persa se esci da Mastodon.",
|
||||||
"upload_area.title": "Trascina per caricare",
|
"upload_area.title": "Trascina per caricare",
|
||||||
"upload_button.label": "Aggiungi file multimediale",
|
"upload_button.label": "Aggiungi file multimediale",
|
||||||
|
|||||||
@@ -87,6 +87,8 @@
|
|||||||
"confirmations.domain_block.message": "本当に{domain}全体を非表示にしますか? 多くの場合は個別にブロックやミュートするだけで充分であり、また好ましいです。",
|
"confirmations.domain_block.message": "本当に{domain}全体を非表示にしますか? 多くの場合は個別にブロックやミュートするだけで充分であり、また好ましいです。",
|
||||||
"confirmations.mute.confirm": "ミュート",
|
"confirmations.mute.confirm": "ミュート",
|
||||||
"confirmations.mute.message": "本当に{name}さんをミュートしますか?",
|
"confirmations.mute.message": "本当に{name}さんをミュートしますか?",
|
||||||
|
"confirmations.redraft.confirm": "削除し下書きに戻す",
|
||||||
|
"confirmations.redraft.message": "本当にこのトゥートを削除し下書きに戻しますか?このトゥートへの全ての返信やブースト、お気に入り登録を失うことになります。",
|
||||||
"confirmations.unfollow.confirm": "フォロー解除",
|
"confirmations.unfollow.confirm": "フォロー解除",
|
||||||
"confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
|
"confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
|
||||||
"embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。",
|
"embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。",
|
||||||
@@ -269,6 +271,7 @@
|
|||||||
"status.reblog": "ブースト",
|
"status.reblog": "ブースト",
|
||||||
"status.reblog_private": "ブースト",
|
"status.reblog_private": "ブースト",
|
||||||
"status.reblogged_by": "{name}さんがブースト",
|
"status.reblogged_by": "{name}さんがブースト",
|
||||||
|
"status.redraft": "削除し下書きに戻す",
|
||||||
"status.reply": "返信",
|
"status.reply": "返信",
|
||||||
"status.replyAll": "全員に返信",
|
"status.replyAll": "全員に返信",
|
||||||
"status.report": "@{name}さんを通報",
|
"status.report": "@{name}さんを通報",
|
||||||
@@ -289,8 +292,6 @@
|
|||||||
"timeline.media": "メディア",
|
"timeline.media": "メディア",
|
||||||
"timeline.posts": "投稿",
|
"timeline.posts": "投稿",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {人} other {人}} がトゥート",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {人} other {人}} がトゥート",
|
||||||
"trends.header": "トレンドタグ",
|
|
||||||
"trends.refresh": "更新",
|
|
||||||
"ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。",
|
"ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。",
|
||||||
"upload_area.title": "ドラッグ&ドロップでアップロード",
|
"upload_area.title": "ドラッグ&ドロップでアップロード",
|
||||||
"upload_button.label": "メディアを追加",
|
"upload_button.label": "メディアを追加",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "정말로 {domain} 전체를 숨기시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다.",
|
"confirmations.domain_block.message": "정말로 {domain} 전체를 숨기시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다.",
|
||||||
"confirmations.mute.confirm": "뮤트",
|
"confirmations.mute.confirm": "뮤트",
|
||||||
"confirmations.mute.message": "정말로 {name}를 뮤트하시겠습니까?",
|
"confirmations.mute.message": "정말로 {name}를 뮤트하시겠습니까?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "언팔로우",
|
"confirmations.unfollow.confirm": "언팔로우",
|
||||||
"confirmations.unfollow.message": "정말로 {name}를 언팔로우하시겠습니까?",
|
"confirmations.unfollow.message": "정말로 {name}를 언팔로우하시겠습니까?",
|
||||||
"embed.instructions": "아래의 코드를 복사하여 대화를 원하는 곳으로 공유하세요.",
|
"embed.instructions": "아래의 코드를 복사하여 대화를 원하는 곳으로 공유하세요.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "부스트",
|
"status.reblog": "부스트",
|
||||||
"status.reblog_private": "원래의 수신자들에게 부스트",
|
"status.reblog_private": "원래의 수신자들에게 부스트",
|
||||||
"status.reblogged_by": "{name}님이 부스트 했습니다",
|
"status.reblogged_by": "{name}님이 부스트 했습니다",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "답장",
|
"status.reply": "답장",
|
||||||
"status.replyAll": "전원에게 답장",
|
"status.replyAll": "전원에게 답장",
|
||||||
"status.report": "신고",
|
"status.report": "신고",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.",
|
"ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.",
|
||||||
"upload_area.title": "드래그 & 드롭으로 업로드",
|
"upload_area.title": "드래그 & 드롭으로 업로드",
|
||||||
"upload_button.label": "미디어 추가",
|
"upload_button.label": "미디어 추가",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Weet je het echt heel erg zeker dat je alles van {domain} wil negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en gepaster.",
|
"confirmations.domain_block.message": "Weet je het echt heel erg zeker dat je alles van {domain} wil negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en gepaster.",
|
||||||
"confirmations.mute.confirm": "Negeren",
|
"confirmations.mute.confirm": "Negeren",
|
||||||
"confirmations.mute.message": "Weet je het zeker dat je {name} wilt negeren?",
|
"confirmations.mute.message": "Weet je het zeker dat je {name} wilt negeren?",
|
||||||
|
"confirmations.redraft.confirm": "Verwijderen en herschrijven",
|
||||||
|
"confirmations.redraft.message": "Weet je zeker dat je deze toot wilt verwijderen en herschrijven? Je verliest wel alle reacties, boosts en favorieten.",
|
||||||
"confirmations.unfollow.confirm": "Ontvolgen",
|
"confirmations.unfollow.confirm": "Ontvolgen",
|
||||||
"confirmations.unfollow.message": "Weet je het zeker dat je {name} wilt ontvolgen?",
|
"confirmations.unfollow.message": "Weet je het zeker dat je {name} wilt ontvolgen?",
|
||||||
"embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.",
|
"embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Boost",
|
"status.reblog": "Boost",
|
||||||
"status.reblog_private": "Boost naar oorspronkelijke ontvangers",
|
"status.reblog_private": "Boost naar oorspronkelijke ontvangers",
|
||||||
"status.reblogged_by": "{name} boostte",
|
"status.reblogged_by": "{name} boostte",
|
||||||
|
"status.redraft": "Verwijderen en herschrijven",
|
||||||
"status.reply": "Reageren",
|
"status.reply": "Reageren",
|
||||||
"status.replyAll": "Reageer op iedereen",
|
"status.replyAll": "Reageer op iedereen",
|
||||||
"status.report": "Rapporteer @{name}",
|
"status.report": "Rapporteer @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {persoon praat} other {mensen praten}} hierover",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {persoon praat} other {mensen praten}} hierover",
|
||||||
"trends.header": "Trends",
|
|
||||||
"trends.refresh": "Vernieuwen",
|
|
||||||
"ui.beforeunload": "Je concept zal verloren gaan als je Mastodon verlaat.",
|
"ui.beforeunload": "Je concept zal verloren gaan als je Mastodon verlaat.",
|
||||||
"upload_area.title": "Hierin slepen om te uploaden",
|
"upload_area.title": "Hierin slepen om te uploaden",
|
||||||
"upload_button.label": "Media toevoegen",
|
"upload_button.label": "Media toevoegen",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"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.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.confirm": "Demp",
|
||||||
"confirmations.mute.message": "Er du sikker på at du vil dempe {name}?",
|
"confirmations.mute.message": "Er du sikker på at du vil dempe {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Slutt å følge",
|
"confirmations.unfollow.confirm": "Slutt å følge",
|
||||||
"confirmations.unfollow.message": "Er du sikker på at du vil slutte å følge {name}?",
|
"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.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Fremhev",
|
"status.reblog": "Fremhev",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "Fremhevd av {name}",
|
"status.reblogged_by": "Fremhevd av {name}",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Svar",
|
"status.reply": "Svar",
|
||||||
"status.replyAll": "Svar til samtale",
|
"status.replyAll": "Svar til samtale",
|
||||||
"status.report": "Rapporter @{name}",
|
"status.report": "Rapporter @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.",
|
"ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.",
|
||||||
"upload_area.title": "Dra og slipp for å laste opp",
|
"upload_area.title": "Dra og slipp for å laste opp",
|
||||||
"upload_button.label": "Legg til media",
|
"upload_button.label": "Legg til media",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Volètz vertadièrament blocar complètament {domain} ? De còps cal pas que blocar o rescondre unas personas solament.",
|
"confirmations.domain_block.message": "Volètz vertadièrament blocar complètament {domain} ? De còps cal pas que blocar o rescondre unas personas solament.",
|
||||||
"confirmations.mute.confirm": "Rescondre",
|
"confirmations.mute.confirm": "Rescondre",
|
||||||
"confirmations.mute.message": "Sètz segur de voler rescondre {name} ?",
|
"confirmations.mute.message": "Sètz segur de voler rescondre {name} ?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Quitar de sègre",
|
"confirmations.unfollow.confirm": "Quitar de sègre",
|
||||||
"confirmations.unfollow.message": "Volètz vertadièrament quitar de sègre {name} ?",
|
"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.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Partejar",
|
"status.reblog": "Partejar",
|
||||||
"status.reblog_private": "Partejar a l’audiéncia d’origina",
|
"status.reblog_private": "Partejar a l’audiéncia d’origina",
|
||||||
"status.reblogged_by": "{name} a partejat",
|
"status.reblogged_by": "{name} a partejat",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Respondre",
|
"status.reply": "Respondre",
|
||||||
"status.replyAll": "Respondre a la conversacion",
|
"status.replyAll": "Respondre a la conversacion",
|
||||||
"status.report": "Senhalar @{name}",
|
"status.report": "Senhalar @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Tuts",
|
"timeline.posts": "Tuts",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} ne charra other {people}} ne charran",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} ne charra other {people}} ne charran",
|
||||||
"trends.header": "Tendéncia actuala",
|
|
||||||
"trends.refresh": "Actualizar",
|
|
||||||
"ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Mastodon.",
|
"ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Mastodon.",
|
||||||
"upload_area.title": "Lisatz e depausatz per mandar",
|
"upload_area.title": "Lisatz e depausatz per mandar",
|
||||||
"upload_button.label": "Ajustar un mèdia",
|
"upload_button.label": "Ajustar un mèdia",
|
||||||
|
|||||||
@@ -87,6 +87,8 @@
|
|||||||
"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.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",
|
"confirmations.mute.confirm": "Wycisz",
|
||||||
"confirmations.mute.message": "Czy na pewno chcesz wyciszyć {name}?",
|
"confirmations.mute.message": "Czy na pewno chcesz wyciszyć {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Usuń i przeredaguj",
|
||||||
|
"confirmations.redraft.message": "Czy na pewno chcesz usunąć i przeredagować ten wpis? Utracisz wszystkie odpowiedzi, podbicia i polubienia dotyczące go.",
|
||||||
"confirmations.unfollow.confirm": "Przestań śledzić",
|
"confirmations.unfollow.confirm": "Przestań śledzić",
|
||||||
"confirmations.unfollow.message": "Czy na pewno zamierzasz przestać śledzić {name}?",
|
"confirmations.unfollow.message": "Czy na pewno zamierzasz przestać śledzić {name}?",
|
||||||
"embed.instructions": "Osadź ten wpis na swojej stronie wklejając poniższy kod.",
|
"embed.instructions": "Osadź ten wpis na swojej stronie wklejając poniższy kod.",
|
||||||
@@ -269,6 +271,7 @@
|
|||||||
"status.reblog": "Podbij",
|
"status.reblog": "Podbij",
|
||||||
"status.reblog_private": "Podbij dla odbiorców oryginalnego wpisu",
|
"status.reblog_private": "Podbij dla odbiorców oryginalnego wpisu",
|
||||||
"status.reblogged_by": "{name} podbił",
|
"status.reblogged_by": "{name} podbił",
|
||||||
|
"status.redraft": "Usuń i przeredaguj",
|
||||||
"status.reply": "Odpowiedz",
|
"status.reply": "Odpowiedz",
|
||||||
"status.replyAll": "Odpowiedz na wątek",
|
"status.replyAll": "Odpowiedz na wątek",
|
||||||
"status.report": "Zgłoś @{name}",
|
"status.report": "Zgłoś @{name}",
|
||||||
@@ -289,8 +292,6 @@
|
|||||||
"timeline.media": "Zawartość multimedialna",
|
"timeline.media": "Zawartość multimedialna",
|
||||||
"timeline.posts": "Wpisy",
|
"timeline.posts": "Wpisy",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {osoba rozmawia} few {osoby rozmawiają} other {osób rozmawia}} o tym",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {osoba rozmawia} few {osoby rozmawiają} other {osób rozmawia}} o tym",
|
||||||
"trends.header": "Na czasie",
|
|
||||||
"trends.refresh": "Odśwież",
|
|
||||||
"ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Mastodona.",
|
"ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Mastodona.",
|
||||||
"upload_area.title": "Przeciągnij i upuść aby wysłać",
|
"upload_area.title": "Przeciągnij i upuść aby wysłać",
|
||||||
"upload_button.label": "Dodaj zawartość multimedialną",
|
"upload_button.label": "Dodaj zawartość multimedialną",
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
"column_header.show_settings": "Mostrar configurações",
|
"column_header.show_settings": "Mostrar configurações",
|
||||||
"column_header.unpin": "Desafixar",
|
"column_header.unpin": "Desafixar",
|
||||||
"column_subheading.settings": "Configurações",
|
"column_subheading.settings": "Configurações",
|
||||||
"compose_form.direct_message_warning": "Este toot só será enviado aos usuários mencionados. A mensagem não é encriptada e será armazenada nos servidores dos usuários mencionados.",
|
"compose_form.direct_message_warning": "Este toot só será enviado aos usuários mencionados.",
|
||||||
"compose_form.direct_message_warning_learn_more": "Saber mais",
|
"compose_form.direct_message_warning_learn_more": "Saber mais",
|
||||||
"compose_form.hashtag_warning": "Esse toot não será listado em nenhuma hashtag por ser não listado. Somente toots públicos podem ser pesquisados por hashtag.",
|
"compose_form.hashtag_warning": "Esse toot não será listado em nenhuma hashtag por ser não listado. Somente toots públicos podem ser pesquisados por hashtag.",
|
||||||
"compose_form.lock_disclaimer": "A sua conta não está {locked}. Qualquer pessoa pode te seguir e visualizar postagens direcionadas a apenas seguidores.",
|
"compose_form.lock_disclaimer": "A sua conta não está {locked}. Qualquer pessoa pode te seguir e visualizar postagens direcionadas a apenas seguidores.",
|
||||||
@@ -83,6 +83,8 @@
|
|||||||
"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.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.confirm": "Silenciar",
|
||||||
"confirmations.mute.message": "Você tem certeza de que quer silenciar {name}?",
|
"confirmations.mute.message": "Você tem certeza de que quer silenciar {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Apagar & usar como rascunho",
|
||||||
|
"confirmations.redraft.message": "Você tem certeza que deseja apagar esse status e usá-lo como rascunho? Você vai perder todas as respostas, compartilhamentos e favoritos relacionados a ele.",
|
||||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||||
"confirmations.unfollow.message": "Você tem certeza de que quer deixar de seguir {name}?",
|
"confirmations.unfollow.message": "Você tem certeza de que 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.",
|
||||||
@@ -246,10 +248,10 @@
|
|||||||
"search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
|
"search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
|
||||||
"standalone.public_title": "Dê uma espiada...",
|
"standalone.public_title": "Dê uma espiada...",
|
||||||
"status.block": "Block @{name}",
|
"status.block": "Block @{name}",
|
||||||
"status.cancel_reblog_private": "Retirar o compartilhamento",
|
"status.cancel_reblog_private": "Desfazer compartilhamento",
|
||||||
"status.cannot_reblog": "Esta postagem não pode ser compartilhada",
|
"status.cannot_reblog": "Esta postagem não pode ser compartilhada",
|
||||||
"status.delete": "Excluir",
|
"status.delete": "Excluir",
|
||||||
"status.direct": "Enviar mensagem direta à @{name}",
|
"status.direct": "Enviar mensagem direta a @{name}",
|
||||||
"status.embed": "Incorporar",
|
"status.embed": "Incorporar",
|
||||||
"status.favourite": "Adicionar aos favoritos",
|
"status.favourite": "Adicionar aos favoritos",
|
||||||
"status.load_more": "Carregar mais",
|
"status.load_more": "Carregar mais",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Compartilhar",
|
"status.reblog": "Compartilhar",
|
||||||
"status.reblog_private": "Compartilhar com a audiência original",
|
"status.reblog_private": "Compartilhar com a audiência original",
|
||||||
"status.reblogged_by": "{name} compartilhou",
|
"status.reblogged_by": "{name} compartilhou",
|
||||||
|
"status.redraft": "Apagar & usar como rascunho",
|
||||||
"status.reply": "Responder",
|
"status.reply": "Responder",
|
||||||
"status.replyAll": "Responder à sequência",
|
"status.replyAll": "Responder à sequência",
|
||||||
"status.report": "Denunciar @{name}",
|
"status.report": "Denunciar @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre",
|
||||||
"trends.header": "Hashtags do momento",
|
|
||||||
"trends.refresh": "Atualizar",
|
|
||||||
"ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.",
|
"ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.",
|
||||||
"upload_area.title": "Arraste e solte para enviar",
|
"upload_area.title": "Arraste e solte para enviar",
|
||||||
"upload_button.label": "Adicionar mídia",
|
"upload_button.label": "Adicionar mídia",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"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.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.confirm": "Silenciar",
|
||||||
"confirmations.mute.message": "De certeza que queres silenciar {name}?",
|
"confirmations.mute.message": "De certeza que queres silenciar {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||||
"confirmations.unfollow.message": "De certeza que queres deixar de seguir {name}?",
|
"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.instructions": "Publicar este post num outro site copiando o código abaixo.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Partilhar",
|
"status.reblog": "Partilhar",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} partilhou",
|
"status.reblogged_by": "{name} partilhou",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Responder",
|
"status.reply": "Responder",
|
||||||
"status.replyAll": "Responder à conversa",
|
"status.replyAll": "Responder à conversa",
|
||||||
"status.report": "Denunciar @{name}",
|
"status.report": "Denunciar @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "O teu rascunho vai ser perdido se abandonares o Mastodon.",
|
"ui.beforeunload": "O teu rascunho vai ser perdido se abandonares o Mastodon.",
|
||||||
"upload_area.title": "Arraste e solte para enviar",
|
"upload_area.title": "Arraste e solte para enviar",
|
||||||
"upload_button.label": "Adicionar media",
|
"upload_button.label": "Adicionar media",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Вы на самом деле уверены, что хотите блокировать весь {domain}? В большинстве случаев нескольких отдельных блокировок или глушений достаточно.",
|
"confirmations.domain_block.message": "Вы на самом деле уверены, что хотите блокировать весь {domain}? В большинстве случаев нескольких отдельных блокировок или глушений достаточно.",
|
||||||
"confirmations.mute.confirm": "Заглушить",
|
"confirmations.mute.confirm": "Заглушить",
|
||||||
"confirmations.mute.message": "Вы уверены, что хотите заглушить {name}?",
|
"confirmations.mute.message": "Вы уверены, что хотите заглушить {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Отписаться",
|
"confirmations.unfollow.confirm": "Отписаться",
|
||||||
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
|
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
|
||||||
"embed.instructions": "Встройте этот статус на Вашем сайте, скопировав код внизу.",
|
"embed.instructions": "Встройте этот статус на Вашем сайте, скопировав код внизу.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Продвинуть",
|
"status.reblog": "Продвинуть",
|
||||||
"status.reblog_private": "Продвинуть для своей аудитории",
|
"status.reblog_private": "Продвинуть для своей аудитории",
|
||||||
"status.reblogged_by": "{name} продвинул(а)",
|
"status.reblogged_by": "{name} продвинул(а)",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Ответить",
|
"status.reply": "Ответить",
|
||||||
"status.replyAll": "Ответить на тред",
|
"status.replyAll": "Ответить на тред",
|
||||||
"status.report": "Пожаловаться",
|
"status.report": "Пожаловаться",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
|
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
|
||||||
"upload_area.title": "Перетащите сюда, чтобы загрузить",
|
"upload_area.title": "Перетащите сюда, чтобы загрузить",
|
||||||
"upload_button.label": "Добавить медиаконтент",
|
"upload_button.label": "Добавить медиаконтент",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"account.badges.bot": "Bot",
|
"account.badges.bot": "Bot",
|
||||||
"account.block": "Blokovať @{name}",
|
"account.block": "Blokuj @{name}",
|
||||||
"account.block_domain": "Ukryť všetko z {domain}",
|
"account.block_domain": "Ukry všetko z {domain}",
|
||||||
"account.blocked": "Blokovaný/á",
|
"account.blocked": "Blokovaný/á",
|
||||||
"account.direct": "Súkromná správa pre @{name}",
|
"account.direct": "Súkromná správa pre @{name}",
|
||||||
"account.disclaimer_full": "Inofrmácie nižšie nemusia byť úplným odrazom uživateľovho účtu.",
|
"account.disclaimer_full": "Inofrmácie nižšie nemusia byť úplným odrazom uživateľovho účtu.",
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
"account.mention": "Spomeň @{name}",
|
"account.mention": "Spomeň @{name}",
|
||||||
"account.moved_to": "{name} sa presunul/a na:",
|
"account.moved_to": "{name} sa presunul/a na:",
|
||||||
"account.mute": "Ignorovať @{name}",
|
"account.mute": "Ignorovať @{name}",
|
||||||
"account.mute_notifications": "Stĺmiť notifikácie od @{name}",
|
"account.mute_notifications": "Stĺmiť oznámenia od @{name}",
|
||||||
"account.muted": "Utíšený/á",
|
"account.muted": "Utíšený/á",
|
||||||
"account.posts": "Hlášky",
|
"account.posts": "Hlášky",
|
||||||
"account.posts_with_replies": "Príspevky s odpoveďami",
|
"account.posts_with_replies": "Príspevky s odpoveďami",
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
"column.home": "Domov",
|
"column.home": "Domov",
|
||||||
"column.lists": "Zoznamy",
|
"column.lists": "Zoznamy",
|
||||||
"column.mutes": "Ignorovaní užívatelia",
|
"column.mutes": "Ignorovaní užívatelia",
|
||||||
"column.notifications": "Notifikácie",
|
"column.notifications": "Oznámenia",
|
||||||
"column.pins": "Pripnuté tooty",
|
"column.pins": "Pripnuté tooty",
|
||||||
"column.public": "Federovaná časová os",
|
"column.public": "Federovaná časová os",
|
||||||
"column_back_button.label": "Späť",
|
"column_back_button.label": "Späť",
|
||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Ste si naozaj istý, že chcete blokovať celú {domain}? Vo väčšine prípadov stačí blokovať alebo ignorovať daných používateľov, čiže to sa doporučuje.",
|
"confirmations.domain_block.message": "Ste si naozaj istý, že chcete blokovať celú {domain}? Vo väčšine prípadov stačí blokovať alebo ignorovať daných používateľov, čiže to sa doporučuje.",
|
||||||
"confirmations.mute.confirm": "Ignoruj",
|
"confirmations.mute.confirm": "Ignoruj",
|
||||||
"confirmations.mute.message": "Naozaj chcete ignorovať {name}?",
|
"confirmations.mute.message": "Naozaj chcete ignorovať {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Vyčistiť a prepísať",
|
||||||
|
"confirmations.redraft.message": "Si si istý/á, že chceš vymazať a prepísať tento príspevok? Stratíš všetky jeho nadobudnuté odpovede, povýšenia a obľúbenia.",
|
||||||
"confirmations.unfollow.confirm": "Nesledovať",
|
"confirmations.unfollow.confirm": "Nesledovať",
|
||||||
"confirmations.unfollow.message": "Naozaj chcete prestať sledovať {name}?",
|
"confirmations.unfollow.message": "Naozaj chcete prestať sledovať {name}?",
|
||||||
"embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.",
|
"embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.",
|
||||||
@@ -107,11 +109,11 @@
|
|||||||
"empty_column.home": "Vaša lokálna osa je zatiaľ prázdna! Pre začiatok pozrite {public} alebo použite vyhľadávanie a nájdite tak ostatných používateľov.",
|
"empty_column.home": "Vaša lokálna osa je zatiaľ prázdna! Pre začiatok pozrite {public} alebo použite vyhľadávanie a nájdite tak ostatných používateľov.",
|
||||||
"empty_column.home.public_timeline": "verejná časová os",
|
"empty_column.home.public_timeline": "verejná časová os",
|
||||||
"empty_column.list": "Tento zoznam je ešte prázdny. Keď ale členovia tohoto zoznamu napíšu nové správy, tak tie sa objavia priamo tu.",
|
"empty_column.list": "Tento zoznam je ešte prázdny. Keď ale členovia tohoto zoznamu napíšu nové správy, tak tie sa objavia priamo tu.",
|
||||||
"empty_column.notifications": "Nemáte ešte žiadne notifikácie. Napíšte niekomu, následujte niekoho a komunikujte s ostatnými aby diskusia mohla začať.",
|
"empty_column.notifications": "Nemáš ešte žiadne oznámenia. Zapoj sa s niekym do debaty a komunikuj s ostatnými aby diskusia mohla začať.",
|
||||||
"empty_column.public": "Ešte tu nič nie je. Napíšte niečo verejne alebo začnite sledovať používateľov z iných Mastodon serverov aby tu niečo pribudlo",
|
"empty_column.public": "Ešte tu nič nie je. Napíš niečo verejne alebo začnite sledovať používateľov z iných Mastodon serverov aby tu niečo pribudlo",
|
||||||
"follow_request.authorize": "Povoľ prístup",
|
"follow_request.authorize": "Povoľ prístup",
|
||||||
"follow_request.reject": "Odmietni",
|
"follow_request.reject": "Odmietni",
|
||||||
"getting_started.documentation": "Documentation",
|
"getting_started.documentation": "Dokumentácia",
|
||||||
"getting_started.heading": "Začni tu",
|
"getting_started.heading": "Začni tu",
|
||||||
"getting_started.open_source_notice": "Mastodon má otvorený kód. Nahlásiť chyby, alebo prispieť môžeš na GitHube v {github}.",
|
"getting_started.open_source_notice": "Mastodon má otvorený kód. Nahlásiť chyby, alebo prispieť môžeš na GitHube v {github}.",
|
||||||
"getting_started.terms": "Podmienky prevozu",
|
"getting_started.terms": "Podmienky prevozu",
|
||||||
@@ -166,9 +168,9 @@
|
|||||||
"navigation_bar.info": "O tomto Mastodon serveri",
|
"navigation_bar.info": "O tomto Mastodon serveri",
|
||||||
"navigation_bar.keyboard_shortcuts": "Klávesové skratky",
|
"navigation_bar.keyboard_shortcuts": "Klávesové skratky",
|
||||||
"navigation_bar.lists": "Zoznamy",
|
"navigation_bar.lists": "Zoznamy",
|
||||||
"navigation_bar.logout": "Odhlásiť",
|
"navigation_bar.logout": "Odhlás sa",
|
||||||
"navigation_bar.mutes": "Ignorovaní užívatelia",
|
"navigation_bar.mutes": "Ignorovaní užívatelia",
|
||||||
"navigation_bar.personal": "Personal",
|
"navigation_bar.personal": "Osobné",
|
||||||
"navigation_bar.pins": "Pripnuté tooty",
|
"navigation_bar.pins": "Pripnuté tooty",
|
||||||
"navigation_bar.preferences": "Voľby",
|
"navigation_bar.preferences": "Voľby",
|
||||||
"navigation_bar.public_timeline": "Federovaná časová os",
|
"navigation_bar.public_timeline": "Federovaná časová os",
|
||||||
@@ -246,7 +248,7 @@
|
|||||||
"search_results.total": "{count, number} {count, plural, jeden {výsledok} ostatné {výsledky}}",
|
"search_results.total": "{count, number} {count, plural, jeden {výsledok} ostatné {výsledky}}",
|
||||||
"standalone.public_title": "Náhľad dovnútra...",
|
"standalone.public_title": "Náhľad dovnútra...",
|
||||||
"status.block": "Blokovať @{name}",
|
"status.block": "Blokovať @{name}",
|
||||||
"status.cancel_reblog_private": "Unboost",
|
"status.cancel_reblog_private": "Nezdieľaj",
|
||||||
"status.cannot_reblog": "Tento príspevok nemôže byť re-tootnutý",
|
"status.cannot_reblog": "Tento príspevok nemôže byť re-tootnutý",
|
||||||
"status.delete": "Zmazať",
|
"status.delete": "Zmazať",
|
||||||
"status.direct": "Súkromná správa @{name}",
|
"status.direct": "Súkromná správa @{name}",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Povýšiť",
|
"status.reblog": "Povýšiť",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} povýšil/a",
|
"status.reblogged_by": "{name} povýšil/a",
|
||||||
|
"status.redraft": "Vymaž a prepíš",
|
||||||
"status.reply": "Odpovedať",
|
"status.reply": "Odpovedať",
|
||||||
"status.replyAll": "Odpovedať na diskusiu",
|
"status.replyAll": "Odpovedať na diskusiu",
|
||||||
"status.report": "Nahlásiť @{name}",
|
"status.report": "Nahlásiť @{name}",
|
||||||
@@ -281,13 +284,11 @@
|
|||||||
"tabs_bar.local_timeline": "Lokálna",
|
"tabs_bar.local_timeline": "Lokálna",
|
||||||
"tabs_bar.notifications": "Notifikácie",
|
"tabs_bar.notifications": "Notifikácie",
|
||||||
"tabs_bar.search": "Hľadaj",
|
"tabs_bar.search": "Hľadaj",
|
||||||
"timeline.media": "Media",
|
"timeline.media": "Médiá",
|
||||||
"timeline.posts": "Príspevky",
|
"timeline.posts": "Príspevky",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, viacerí, jeden {person} iní {people}} diskutujú",
|
||||||
"trends.header": "Trending now",
|
"ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Mastodon.",
|
||||||
"trends.refresh": "Refresh",
|
"upload_area.title": "Pretiahni a pusť pre nahratie",
|
||||||
"ui.beforeunload": "Čo máte rozpísané sa stratí, ak opustíte Mastodon.",
|
|
||||||
"upload_area.title": "Ťahaj a pusti pre nahratie",
|
|
||||||
"upload_button.label": "Pridať médiá",
|
"upload_button.label": "Pridať médiá",
|
||||||
"upload_form.description": "Opis pre slabo vidiacich",
|
"upload_form.description": "Opis pre slabo vidiacich",
|
||||||
"upload_form.focus": "Vystrihni",
|
"upload_form.focus": "Vystrihni",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Ali ste res, res prepričani, da želite blokirati celotno {domain}? V večini primerov je nekaj ciljnih blokiranj ali utišanj dovolj in boljše.",
|
"confirmations.domain_block.message": "Ali ste res, res prepričani, da želite blokirati celotno {domain}? V večini primerov je nekaj ciljnih blokiranj ali utišanj dovolj in boljše.",
|
||||||
"confirmations.mute.confirm": "Utišanje",
|
"confirmations.mute.confirm": "Utišanje",
|
||||||
"confirmations.mute.message": "Ali ste prepričani, da želite utišati {name}?",
|
"confirmations.mute.message": "Ali ste prepričani, da želite utišati {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Prenehaj slediti",
|
"confirmations.unfollow.confirm": "Prenehaj slediti",
|
||||||
"confirmations.unfollow.message": "Ali ste prepričani, da ne želite več slediti {name}?",
|
"confirmations.unfollow.message": "Ali ste prepričani, da ne želite več slediti {name}?",
|
||||||
"embed.instructions": "Vstavi ta status na svojo spletno stran tako, da kopirate spodnjo kodo.",
|
"embed.instructions": "Vstavi ta status na svojo spletno stran tako, da kopirate spodnjo kodo.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Suni",
|
"status.reblog": "Suni",
|
||||||
"status.reblog_private": "Suni v prvotno občinstvo",
|
"status.reblog_private": "Suni v prvotno občinstvo",
|
||||||
"status.reblogged_by": "{name} sunjen",
|
"status.reblogged_by": "{name} sunjen",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Odgovori",
|
"status.reply": "Odgovori",
|
||||||
"status.replyAll": "Odgovori na objavo",
|
"status.replyAll": "Odgovori na objavo",
|
||||||
"status.report": "Prijavi @{name}",
|
"status.report": "Prijavi @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Mastodona.",
|
"ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Mastodona.",
|
||||||
"upload_area.title": "Povlecite in spustite za pošiljanje",
|
"upload_area.title": "Povlecite in spustite za pošiljanje",
|
||||||
"upload_button.label": "Dodaj medij",
|
"upload_button.label": "Dodaj medij",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Da li ste stvarno, stvarno sigurno da želite da blokirate ceo domen {domain}? U većini slučajeva, par dobrih blokiranja ili ućutkavanja su dovoljna i preporučljiva.",
|
"confirmations.domain_block.message": "Da li ste stvarno, stvarno sigurno da želite da blokirate ceo domen {domain}? U većini slučajeva, par dobrih blokiranja ili ućutkavanja su dovoljna i preporučljiva.",
|
||||||
"confirmations.mute.confirm": "Ućutkaj",
|
"confirmations.mute.confirm": "Ućutkaj",
|
||||||
"confirmations.mute.message": "Da li stvarno želite da ućutkate korisnika {name}?",
|
"confirmations.mute.message": "Da li stvarno želite da ućutkate korisnika {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Otprati",
|
"confirmations.unfollow.confirm": "Otprati",
|
||||||
"confirmations.unfollow.message": "Da li ste sigurni da želite da otpratite korisnika {name}?",
|
"confirmations.unfollow.message": "Da li ste sigurni da želite da otpratite korisnika {name}?",
|
||||||
"embed.instructions": "Ugradi ovaj status na Vaš veb sajt kopiranjem koda ispod.",
|
"embed.instructions": "Ugradi ovaj status na Vaš veb sajt kopiranjem koda ispod.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Podrži",
|
"status.reblog": "Podrži",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} podržao(la)",
|
"status.reblogged_by": "{name} podržao(la)",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Odgovori",
|
"status.reply": "Odgovori",
|
||||||
"status.replyAll": "Odgovori na diskusiju",
|
"status.replyAll": "Odgovori na diskusiju",
|
||||||
"status.report": "Prijavi korisnika @{name}",
|
"status.report": "Prijavi korisnika @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Ako napustite Mastodont, izgubićete napisani nacrt.",
|
"ui.beforeunload": "Ako napustite Mastodont, izgubićete napisani nacrt.",
|
||||||
"upload_area.title": "Prevucite ovde da otpremite",
|
"upload_area.title": "Prevucite ovde da otpremite",
|
||||||
"upload_button.label": "Dodaj multimediju",
|
"upload_button.label": "Dodaj multimediju",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Да ли сте стварно, стварно сигурно да желите да блокирате цео домен {domain}? У већини случајева, пар добрих блокирања или ућуткавања су довољна и препоручљива.",
|
"confirmations.domain_block.message": "Да ли сте стварно, стварно сигурно да желите да блокирате цео домен {domain}? У већини случајева, пар добрих блокирања или ућуткавања су довољна и препоручљива.",
|
||||||
"confirmations.mute.confirm": "Ућуткај",
|
"confirmations.mute.confirm": "Ућуткај",
|
||||||
"confirmations.mute.message": "Да ли стварно желите да ућуткате корисника {name}?",
|
"confirmations.mute.message": "Да ли стварно желите да ућуткате корисника {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Отпрати",
|
"confirmations.unfollow.confirm": "Отпрати",
|
||||||
"confirmations.unfollow.message": "Да ли сте сигурни да желите да отпратите корисника {name}?",
|
"confirmations.unfollow.message": "Да ли сте сигурни да желите да отпратите корисника {name}?",
|
||||||
"embed.instructions": "Угради овај статус на Ваш веб сајт копирањем кода испод.",
|
"embed.instructions": "Угради овај статус на Ваш веб сајт копирањем кода испод.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Подржи",
|
"status.reblog": "Подржи",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} подржао(ла)",
|
"status.reblogged_by": "{name} подржао(ла)",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Одговори",
|
"status.reply": "Одговори",
|
||||||
"status.replyAll": "Одговори на дискусију",
|
"status.replyAll": "Одговори на дискусију",
|
||||||
"status.report": "Пријави корисника @{name}",
|
"status.report": "Пријави корисника @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Ако напустите Мастодонт, изгубићете написани нацрт.",
|
"ui.beforeunload": "Ако напустите Мастодонт, изгубићете написани нацрт.",
|
||||||
"upload_area.title": "Превуците овде да отпремите",
|
"upload_area.title": "Превуците овде да отпремите",
|
||||||
"upload_button.label": "Додај мултимедију",
|
"upload_button.label": "Додај мултимедију",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"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.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",
|
"confirmations.mute.confirm": "Tysta",
|
||||||
"confirmations.mute.message": "Är du säker du vill tysta ner {name}?",
|
"confirmations.mute.message": "Är du säker du vill tysta ner {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Sluta följa",
|
"confirmations.unfollow.confirm": "Sluta följa",
|
||||||
"confirmations.unfollow.message": "Är du säker på att du vill sluta följa {name}?",
|
"confirmations.unfollow.message": "Är du säker på att du vill sluta följa {name}?",
|
||||||
"embed.instructions": "Bädda in den här statusen på din webbplats genom att kopiera koden nedan.",
|
"embed.instructions": "Bädda in den här statusen på din webbplats genom att kopiera koden nedan.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Knuff",
|
"status.reblog": "Knuff",
|
||||||
"status.reblog_private": "Knuffa till de ursprungliga åhörarna",
|
"status.reblog_private": "Knuffa till de ursprungliga åhörarna",
|
||||||
"status.reblogged_by": "{name} knuffade",
|
"status.reblogged_by": "{name} knuffade",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Svara",
|
"status.reply": "Svara",
|
||||||
"status.replyAll": "Svara på tråden",
|
"status.replyAll": "Svara på tråden",
|
||||||
"status.report": "Rapportera @{name}",
|
"status.report": "Rapportera @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Mastodon.",
|
"ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Mastodon.",
|
||||||
"upload_area.title": "Dra & släpp för att ladda upp",
|
"upload_area.title": "Dra & släpp för att ladda upp",
|
||||||
"upload_button.label": "Lägg till media",
|
"upload_button.label": "Lägg till media",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
"confirmations.domain_block.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.confirm": "Mute",
|
||||||
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Unfollow",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"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.instructions": "Embed this status on your website by copying the code below.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Boost",
|
"status.reblog": "Boost",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} boosted",
|
"status.reblogged_by": "{name} boosted",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Reply",
|
"status.reply": "Reply",
|
||||||
"status.replyAll": "Reply to thread",
|
"status.replyAll": "Reply to thread",
|
||||||
"status.report": "Report @{name}",
|
"status.report": "Report @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||||
"upload_area.title": "Drag & drop to upload",
|
"upload_area.title": "Drag & drop to upload",
|
||||||
"upload_button.label": "Add media",
|
"upload_button.label": "Add media",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
"confirmations.domain_block.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.confirm": "Mute",
|
||||||
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Unfollow",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"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.instructions": "Embed this status on your website by copying the code below.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Boost",
|
"status.reblog": "Boost",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} boosted",
|
"status.reblogged_by": "{name} boosted",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Reply",
|
"status.reply": "Reply",
|
||||||
"status.replyAll": "Reply to thread",
|
"status.replyAll": "Reply to thread",
|
||||||
"status.report": "Report @{name}",
|
"status.report": "Report @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||||
"upload_area.title": "Drag & drop to upload",
|
"upload_area.title": "Drag & drop to upload",
|
||||||
"upload_button.label": "Add media",
|
"upload_button.label": "Add media",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
|
"confirmations.domain_block.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",
|
"confirmations.mute.confirm": "Sessize al",
|
||||||
"confirmations.mute.message": "{name} kullanıcısını sessize almak istiyor musunuz?",
|
"confirmations.mute.message": "{name} kullanıcısını sessize almak istiyor musunuz?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Unfollow",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"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.instructions": "Embed this status on your website by copying the code below.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Boost'la",
|
"status.reblog": "Boost'la",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} boost etti",
|
"status.reblogged_by": "{name} boost etti",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Cevapla",
|
"status.reply": "Cevapla",
|
||||||
"status.replyAll": "Konuşmayı cevapla",
|
"status.replyAll": "Konuşmayı cevapla",
|
||||||
"status.report": "@{name}'i raporla",
|
"status.report": "@{name}'i raporla",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||||
"upload_area.title": "Upload için sürükle bırak yapınız",
|
"upload_area.title": "Upload için sürükle bırak yapınız",
|
||||||
"upload_button.label": "Görsel ekle",
|
"upload_button.label": "Görsel ekle",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів.",
|
"confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів.",
|
||||||
"confirmations.mute.confirm": "Заглушити",
|
"confirmations.mute.confirm": "Заглушити",
|
||||||
"confirmations.mute.message": "Ви впевнені, що хочете заглушити {name}?",
|
"confirmations.mute.message": "Ви впевнені, що хочете заглушити {name}?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "Unfollow",
|
"confirmations.unfollow.confirm": "Unfollow",
|
||||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
"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.instructions": "Embed this status on your website by copying the code below.",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "Передмухнути",
|
"status.reblog": "Передмухнути",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} передмухнув(-ла)",
|
"status.reblogged_by": "{name} передмухнув(-ла)",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "Відповісти",
|
"status.reply": "Відповісти",
|
||||||
"status.replyAll": "Відповісти на тред",
|
"status.replyAll": "Відповісти на тред",
|
||||||
"status.report": "Поскаржитися",
|
"status.report": "Поскаржитися",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
|
||||||
"upload_area.title": "Перетягніть сюди, щоб завантажити",
|
"upload_area.title": "Перетягніть сюди, щоб завантажити",
|
||||||
"upload_button.label": "Додати медіаконтент",
|
"upload_button.label": "Додати медіаконтент",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "你真的确定要隐藏所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户应该就能满足你的需要了。",
|
"confirmations.domain_block.message": "你真的确定要隐藏所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户应该就能满足你的需要了。",
|
||||||
"confirmations.mute.confirm": "隐藏",
|
"confirmations.mute.confirm": "隐藏",
|
||||||
"confirmations.mute.message": "你确定要隐藏 {name} 吗?",
|
"confirmations.mute.message": "你确定要隐藏 {name} 吗?",
|
||||||
|
"confirmations.redraft.confirm": "删除并重新编辑",
|
||||||
|
"confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的回复、转嘟和收藏都会被清除。",
|
||||||
"confirmations.unfollow.confirm": "取消关注",
|
"confirmations.unfollow.confirm": "取消关注",
|
||||||
"confirmations.unfollow.message": "你确定要取消关注 {name} 吗?",
|
"confirmations.unfollow.message": "你确定要取消关注 {name} 吗?",
|
||||||
"embed.instructions": "要在你的网站上嵌入这条嘟文,请复制以下代码。",
|
"embed.instructions": "要在你的网站上嵌入这条嘟文,请复制以下代码。",
|
||||||
@@ -111,10 +113,10 @@
|
|||||||
"empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户后,这里就会有嘟文出现了哦!",
|
"empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户后,这里就会有嘟文出现了哦!",
|
||||||
"follow_request.authorize": "同意",
|
"follow_request.authorize": "同意",
|
||||||
"follow_request.reject": "拒绝",
|
"follow_request.reject": "拒绝",
|
||||||
"getting_started.documentation": "Documentation",
|
"getting_started.documentation": "文档",
|
||||||
"getting_started.heading": "开始使用",
|
"getting_started.heading": "开始使用",
|
||||||
"getting_started.open_source_notice": "Mastodon 是一个开源软件。欢迎前往 GitHub({github})贡献代码或反馈问题。",
|
"getting_started.open_source_notice": "Mastodon 是一个开源软件。欢迎前往 GitHub({github})贡献代码或反馈问题。",
|
||||||
"getting_started.terms": "Terms of service",
|
"getting_started.terms": "使用条款",
|
||||||
"home.column_settings.advanced": "高级设置",
|
"home.column_settings.advanced": "高级设置",
|
||||||
"home.column_settings.basic": "基本设置",
|
"home.column_settings.basic": "基本设置",
|
||||||
"home.column_settings.filter_regex": "使用正则表达式(regex)过滤",
|
"home.column_settings.filter_regex": "使用正则表达式(regex)过滤",
|
||||||
@@ -158,7 +160,7 @@
|
|||||||
"navigation_bar.blocks": "已屏蔽的用户",
|
"navigation_bar.blocks": "已屏蔽的用户",
|
||||||
"navigation_bar.community_timeline": "本站时间轴",
|
"navigation_bar.community_timeline": "本站时间轴",
|
||||||
"navigation_bar.direct": "私信",
|
"navigation_bar.direct": "私信",
|
||||||
"navigation_bar.discover": "Discover",
|
"navigation_bar.discover": "发现",
|
||||||
"navigation_bar.domain_blocks": "已屏蔽的网站",
|
"navigation_bar.domain_blocks": "已屏蔽的网站",
|
||||||
"navigation_bar.edit_profile": "修改个人资料",
|
"navigation_bar.edit_profile": "修改个人资料",
|
||||||
"navigation_bar.favourites": "收藏的内容",
|
"navigation_bar.favourites": "收藏的内容",
|
||||||
@@ -168,11 +170,11 @@
|
|||||||
"navigation_bar.lists": "列表",
|
"navigation_bar.lists": "列表",
|
||||||
"navigation_bar.logout": "注销",
|
"navigation_bar.logout": "注销",
|
||||||
"navigation_bar.mutes": "已隐藏的用户",
|
"navigation_bar.mutes": "已隐藏的用户",
|
||||||
"navigation_bar.personal": "Personal",
|
"navigation_bar.personal": "个人",
|
||||||
"navigation_bar.pins": "置顶嘟文",
|
"navigation_bar.pins": "置顶嘟文",
|
||||||
"navigation_bar.preferences": "首选项",
|
"navigation_bar.preferences": "首选项",
|
||||||
"navigation_bar.public_timeline": "跨站公共时间轴",
|
"navigation_bar.public_timeline": "跨站公共时间轴",
|
||||||
"navigation_bar.security": "Security",
|
"navigation_bar.security": "安全",
|
||||||
"notification.favourite": "{name} 收藏了你的嘟文",
|
"notification.favourite": "{name} 收藏了你的嘟文",
|
||||||
"notification.follow": "{name} 开始关注你",
|
"notification.follow": "{name} 开始关注你",
|
||||||
"notification.mention": "{name} 提及你",
|
"notification.mention": "{name} 提及你",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "转嘟",
|
"status.reblog": "转嘟",
|
||||||
"status.reblog_private": "转嘟给原有关注者",
|
"status.reblog_private": "转嘟给原有关注者",
|
||||||
"status.reblogged_by": "{name} 转嘟了",
|
"status.reblogged_by": "{name} 转嘟了",
|
||||||
|
"status.redraft": "删除并重新编辑",
|
||||||
"status.reply": "回复",
|
"status.reply": "回复",
|
||||||
"status.replyAll": "回复所有人",
|
"status.replyAll": "回复所有人",
|
||||||
"status.report": "举报 @{name}",
|
"status.report": "举报 @{name}",
|
||||||
@@ -283,9 +286,7 @@
|
|||||||
"tabs_bar.search": "搜索",
|
"tabs_bar.search": "搜索",
|
||||||
"timeline.media": "媒体",
|
"timeline.media": "媒体",
|
||||||
"timeline.posts": "嘟文",
|
"timeline.posts": "嘟文",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} 人正在讨论",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会被丢弃。",
|
"ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会被丢弃。",
|
||||||
"upload_area.title": "将文件拖放到此处开始上传",
|
"upload_area.title": "将文件拖放到此处开始上传",
|
||||||
"upload_button.label": "上传媒体文件",
|
"upload_button.label": "上传媒体文件",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "你真的真的確定要隱藏整個 {domain} ?多數情況下,比較推薦封鎖或靜音幾個特定目標就好。",
|
"confirmations.domain_block.message": "你真的真的確定要隱藏整個 {domain} ?多數情況下,比較推薦封鎖或靜音幾個特定目標就好。",
|
||||||
"confirmations.mute.confirm": "靜音",
|
"confirmations.mute.confirm": "靜音",
|
||||||
"confirmations.mute.message": "你確定要將{name}靜音嗎?",
|
"confirmations.mute.message": "你確定要將{name}靜音嗎?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "取消關注",
|
"confirmations.unfollow.confirm": "取消關注",
|
||||||
"confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?",
|
"confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?",
|
||||||
"embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。",
|
"embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "轉推",
|
"status.reblog": "轉推",
|
||||||
"status.reblog_private": "轉推到原讀者",
|
"status.reblog_private": "轉推到原讀者",
|
||||||
"status.reblogged_by": "{name} 轉推",
|
"status.reblogged_by": "{name} 轉推",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "回應",
|
"status.reply": "回應",
|
||||||
"status.replyAll": "回應所有人",
|
"status.replyAll": "回應所有人",
|
||||||
"status.report": "舉報 @{name}",
|
"status.report": "舉報 @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "文章",
|
"timeline.posts": "文章",
|
||||||
"trends.count_by_accounts": "{count} 位用戶在討論",
|
"trends.count_by_accounts": "{count} 位用戶在討論",
|
||||||
"trends.header": "現時趨勢",
|
|
||||||
"trends.refresh": "重新載入",
|
|
||||||
"ui.beforeunload": "如果你現在離開 Mastodon,你的草稿內容將會被丟棄。",
|
"ui.beforeunload": "如果你現在離開 Mastodon,你的草稿內容將會被丟棄。",
|
||||||
"upload_area.title": "將檔案拖放至此上載",
|
"upload_area.title": "將檔案拖放至此上載",
|
||||||
"upload_button.label": "上載媒體檔案",
|
"upload_button.label": "上載媒體檔案",
|
||||||
|
|||||||
@@ -83,6 +83,8 @@
|
|||||||
"confirmations.domain_block.message": "你真的真的確定要隱藏整個 {domain} ?多數情況下,比較推薦封鎖或消音幾個特定目標就好。",
|
"confirmations.domain_block.message": "你真的真的確定要隱藏整個 {domain} ?多數情況下,比較推薦封鎖或消音幾個特定目標就好。",
|
||||||
"confirmations.mute.confirm": "消音",
|
"confirmations.mute.confirm": "消音",
|
||||||
"confirmations.mute.message": "你確定要消音 {name} ?",
|
"confirmations.mute.message": "你確定要消音 {name} ?",
|
||||||
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
|
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||||
"confirmations.unfollow.confirm": "取消關注",
|
"confirmations.unfollow.confirm": "取消關注",
|
||||||
"confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?",
|
"confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?",
|
||||||
"embed.instructions": "要內嵌此貼文,請將以下代碼貼進你的網站。",
|
"embed.instructions": "要內嵌此貼文,請將以下代碼貼進你的網站。",
|
||||||
@@ -264,6 +266,7 @@
|
|||||||
"status.reblog": "轉推",
|
"status.reblog": "轉推",
|
||||||
"status.reblog_private": "Boost to original audience",
|
"status.reblog_private": "Boost to original audience",
|
||||||
"status.reblogged_by": "{name} 轉推了",
|
"status.reblogged_by": "{name} 轉推了",
|
||||||
|
"status.redraft": "Delete & re-draft",
|
||||||
"status.reply": "回應",
|
"status.reply": "回應",
|
||||||
"status.replyAll": "回應這串",
|
"status.replyAll": "回應這串",
|
||||||
"status.report": "通報 @{name}",
|
"status.report": "通報 @{name}",
|
||||||
@@ -284,8 +287,6 @@
|
|||||||
"timeline.media": "Media",
|
"timeline.media": "Media",
|
||||||
"timeline.posts": "Toots",
|
"timeline.posts": "Toots",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.header": "Trending now",
|
|
||||||
"trends.refresh": "Refresh",
|
|
||||||
"ui.beforeunload": "如果離開 Mastodon,你的草稿將會不見。",
|
"ui.beforeunload": "如果離開 Mastodon,你的草稿將會不見。",
|
||||||
"upload_area.title": "拖放來上傳",
|
"upload_area.title": "拖放來上傳",
|
||||||
"upload_button.label": "增加媒體",
|
"upload_button.label": "增加媒體",
|
||||||
|
|||||||
@@ -32,9 +32,11 @@ import {
|
|||||||
} from '../actions/compose';
|
} from '../actions/compose';
|
||||||
import { TIMELINE_DELETE } from '../actions/timelines';
|
import { TIMELINE_DELETE } from '../actions/timelines';
|
||||||
import { STORE_HYDRATE } from '../actions/store';
|
import { STORE_HYDRATE } from '../actions/store';
|
||||||
|
import { REDRAFT } from '../actions/statuses';
|
||||||
import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable';
|
import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable';
|
||||||
import uuid from '../uuid';
|
import uuid from '../uuid';
|
||||||
import { me } from '../initial_state';
|
import { me } from '../initial_state';
|
||||||
|
import { unescapeHTML } from '../utils/html';
|
||||||
|
|
||||||
const initialState = ImmutableMap({
|
const initialState = ImmutableMap({
|
||||||
mounted: 0,
|
mounted: 0,
|
||||||
@@ -170,6 +172,18 @@ const hydrate = (state, hydratedState) => {
|
|||||||
return state;
|
return state;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const domParser = new DOMParser();
|
||||||
|
|
||||||
|
const expandMentions = status => {
|
||||||
|
const fragment = domParser.parseFromString(status.get('content'), 'text/html').documentElement;
|
||||||
|
|
||||||
|
status.get('mentions').forEach(mention => {
|
||||||
|
fragment.querySelector(`a[href="${mention.get('url')}"]`).textContent = `@${mention.get('acct')}`;
|
||||||
|
});
|
||||||
|
|
||||||
|
return fragment.innerHTML;
|
||||||
|
};
|
||||||
|
|
||||||
export default function compose(state = initialState, action) {
|
export default function compose(state = initialState, action) {
|
||||||
switch(action.type) {
|
switch(action.type) {
|
||||||
case STORE_HYDRATE:
|
case STORE_HYDRATE:
|
||||||
@@ -301,6 +315,24 @@ export default function compose(state = initialState, action) {
|
|||||||
|
|
||||||
return item;
|
return item;
|
||||||
}));
|
}));
|
||||||
|
case REDRAFT:
|
||||||
|
return state.withMutations(map => {
|
||||||
|
map.set('text', unescapeHTML(expandMentions(action.status)));
|
||||||
|
map.set('in_reply_to', action.status.get('in_reply_to_id'));
|
||||||
|
map.set('privacy', action.status.get('visibility'));
|
||||||
|
map.set('media_attachments', action.status.get('media_attachments'));
|
||||||
|
map.set('focusDate', new Date());
|
||||||
|
map.set('caretPosition', null);
|
||||||
|
map.set('idempotencyKey', uuid());
|
||||||
|
|
||||||
|
if (action.status.get('spoiler_text').length > 0) {
|
||||||
|
map.set('spoiler', true);
|
||||||
|
map.set('spoiler_text', action.status.get('spoiler_text'));
|
||||||
|
} else {
|
||||||
|
map.set('spoiler', false);
|
||||||
|
map.set('spoiler_text', '');
|
||||||
|
}
|
||||||
|
});
|
||||||
default:
|
default:
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import height_cache from './height_cache';
|
|||||||
import custom_emojis from './custom_emojis';
|
import custom_emojis from './custom_emojis';
|
||||||
import lists from './lists';
|
import lists from './lists';
|
||||||
import listEditor from './list_editor';
|
import listEditor from './list_editor';
|
||||||
import trends from './trends';
|
|
||||||
|
|
||||||
const reducers = {
|
const reducers = {
|
||||||
dropdown_menu,
|
dropdown_menu,
|
||||||
@@ -56,7 +55,6 @@ const reducers = {
|
|||||||
custom_emojis,
|
custom_emojis,
|
||||||
lists,
|
lists,
|
||||||
listEditor,
|
listEditor,
|
||||||
trends,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default combineReducers(reducers);
|
export default combineReducers(reducers);
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
import { TRENDS_FETCH_REQUEST, TRENDS_FETCH_SUCCESS, TRENDS_FETCH_FAIL } from '../actions/trends';
|
|
||||||
import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
|
|
||||||
|
|
||||||
const initialState = ImmutableMap({
|
|
||||||
items: ImmutableList(),
|
|
||||||
isLoading: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default function trendsReducer(state = initialState, action) {
|
|
||||||
switch(action.type) {
|
|
||||||
case TRENDS_FETCH_REQUEST:
|
|
||||||
return state.set('isLoading', true);
|
|
||||||
case TRENDS_FETCH_SUCCESS:
|
|
||||||
return state.withMutations(map => {
|
|
||||||
map.set('items', fromJS(action.trends));
|
|
||||||
map.set('isLoading', false);
|
|
||||||
});
|
|
||||||
case TRENDS_FETCH_FAIL:
|
|
||||||
return state.set('isLoading', false);
|
|
||||||
default:
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
export const unescapeHTML = (html) => {
|
export const unescapeHTML = (html) => {
|
||||||
const wrapper = document.createElement('div');
|
const wrapper = document.createElement('div');
|
||||||
html = html.replace(/<br \/>|<br>|\n/g, ' ');
|
wrapper.innerHTML = html.replace(/<br\s*\/?>/g, '\n').replace(/<\/p><p>/g, '\n\n').replace(/<[^>]*>/g, '');
|
||||||
wrapper.innerHTML = html;
|
|
||||||
return wrapper.textContent;
|
return wrapper.textContent;
|
||||||
};
|
};
|
||||||
|
|||||||
10
app/javascript/mastodon/utils/numbers.js
Normal file
10
app/javascript/mastodon/utils/numbers.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import React, { Fragment } from 'react';
|
||||||
|
import { FormattedNumber } from 'react-intl';
|
||||||
|
|
||||||
|
export const shortNumberFormat = number => {
|
||||||
|
if (number < 1000) {
|
||||||
|
return <FormattedNumber value={number} />;
|
||||||
|
} else {
|
||||||
|
return <Fragment><FormattedNumber value={number / 1000} maximumFractionDigits={1} />K</Fragment>;
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -26,20 +26,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.compose-form .compose-form__modifiers .compose-form__upload__actions .icon-button {
|
.compose-form .compose-form__modifiers .compose-form__upload__actions .icon-button {
|
||||||
color: $ui-base-color;
|
color: lighten($white, 7%);
|
||||||
|
|
||||||
&:active,
|
&:active,
|
||||||
&:focus,
|
&:focus,
|
||||||
&:hover {
|
&:hover {
|
||||||
color: darken($ui-base-color, 7%);
|
color: $white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.compose-form .compose-form__modifiers .compose-form__upload-description input {
|
.compose-form .compose-form__modifiers .compose-form__upload-description input {
|
||||||
color: $ui-base-color;
|
color: lighten($white, 7%);
|
||||||
|
|
||||||
&::placeholder {
|
&::placeholder {
|
||||||
color: $ui-base-color;
|
color: lighten($white, 7%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,6 +47,19 @@
|
|||||||
background: darken($ui-base-color, 6%);
|
background: darken($ui-base-color, 6%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.emoji-mart-bar {
|
||||||
|
border-color: lighten($ui-base-color, 8%);
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
background: $ui-base-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.emoji-mart-search input {
|
||||||
|
background: rgba($ui-base-color, 0.3);
|
||||||
|
border-color: $ui-base-color;
|
||||||
|
}
|
||||||
|
|
||||||
.focusable:focus {
|
.focusable:focus {
|
||||||
background: $ui-base-color;
|
background: $ui-base-color;
|
||||||
}
|
}
|
||||||
@@ -74,6 +87,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Change the background colors of media and video spoiler
|
||||||
|
|
||||||
|
.media-spoiler,
|
||||||
|
.video-player__spoiler {
|
||||||
|
background: $ui-base-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.account-gallery__item a {
|
||||||
|
background-color: $ui-base-color;
|
||||||
|
}
|
||||||
|
|
||||||
// Change the colors used in the dropdown menu
|
// Change the colors used in the dropdown menu
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
background: $ui-base-color;
|
background: $ui-base-color;
|
||||||
@@ -100,7 +124,7 @@
|
|||||||
.dropdown-menu__item {
|
.dropdown-menu__item {
|
||||||
a {
|
a {
|
||||||
background: $ui-base-color;
|
background: $ui-base-color;
|
||||||
color: $ui-secondary-color;
|
color: $darker-text-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,17 +213,18 @@
|
|||||||
// Change the default colors used on some parts of the profile pages
|
// Change the default colors used on some parts of the profile pages
|
||||||
.activity-stream-tabs {
|
.activity-stream-tabs {
|
||||||
background: $account-background-color;
|
background: $account-background-color;
|
||||||
|
border-bottom-color: lighten($ui-base-color, 8%);
|
||||||
a {
|
|
||||||
&.active {
|
|
||||||
color: $ui-primary-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.activity-stream {
|
.activity-stream {
|
||||||
.entry {
|
.entry {
|
||||||
background: $account-background-color;
|
background: $account-background-color;
|
||||||
|
|
||||||
|
.detailed-status.light,
|
||||||
|
.more.light,
|
||||||
|
.status.light {
|
||||||
|
border-bottom-color: lighten($ui-base-color, 8%);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.status.light {
|
.status.light {
|
||||||
@@ -219,7 +244,7 @@
|
|||||||
.account-grid-card {
|
.account-grid-card {
|
||||||
.controls {
|
.controls {
|
||||||
.icon-button {
|
.icon-button {
|
||||||
color: $ui-secondary-color;
|
color: $darker-text-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,7 +255,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.username {
|
.username {
|
||||||
color: $ui-secondary-color;
|
color: $darker-text-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__header__content {
|
.account__header__content {
|
||||||
|
|||||||
@@ -4555,7 +4555,7 @@ a.status-card {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
z-index: 4;
|
z-index: 4;
|
||||||
border: 0;
|
border: 0;
|
||||||
background: $base-shadow-color;
|
background: $base-overlay-background;
|
||||||
color: $darker-text-color;
|
color: $darker-text-color;
|
||||||
transition: none;
|
transition: none;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
|||||||
@@ -62,16 +62,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.emoji-mart-anchor-bar {
|
.emoji-mart-anchor-bar {
|
||||||
bottom: 0;
|
bottom: -1px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.emoji-mart-anchor-bar {
|
.emoji-mart-anchor-bar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: -3px;
|
bottom: -5px;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 3px;
|
height: 4px;
|
||||||
background-color: $highlight-text-color;
|
background-color: $highlight-text-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
.footer {
|
.footer {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
|
padding-bottom: 60px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: $darker-text-color;
|
color: $darker-text-color;
|
||||||
|
|
||||||
|
|||||||
@@ -195,6 +195,7 @@ a.table-action-link {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
background: linear-gradient(to right, orange , yellow, green, cyan, blue, violet,orange , yellow, green, cyan, blue, violet);
|
background: linear-gradient(to right, orange , yellow, green, cyan, blue, violet,orange , yellow, green, cyan, blue, violet);
|
||||||
background-size: 200% 100%;
|
background-size: 200% 100%;
|
||||||
|
-webkit-background-clip: text;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
color: transparent;
|
color: transparent;
|
||||||
animation: Swag 2s linear 0s infinite;
|
animation: Swag 2s linear 0s infinite;
|
||||||
|
|||||||
@@ -6,6 +6,11 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity
|
|||||||
|
|
||||||
return if target_account.nil? || !target_account.local? || delete_arrived_first?(@json['id']) || @account.requested?(target_account)
|
return if target_account.nil? || !target_account.local? || delete_arrived_first?(@json['id']) || @account.requested?(target_account)
|
||||||
|
|
||||||
|
if target_account.blocking?(@account) || target_account.domain_blocking?(@account.domain)
|
||||||
|
reject_follow_request!(target_account)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
# Fast-forward repeat follow requests
|
# Fast-forward repeat follow requests
|
||||||
if @account.following?(target_account)
|
if @account.following?(target_account)
|
||||||
AuthorizeFollowService.new.call(@account, target_account, skip_follow_request: true)
|
AuthorizeFollowService.new.call(@account, target_account, skip_follow_request: true)
|
||||||
@@ -21,4 +26,9 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity
|
|||||||
NotifyService.new.call(target_account, ::Follow.find_by(account: @account, target_account: target_account))
|
NotifyService.new.call(target_account, ::Follow.find_by(account: @account, target_account: target_account))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def reject_follow_request!(target_account)
|
||||||
|
json = Oj.dump(ActivityPub::LinkedDataSignature.new(ActiveModelSerializers::SerializableResource.new(FollowRequest.new(account: @account, target_account: target_account, uri: @json['id']), serializer: ActivityPub::RejectFollowSerializer, adapter: ActivityPub::Adapter).as_json).sign!(target_account))
|
||||||
|
ActivityPub::DeliveryWorker.perform_async(json, target_account.id, @account.inbox_url)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ class FeedManager
|
|||||||
def filter_from_home?(status, receiver_id)
|
def filter_from_home?(status, receiver_id)
|
||||||
return false if receiver_id == status.account_id
|
return false if receiver_id == status.account_id
|
||||||
return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?)
|
return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?)
|
||||||
return true if keyword_filter?(status, receiver_id)
|
return true if keyword_filter_from_home?(status, receiver_id)
|
||||||
|
|
||||||
check_for_mutes = [status.account_id]
|
check_for_mutes = [status.account_id]
|
||||||
check_for_mutes.concat(status.mentions.pluck(:account_id))
|
check_for_mutes.concat(status.mentions.pluck(:account_id))
|
||||||
@@ -182,8 +182,24 @@ class FeedManager
|
|||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
def keyword_filter?(status, receiver_id)
|
def keyword_filter_from_home?(status, receiver_id)
|
||||||
Glitch::KeywordMuteHelper.new(receiver_id).matches?(status)
|
# If this status mentions the receiver, use the mentions scope: it's
|
||||||
|
# possible that the status will show up in the receiver's mentions, which
|
||||||
|
# means it ought to show up in the home feed as well.
|
||||||
|
#
|
||||||
|
# If it doesn't mention the receiver but is still headed for the home feed,
|
||||||
|
# use the home feed scope.
|
||||||
|
scope = if status.mentions.pluck(:account_id).include?(receiver_id)
|
||||||
|
Glitch::KeywordMute::Scopes::Mentions
|
||||||
|
else
|
||||||
|
Glitch::KeywordMute::Scopes::HomeFeed
|
||||||
|
end
|
||||||
|
|
||||||
|
return true if keyword_filter?(status, receiver_id, scope)
|
||||||
|
end
|
||||||
|
|
||||||
|
def keyword_filter?(status, receiver_id, scope)
|
||||||
|
Glitch::KeywordMuteHelper.new(receiver_id).matches?(status, scope)
|
||||||
end
|
end
|
||||||
|
|
||||||
def filter_from_mentions?(status, receiver_id)
|
def filter_from_mentions?(status, receiver_id)
|
||||||
@@ -197,7 +213,7 @@ class FeedManager
|
|||||||
|
|
||||||
should_filter = blocks_or_mutes?(receiver_id, check_for_blocks, :mentions) # Filter if it's from someone I blocked, in reply to someone I blocked, or mentioning someone I blocked (or muted)
|
should_filter = blocks_or_mutes?(receiver_id, check_for_blocks, :mentions) # Filter if it's from someone I blocked, in reply to someone I blocked, or mentioning someone I blocked (or muted)
|
||||||
should_filter ||= (status.account.silenced? && !Follow.where(account_id: receiver_id, target_account_id: status.account_id).exists?) # of if the account is silenced and I'm not following them
|
should_filter ||= (status.account.silenced? && !Follow.where(account_id: receiver_id, target_account_id: status.account_id).exists?) # of if the account is silenced and I'm not following them
|
||||||
should_filter ||= keyword_filter?(status, receiver_id) # or if the mention contains a muted keyword
|
should_filter ||= keyword_filter?(status, receiver_id, Glitch::KeywordMute::Scopes::Mentions) # or if the mention contains a muted keyword
|
||||||
|
|
||||||
should_filter
|
should_filter
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,11 +3,11 @@
|
|||||||
#
|
#
|
||||||
# Table name: bookmarks
|
# Table name: bookmarks
|
||||||
#
|
#
|
||||||
# id :integer not null, primary key
|
# id :bigint(8) not null, primary key
|
||||||
|
# account_id :bigint(8) not null
|
||||||
|
# status_id :bigint(8) not null
|
||||||
# created_at :datetime not null
|
# created_at :datetime not null
|
||||||
# updated_at :datetime not null
|
# updated_at :datetime not null
|
||||||
# account_id :integer not null
|
|
||||||
# status_id :integer not null
|
|
||||||
#
|
#
|
||||||
|
|
||||||
class Bookmark < ApplicationRecord
|
class Bookmark < ApplicationRecord
|
||||||
|
|||||||
@@ -24,14 +24,17 @@ module Remotable
|
|||||||
Request.new(:get, url).perform do |response|
|
Request.new(:get, url).perform do |response|
|
||||||
next if response.code != 200
|
next if response.code != 200
|
||||||
|
|
||||||
matches = response.headers['content-disposition']&.match(/filename="([^"]*)"/)
|
content_type = parse_content_type(response.headers.get('content-type').last)
|
||||||
filename = matches.nil? ? parsed_url.path.split('/').last : matches[1]
|
extname = detect_extname_from_content_type(content_type)
|
||||||
|
|
||||||
|
if extname.nil?
|
||||||
|
disposition = response.headers.get('content-disposition').last
|
||||||
|
matches = disposition&.match(/filename="([^"]*)"/)
|
||||||
|
filename = matches.nil? ? parsed_url.path.split('/').last : matches[1]
|
||||||
|
extname = filename.nil? ? '' : File.extname(filename)
|
||||||
|
end
|
||||||
|
|
||||||
basename = SecureRandom.hex(8)
|
basename = SecureRandom.hex(8)
|
||||||
extname = if filename.nil?
|
|
||||||
''
|
|
||||||
else
|
|
||||||
File.extname(filename)
|
|
||||||
end
|
|
||||||
|
|
||||||
send("#{attachment_name}=", StringIO.new(response.body_with_limit(limit)))
|
send("#{attachment_name}=", StringIO.new(response.body_with_limit(limit)))
|
||||||
send("#{attachment_name}_file_name=", basename + extname)
|
send("#{attachment_name}_file_name=", basename + extname)
|
||||||
@@ -57,4 +60,26 @@ module Remotable
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def detect_extname_from_content_type(content_type)
|
||||||
|
return if content_type.nil?
|
||||||
|
|
||||||
|
type = MIME::Types[content_type].first
|
||||||
|
|
||||||
|
return if type.nil?
|
||||||
|
|
||||||
|
extname = type.extensions.first
|
||||||
|
|
||||||
|
return if extname.nil?
|
||||||
|
|
||||||
|
".#{extname}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse_content_type(content_type)
|
||||||
|
return if content_type.nil?
|
||||||
|
|
||||||
|
content_type.split(/\s*;\s*/).first
|
||||||
|
end
|
||||||
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