Merge branch 'main' into glitch-soc/merge-upstream

Conflicts:
- `app/javascript/packs/admin.js`:
  Conflicts due to glitch-soc's theming system.
  Upstream changes have been ported to `app/javascript/core/admin.js`
- `app/models/trends/statuses.rb`:
  Minor conflict due to glitch-soc's option to allow CWed toots in trends.
  Ported upstream changes.
glitch-soc
Claire 7 months ago
commit 392ca0472a
  1. 8
      app/controllers/authorize_interactions_controller.rb
  2. 5
      app/controllers/following_accounts_controller.rb
  3. 3
      app/controllers/oauth/tokens_controller.rb
  4. 10
      app/javascript/core/admin.js
  5. 2
      app/javascript/mastodon/components/common_counter.js
  6. 4
      app/javascript/mastodon/components/status.js
  7. 1
      app/javascript/mastodon/components/status_action_bar.js
  8. 3
      app/javascript/mastodon/features/account/components/header.js
  9. 4
      app/javascript/mastodon/features/account_timeline/components/header.js
  10. 4
      app/javascript/mastodon/features/account_timeline/index.js
  11. 2
      app/javascript/mastodon/features/bookmarked_statuses/index.js
  12. 2
      app/javascript/mastodon/features/compose/components/action_bar.js
  13. 10
      app/javascript/mastodon/features/compose/components/privacy_dropdown.js
  14. 6
      app/javascript/mastodon/features/compose/components/search_results.js
  15. 4
      app/javascript/mastodon/features/compose/containers/warning_container.js
  16. 2
      app/javascript/mastodon/features/compose/index.js
  17. 6
      app/javascript/mastodon/features/direct_timeline/index.js
  18. 2
      app/javascript/mastodon/features/directory/components/account_card.js
  19. 2
      app/javascript/mastodon/features/explore/results.js
  20. 2
      app/javascript/mastodon/features/favourited_statuses/index.js
  21. 2
      app/javascript/mastodon/features/favourites/index.js
  22. 6
      app/javascript/mastodon/features/getting_started/index.js
  23. 6
      app/javascript/mastodon/features/keyboard_shortcuts/index.js
  24. 2
      app/javascript/mastodon/features/notifications/components/column_settings.js
  25. 2
      app/javascript/mastodon/features/pinned_statuses/index.js
  26. 2
      app/javascript/mastodon/features/reblogs/index.js
  27. 1
      app/javascript/mastodon/features/status/components/action_bar.js
  28. 2
      app/javascript/mastodon/features/ui/components/navigation_panel.js
  29. 87
      app/javascript/mastodon/locales/af.json
  30. 17
      app/javascript/mastodon/locales/ar.json
  31. 23
      app/javascript/mastodon/locales/ast.json
  32. 17
      app/javascript/mastodon/locales/bg.json
  33. 17
      app/javascript/mastodon/locales/bn.json
  34. 17
      app/javascript/mastodon/locales/br.json
  35. 15
      app/javascript/mastodon/locales/ca.json
  36. 17
      app/javascript/mastodon/locales/ckb.json
  37. 17
      app/javascript/mastodon/locales/co.json
  38. 17
      app/javascript/mastodon/locales/cs.json
  39. 23
      app/javascript/mastodon/locales/cy.json
  40. 19
      app/javascript/mastodon/locales/da.json
  41. 19
      app/javascript/mastodon/locales/de.json
  42. 80
      app/javascript/mastodon/locales/defaultMessages.json
  43. 15
      app/javascript/mastodon/locales/el.json
  44. 17
      app/javascript/mastodon/locales/en.json
  45. 17
      app/javascript/mastodon/locales/eo.json
  46. 15
      app/javascript/mastodon/locales/es-AR.json
  47. 19
      app/javascript/mastodon/locales/es-MX.json
  48. 17
      app/javascript/mastodon/locales/es.json
  49. 17
      app/javascript/mastodon/locales/et.json
  50. 17
      app/javascript/mastodon/locales/eu.json
  51. 17
      app/javascript/mastodon/locales/fa.json
  52. 17
      app/javascript/mastodon/locales/fi.json
  53. 15
      app/javascript/mastodon/locales/fr.json
  54. 45
      app/javascript/mastodon/locales/ga.json
  55. 15
      app/javascript/mastodon/locales/gd.json
  56. 15
      app/javascript/mastodon/locales/gl.json
  57. 17
      app/javascript/mastodon/locales/he.json
  58. 15
      app/javascript/mastodon/locales/hi.json
  59. 17
      app/javascript/mastodon/locales/hr.json
  60. 17
      app/javascript/mastodon/locales/hu.json
  61. 17
      app/javascript/mastodon/locales/hy.json
  62. 17
      app/javascript/mastodon/locales/id.json
  63. 17
      app/javascript/mastodon/locales/io.json
  64. 15
      app/javascript/mastodon/locales/is.json
  65. 17
      app/javascript/mastodon/locales/it.json
  66. 15
      app/javascript/mastodon/locales/ja.json
  67. 17
      app/javascript/mastodon/locales/ka.json
  68. 17
      app/javascript/mastodon/locales/kab.json
  69. 17
      app/javascript/mastodon/locales/kk.json
  70. 13
      app/javascript/mastodon/locales/kn.json
  71. 17
      app/javascript/mastodon/locales/ko.json
  72. 15
      app/javascript/mastodon/locales/ku.json
  73. 17
      app/javascript/mastodon/locales/kw.json
  74. 13
      app/javascript/mastodon/locales/lt.json
  75. 15
      app/javascript/mastodon/locales/lv.json
  76. 17
      app/javascript/mastodon/locales/mk.json
  77. 17
      app/javascript/mastodon/locales/ml.json
  78. 13
      app/javascript/mastodon/locales/mr.json
  79. 17
      app/javascript/mastodon/locales/ms.json
  80. 17
      app/javascript/mastodon/locales/nl.json
  81. 59
      app/javascript/mastodon/locales/nn.json
  82. 59
      app/javascript/mastodon/locales/no.json
  83. 17
      app/javascript/mastodon/locales/oc.json
  84. 13
      app/javascript/mastodon/locales/pa.json
  85. 17
      app/javascript/mastodon/locales/pl.json
  86. 19
      app/javascript/mastodon/locales/pt-BR.json
  87. 17
      app/javascript/mastodon/locales/pt-PT.json
  88. 15
      app/javascript/mastodon/locales/ro.json
  89. 17
      app/javascript/mastodon/locales/ru.json
  90. 13
      app/javascript/mastodon/locales/sa.json
  91. 17
      app/javascript/mastodon/locales/sc.json
  92. 15
      app/javascript/mastodon/locales/si.json
  93. 17
      app/javascript/mastodon/locales/sk.json
  94. 17
      app/javascript/mastodon/locales/sl.json
  95. 17
      app/javascript/mastodon/locales/sq.json
  96. 17
      app/javascript/mastodon/locales/sr-Latn.json
  97. 17
      app/javascript/mastodon/locales/sr.json
  98. 25
      app/javascript/mastodon/locales/sv.json
  99. 13
      app/javascript/mastodon/locales/szl.json
  100. 17
      app/javascript/mastodon/locales/ta.json
  101. Some files were not shown because too many files have changed in this diff Show More

@ -14,7 +14,7 @@ class AuthorizeInteractionsController < ApplicationController
if @resource.is_a?(Account)
render :show
elsif @resource.is_a?(Status)
redirect_to web_url("statuses/#{@resource.id}")
redirect_to web_url("@#{@resource.account.pretty_acct}/#{@resource.id}")
else
render :error
end
@ -26,15 +26,17 @@ class AuthorizeInteractionsController < ApplicationController
else
render :error
end
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
rescue ActiveRecord::RecordNotFound
render :error
end
private
def set_resource
@resource = located_resource || render(:error)
@resource = located_resource
authorize(@resource, :show?) if @resource.is_a?(Status)
rescue Mastodon::NotPermittedError
not_found
end
def located_resource

@ -22,7 +22,10 @@ class FollowingAccountsController < ApplicationController
end
format.json do
raise Mastodon::NotPermittedError if page_requested? && @account.hide_collections?
if page_requested? && @account.hide_collections?
forbidden
next
end
expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?)

@ -2,7 +2,8 @@
class Oauth::TokensController < Doorkeeper::TokensController
def revoke
unsubscribe_for_token if authorized? && token.accessible?
unsubscribe_for_token if token.present? && authorized? && token.accessible?
super
end

@ -101,4 +101,14 @@ ready(() => {
const registrationMode = document.getElementById('form_admin_settings_registrations_mode');
if (registrationMode) onChangeRegistrationMode(registrationMode);
document.querySelector('a#add-instance-button')?.addEventListener('click', (e) => {
const domain = document.getElementById('by_domain')?.value;
if (domain) {
const url = new URL(event.target.href);
url.searchParams.set('_domain', domain);
e.target.href = url;
}
});
});

@ -25,7 +25,7 @@ export function counterRenderer(counterType, isBold = true) {
return (displayNumber, pluralReady) => (
<FormattedMessage
id='account.statuses_counter'
defaultMessage='{count, plural, one {{counter} Toot} other {{counter} Toots}}'
defaultMessage='{count, plural, one {{counter} Post} other {{counter} Posts}}'
values={{
count: pluralReady,
counter: renderCounter(displayNumber),

@ -56,7 +56,7 @@ const messages = defineMessages({
public_short: { id: 'privacy.public.short', defaultMessage: 'Public' },
unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' },
private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' },
direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' },
direct_short: { id: 'privacy.direct.short', defaultMessage: 'Mentioned people only' },
edited: { id: 'status.edited', defaultMessage: 'Edited {date}' },
});
@ -349,7 +349,7 @@ class Status extends ImmutablePureComponent {
prepend = (
<div className='status__prepend'>
<div className='status__prepend-icon-wrapper'><Icon id='thumb-tack' className='status__prepend-icon' fixedWidth /></div>
<FormattedMessage id='status.pinned' defaultMessage='Pinned toot' />
<FormattedMessage id='status.pinned' defaultMessage='Pinned post' />
</div>
);
} else if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') {

@ -266,7 +266,6 @@ class StatusActionBar extends ImmutablePureComponent {
menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick });
} else {
menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.handleMentionClick });
menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.handleDirectClick });
menu.push(null);
if (relationship && relationship.get('muting')) {

@ -38,7 +38,7 @@ const messages = defineMessages({
showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' },
enableNotifications: { id: 'account.enable_notifications', defaultMessage: 'Notify me when @{name} posts' },
disableNotifications: { id: 'account.disable_notifications', defaultMessage: 'Stop notifying me when @{name} posts' },
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },
@ -177,7 +177,6 @@ class Header extends ImmutablePureComponent {
if (account.get('id') !== me) {
menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.props.onMention });
menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.props.onDirect });
menu.push(null);
}

@ -121,8 +121,8 @@ export default class Header extends ImmutablePureComponent {
{!hideTabs && (
<div className='account__section-headline'>
<NavLink exact to={`/@${account.get('acct')}`}><FormattedMessage id='account.posts' defaultMessage='Toots' /></NavLink>
<NavLink exact to={`/@${account.get('acct')}/with_replies`}><FormattedMessage id='account.posts_with_replies' defaultMessage='Toots and replies' /></NavLink>
<NavLink exact to={`/@${account.get('acct')}`}><FormattedMessage id='account.posts' defaultMessage='Posts' /></NavLink>
<NavLink exact to={`/@${account.get('acct')}/with_replies`}><FormattedMessage id='account.posts_with_replies' defaultMessage='Posts and replies' /></NavLink>
<NavLink exact to={`/@${account.get('acct')}/media`}><FormattedMessage id='account.media' defaultMessage='Media' /></NavLink>
</div>
)}

@ -45,7 +45,7 @@ const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) =
};
const RemoteHint = ({ url }) => (
<TimelineHint url={url} resource={<FormattedMessage id='timeline_hint.resources.statuses' defaultMessage='Older toots' />} />
<TimelineHint url={url} resource={<FormattedMessage id='timeline_hint.resources.statuses' defaultMessage='Older posts' />} />
);
RemoteHint.propTypes = {
@ -156,7 +156,7 @@ class AccountTimeline extends ImmutablePureComponent {
} else if (remote && statusIds.isEmpty()) {
emptyMessage = <RemoteHint url={remoteUrl} />;
} else {
emptyMessage = <FormattedMessage id='empty_column.account_timeline' defaultMessage='No toots here!' />;
emptyMessage = <FormattedMessage id='empty_column.account_timeline' defaultMessage='No posts found' />;
}
const remoteMessage = remote ? <RemoteHint url={remoteUrl} /> : null;

@ -70,7 +70,7 @@ class Bookmarks extends ImmutablePureComponent {
const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props;
const pinned = !!columnId;
const emptyMessage = <FormattedMessage id='empty_column.bookmarked_statuses' defaultMessage="You don't have any bookmarked toots yet. When you bookmark one, it will show up here." />;
const emptyMessage = <FormattedMessage id='empty_column.bookmarked_statuses' defaultMessage="You don't have any bookmarked posts yet. When you bookmark one, it will show up here." />;
return (
<Column bindToDocument={!multiColumn} ref={this.setRef} label={intl.formatMessage(messages.heading)}>

@ -6,7 +6,7 @@ import { defineMessages, injectIntl } from 'react-intl';
const messages = defineMessages({
edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },

@ -11,12 +11,12 @@ import Icon from 'mastodon/components/icon';
const messages = defineMessages({
public_short: { id: 'privacy.public.short', defaultMessage: 'Public' },
public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all, shown in public timelines' },
public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all' },
unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' },
unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but not in public timelines' },
private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' },
unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but opted-out of discovery features' },
private_short: { id: 'privacy.private.short', defaultMessage: 'Followers only' },
private_long: { id: 'privacy.private.long', defaultMessage: 'Visible for followers only' },
direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' },
direct_short: { id: 'privacy.direct.short', defaultMessage: 'Only people I mention' },
direct_long: { id: 'privacy.direct.long', defaultMessage: 'Visible for mentioned users only' },
change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' },
});
@ -242,7 +242,7 @@ class PrivacyDropdown extends React.PureComponent {
if (!this.props.noDirect) {
this.options.push(
{ icon: 'envelope', value: 'direct', text: formatMessage(messages.direct_short), meta: formatMessage(messages.direct_long) },
{ icon: 'at', value: 'direct', text: formatMessage(messages.direct_short), meta: formatMessage(messages.direct_long) },
);
}
}

@ -91,7 +91,7 @@ class SearchResults extends ImmutablePureComponent {
count += results.get('statuses').size;
statuses = (
<div className='search-results__section'>
<h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>
<h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></h5>
{results.get('statuses').map(statusId => <StatusContainer key={statusId} id={statusId} />)}
@ -101,10 +101,10 @@ class SearchResults extends ImmutablePureComponent {
} else if(results.get('statuses') && results.get('statuses').size === 0 && !searchEnabled && !(searchTerm.startsWith('@') || searchTerm.startsWith('#') || searchTerm.includes(' '))) {
statuses = (
<div className='search-results__section'>
<h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>
<h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></h5>
<div className='search-results__info'>
<FormattedMessage id='search_results.statuses_fts_disabled' defaultMessage='Searching toots by their content is not enabled on this Mastodon server.' />
<FormattedMessage id='search_results.statuses_fts_disabled' defaultMessage='Searching posts by their content is not enabled on this Mastodon server.' />
</div>
</div>
);

@ -42,13 +42,13 @@ const WarningWrapper = ({ needsLockWarning, hashtagWarning, directMessageWarning
}
if (hashtagWarning) {
return <Warning message={<FormattedMessage id='compose_form.hashtag_warning' defaultMessage="This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag." />} />;
return <Warning message={<FormattedMessage id='compose_form.hashtag_warning' defaultMessage="This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag." />} />;
}
if (directMessageWarning) {
const message = (
<span>
<FormattedMessage id='compose_form.direct_message_warning' defaultMessage='This toot will only be sent to all the mentioned users.' /> <a href='/terms' target='_blank'><FormattedMessage id='compose_form.direct_message_warning_learn_more' defaultMessage='Learn more' /></a>
<FormattedMessage id='compose_form.encryption_warning' defaultMessage='Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.' /> <a href='/terms' target='_blank'><FormattedMessage id='compose_form.direct_message_warning_learn_more' defaultMessage='Learn more' /></a>
</span>
);

@ -26,7 +26,7 @@ const messages = defineMessages({
community: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },
compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new toot' },
compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new post' },
logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' },
logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' },
});

@ -10,7 +10,7 @@ import { connectDirectStream } from '../../actions/streaming';
import ConversationsListContainer from './containers/conversations_list_container';
const messages = defineMessages({
title: { id: 'column.direct', defaultMessage: 'Direct messages' },
title: { id: 'column.conversations', defaultMessage: 'Conversations' },
});
export default @connect()
@ -76,7 +76,7 @@ class DirectTimeline extends React.PureComponent {
return (
<Column bindToDocument={!multiColumn} ref={this.setRef} label={intl.formatMessage(messages.title)}>
<ColumnHeader
icon='envelope'
icon='at'
active={hasUnread}
title={intl.formatMessage(messages.title)}
onPin={this.handlePin}
@ -91,7 +91,7 @@ class DirectTimeline extends React.PureComponent {
scrollKey={`direct_timeline-${columnId}`}
timelineId='direct'
onLoadMore={this.handleLoadMore}
emptyMessage={<FormattedMessage id='empty_column.direct' defaultMessage="You don't have any direct messages yet. When you send or receive one, it will show up here." />}
emptyMessage={<FormattedMessage id='empty_column.conversations' defaultMessage="Once you send or receive a post that's only visible to people mentioned in it, it will show up here." />}
/>
</Column>
);

@ -191,7 +191,7 @@ class AccountCard extends ImmutablePureComponent {
<div className='account-card__counters__item'>
<ShortNumber value={account.get('statuses_count')} />
<small>
<FormattedMessage id='account.posts' defaultMessage='Toots' />
<FormattedMessage id='account.posts' defaultMessage='Posts' />
</small>
</div>

@ -100,7 +100,7 @@ class Results extends React.PureComponent {
<button onClick={this.handleSelectAll} className={type === 'all' && 'active'}><FormattedMessage id='search_results.all' defaultMessage='All' /></button>
<button onClick={this.handleSelectAccounts} className={type === 'accounts' && 'active'}><FormattedMessage id='search_results.accounts' defaultMessage='People' /></button>
<button onClick={this.handleSelectHashtags} className={type === 'hashtags' && 'active'}><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></button>
<button onClick={this.handleSelectStatuses} className={type === 'statuses' && 'active'}><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></button>
<button onClick={this.handleSelectStatuses} className={type === 'statuses' && 'active'}><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></button>
</div>
<div className='explore__search-results'>

@ -70,7 +70,7 @@ class Favourites extends ImmutablePureComponent {
const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props;
const pinned = !!columnId;
const emptyMessage = <FormattedMessage id='empty_column.favourited_statuses' defaultMessage="You don't have any favourite toots yet. When you favourite one, it will show up here." />;
const emptyMessage = <FormattedMessage id='empty_column.favourited_statuses' defaultMessage="You don't have any favourite posts yet. When you favourite one, it will show up here." />;
return (
<Column bindToDocument={!multiColumn} ref={this.setRef} label={intl.formatMessage(messages.heading)}>

@ -59,7 +59,7 @@ class Favourites extends ImmutablePureComponent {
);
}
const emptyMessage = <FormattedMessage id='empty_column.favourites' defaultMessage='No one has favourited this toot yet. When someone does, they will show up here.' />;
const emptyMessage = <FormattedMessage id='empty_column.favourites' defaultMessage='No one has favourited this post yet. When someone does, they will show up here.' />;
return (
<Column bindToDocument={!multiColumn}>

@ -22,7 +22,7 @@ const messages = defineMessages({
settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' },
community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },
explore: { id: 'navigation_bar.explore', defaultMessage: 'Explore' },
direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' },
direct: { id: 'column.conversations', defaultMessage: 'Conversations' },
bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
@ -30,7 +30,7 @@ const messages = defineMessages({
blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },
domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' },
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' },
lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },
discover: { id: 'navigation_bar.discover', defaultMessage: 'Discover' },
personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' },
@ -130,7 +130,7 @@ class GettingStarted extends ImmutablePureComponent {
}
navItems.push(
<ColumnLink key='direct' icon='envelope' text={intl.formatMessage(messages.direct)} to='/conversations' />,
<ColumnLink key='direct' icon='at' text={intl.formatMessage(messages.direct)} to='/conversations' />,
<ColumnLink key='bookmark' icon='bookmark' text={intl.formatMessage(messages.bookmarks)} to='/bookmarks' />,
<ColumnLink key='favourites' icon='star' text={intl.formatMessage(messages.favourites)} to='/favourites' />,
<ColumnLink key='lists' icon='list-ul' text={intl.formatMessage(messages.lists)} to='/lists' />,

@ -86,7 +86,7 @@ class KeyboardShortcuts extends ImmutablePureComponent {
</tr>
<tr>
<td><kbd>alt</kbd>+<kbd>n</kbd></td>
<td><FormattedMessage id='keyboard_shortcuts.toot' defaultMessage='to start a brand new toot' /></td>
<td><FormattedMessage id='keyboard_shortcuts.toot' defaultMessage='to start a brand new post' /></td>
</tr>
<tr>
<td><kbd>alt</kbd>+<kbd>x</kbd></td>
@ -122,7 +122,7 @@ class KeyboardShortcuts extends ImmutablePureComponent {
</tr>
<tr>
<td><kbd>g</kbd>+<kbd>d</kbd></td>
<td><FormattedMessage id='keyboard_shortcuts.direct' defaultMessage='to open direct messages column' /></td>
<td><FormattedMessage id='keyboard_shortcuts.conversations' defaultMessage='to open conversations column' /></td>
</tr>
<tr>
<td><kbd>g</kbd>+<kbd>s</kbd></td>
@ -134,7 +134,7 @@ class KeyboardShortcuts extends ImmutablePureComponent {
</tr>
<tr>
<td><kbd>g</kbd>+<kbd>p</kbd></td>
<td><FormattedMessage id='keyboard_shortcuts.pinned' defaultMessage='to open pinned toots list' /></td>
<td><FormattedMessage id='keyboard_shortcuts.pinned' defaultMessage='to open pinned posts list' /></td>
</tr>
<tr>
<td><kbd>g</kbd>+<kbd>u</kbd></td>

@ -145,7 +145,7 @@ export default class ColumnSettings extends React.PureComponent {
</div>
<div role='group' aria-labelledby='notifications-status'>
<span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.status' defaultMessage='New toots:' /></span>
<span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.status' defaultMessage='New posts:' /></span>
<div className='column-settings__row'>
<SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'status']} onChange={onChange} label={alertStr} />

@ -10,7 +10,7 @@ import { defineMessages, injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
heading: { id: 'column.pins', defaultMessage: 'Pinned toot' },
heading: { id: 'column.pins', defaultMessage: 'Pinned post' },
});
const mapStateToProps = state => ({

@ -59,7 +59,7 @@ class Reblogs extends ImmutablePureComponent {
);
}
const emptyMessage = <FormattedMessage id='status.reblogs.empty' defaultMessage='No one has boosted this toot yet. When someone does, they will show up here.' />;
const emptyMessage = <FormattedMessage id='status.reblogs.empty' defaultMessage='No one has boosted this post yet. When someone does, they will show up here.' />;
return (
<Column bindToDocument={!multiColumn}>

@ -220,7 +220,6 @@ class ActionBar extends React.PureComponent {
menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick });
} else {
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(null);
if (relationship && relationship.get('muting')) {

@ -16,7 +16,7 @@ const NavigationPanel = () => (
<NavLink className='column-link column-link--transparent' to='/explore' data-preview-title-id='explore.title' data-preview-icon='hashtag'><Icon className='column-link__icon' id='hashtag' fixedWidth /><FormattedMessage id='explore.title' defaultMessage='Explore' /></NavLink>
<NavLink className='column-link column-link--transparent' to='/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><Icon className='column-link__icon' id='users' fixedWidth /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>
<NavLink className='column-link column-link--transparent' exact to='/public' data-preview-title-id='column.public' data-preview-icon='globe' ><Icon className='column-link__icon' id='globe' fixedWidth /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>
<NavLink className='column-link column-link--transparent' to='/conversations'><Icon className='column-link__icon' id='envelope' fixedWidth /><FormattedMessage id='navigation_bar.direct' defaultMessage='Direct messages' /></NavLink>
<NavLink className='column-link column-link--transparent' to='/conversations'><Icon className='column-link__icon' id='at' fixedWidth /><FormattedMessage id='column.conversations' defaultMessage='Conversations' /></NavLink>
<NavLink className='column-link column-link--transparent' to='/favourites'><Icon className='column-link__icon' id='star' fixedWidth /><FormattedMessage id='navigation_bar.favourites' defaultMessage='Favourites' /></NavLink>
<NavLink className='column-link column-link--transparent' to='/bookmarks'><Icon className='column-link__icon' id='bookmark' fixedWidth /><FormattedMessage id='navigation_bar.bookmarks' defaultMessage='Bookmarks' /></NavLink>
<NavLink className='column-link column-link--transparent' to='/lists'><Icon className='column-link__icon' id='list-ul' fixedWidth /><FormattedMessage id='navigation_bar.lists' defaultMessage='Lists' /></NavLink>

@ -1,59 +1,59 @@
{
"account.account_note_header": "Note",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.account_note_header": "Nota",
"account.add_or_remove_from_list": "Voeg by of verwyder van lyste",
"account.badges.bot": "Bot",
"account.badges.group": "Group",
"account.block": "Block @{name}",
"account.block_domain": "Block domain {domain}",
"account.blocked": "Blocked",
"account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct message @{name}",
"account.badges.group": "Groep",
"account.block": "Blok @{name}",
"account.block_domain": "Blokeer alles van {domain}",
"account.blocked": "Geblok",
"account.browse_more_on_origin_server": "Snuffel rond op oorspronklike profiel",
"account.cancel_follow_request": "Kanselleer volgversoek",
"account.direct": "Stuur direkte boodskap aan @{name}",
"account.disable_notifications": "Stop notifying me when @{name} posts",
"account.domain_blocked": "Domain blocked",
"account.edit_profile": "Edit profile",
"account.enable_notifications": "Notify me when @{name} posts",
"account.endorse": "Feature on profile",
"account.follow": "Follow",
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.edit_profile": "Redigeer profiel",
"account.enable_notifications": "Stel my in kennis wanneer @{name} plasings maak",
"account.endorse": "Beklemtoon op profiel",
"account.follow": "Volg",
"account.followers": "Volgelinge",
"account.followers.empty": "Niemand volg tans hierdie gebruiker nie.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following": "Following",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.joined": "Joined {date}",
"account.link_verified_on": "Ownership of this link was checked on {date}",
"account.follows_you": "Volg jou",
"account.hide_reblogs": "Versteek hupstoot vanaf @{name}",
"account.joined": "{date} aangesluit",
"account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"account.media": "Media",
"account.mention": "Mention @{name}",
"account.moved_to": "{name} has moved to:",
"account.mute": "Mute @{name}",
"account.mute_notifications": "Mute notifications from @{name}",
"account.muted": "Muted",
"account.mention": "Noem @{name}",
"account.moved_to": "{name} is geskuif na:",
"account.mute": "Demp @{name}",
"account.mute_notifications": "Demp kennisgewings van @{name}",
"account.muted": "Gedemp",
"account.posts": "Toots",
"account.posts_with_replies": "Toots and replies",
"account.report": "Report @{name}",
"account.report": "Rapporteer @{name}",
"account.requested": "Awaiting approval",
"account.share": "Share @{name}'s profile",
"account.show_reblogs": "Show boosts from @{name}",
"account.share": "Deel @{name} se profiel",
"account.show_reblogs": "Wys hupstote vanaf @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.unblock": "Unblock @{name}",
"account.unblock_domain": "Unblock domain {domain}",
"account.unblock_short": "Unblock",
"account.unendorse": "Don't feature on profile",
"account.unblock": "Ontblok @{name}",
"account.unblock_domain": "Ontblok domein {domain}",
"account.unblock_short": "Ontblok",
"account.unendorse": "Moenie beklemtoon op profiel nie",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
"account.unmute_short": "Unmute",
"account.unmute": "Ontdemp @{name}",
"account.unmute_notifications": "Ontdemp kennisgewings vanaf @{name}",
"account.unmute_short": "Ontdemp",
"account_note.placeholder": "Click to add a note",
"admin.dashboard.daily_retention": "User retention rate by day after sign-up",
"admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
"admin.dashboard.retention.average": "Average",
"admin.dashboard.retention.average": "Gemiddeld",
"admin.dashboard.retention.cohort": "Sign-up month",
"admin.dashboard.retention.cohort_size": "New users",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"admin.dashboard.retention.cohort_size": "Nuwe gebruikers",
"alert.rate_limited.message": "Probeer asb. weer na {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
@ -70,7 +70,7 @@
"column.blocks": "Blocked users",
"column.bookmarks": "Bookmarks",
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.conversations": "Conversations",
"column.directory": "Browse profiles",
"column.domain_blocks": "Blocked domains",
"column.favourites": "Favourites",
@ -92,8 +92,8 @@
"community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
"community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
@ -166,7 +166,7 @@
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.",
"empty_column.domain_blocks": "There are no blocked domains yet.",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
@ -230,8 +230,8 @@
"keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.conversations": "to open conversations column",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "to favourite",
@ -290,7 +290,6 @@
"navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile",
@ -370,9 +369,9 @@
"privacy.direct.short": "Direct",
"privacy.private.long": "Visible for followers only",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Visible for all, shown in public timelines",
"privacy.public.long": "Visible for all",
"privacy.public.short": "Public",
"privacy.unlisted.long": "Visible for all, but not in public timelines",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.short": "Unlisted",
"refresh": "Refresh",
"regeneration_indicator.label": "Loading…",

@ -70,7 +70,7 @@
"column.blocks": "المُستَخدِمون المَحظورون",
"column.bookmarks": "الفواصل المرجعية",
"column.community": "الخيط الزمني المحلي",
"column.direct": "الرسائل المباشرة",
"column.conversations": "المحادثات",
"column.directory": َصَفُّحُ المَلفات الشخصية",
"column.domain_blocks": "النِّطاقَاتُ المَحظُورَة",
"column.favourites": "المُفَضَّلَة",
@ -92,8 +92,8 @@
"community.column_settings.local_only": "المحلي فقط",
"community.column_settings.media_only": "الوسائط فقط",
"community.column_settings.remote_only": "عن بُعد فقط",
"compose_form.direct_message_warning": "سوف تُرسَل هذه التَّبويقة فقط للمُستَخدِمين المَذكورين.",
"compose_form.direct_message_warning_learn_more": َعَلَّم المَزيد",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.",
"compose_form.lock_disclaimer": "حسابُك غير {locked}. يُمكن لأي شخص مُتابعتك لرؤية (منشورات المتابعين فقط).",
"compose_form.lock_disclaimer.lock": ُقفَل",
@ -166,7 +166,7 @@
"empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.",
"empty_column.bookmarked_statuses": "ليس لديك أية منشورات في الفواصل المرجعية بعد. عندما ستقوم بإضافة البعض منها، ستظهر هنا.",
"empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!",
"empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.",
"empty_column.conversations": "عندما ترسل أو تستلم منشورًا محصورٌا على الأشخاص المشار إليهم فيه، سيظهر هنا.",
"empty_column.domain_blocks": "ليس هناك نطاقات مخفية بعد.",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.favourited_statuses": "ليس لديك أية منشورات مفضلة بعد. عندما ستقوم بالإعجاب بواحدة، ستظهر هنا.",
@ -230,8 +230,8 @@
"keyboard_shortcuts.boost": "للترقية",
"keyboard_shortcuts.column": "للتركيز على منشور على أحد الأعمدة",
"keyboard_shortcuts.compose": "للتركيز على نافذة تحرير النصوص",
"keyboard_shortcuts.conversations": "لفتح عمود المحادثات",
"keyboard_shortcuts.description": "الوصف",
"keyboard_shortcuts.direct": "لفتح عمود الرسائل المباشرة",
"keyboard_shortcuts.down": "للانتقال إلى أسفل القائمة",
"keyboard_shortcuts.enter": "لفتح المنشور",
"keyboard_shortcuts.favourite": "للإضافة إلى المفضلة",
@ -290,7 +290,6 @@
"navigation_bar.bookmarks": "الفواصل المرجعية",
"navigation_bar.community_timeline": "الخيط العام المحلي",
"navigation_bar.compose": "لتحرير منشور جديد",
"navigation_bar.direct": "الرسائل المباشِرة",
"navigation_bar.discover": "اكتشف",
"navigation_bar.domain_blocks": "النطاقات المخفية",
"navigation_bar.edit_profile": "عدّل الملف التعريفي",
@ -367,12 +366,12 @@
"poll_button.remove_poll": "إزالة استطلاع الرأي",
"privacy.change": "اضبط خصوصية المنشور",
"privacy.direct.long": "أنشر إلى المستخدمين المشار إليهم فقط",
"privacy.direct.short": باشر",
"privacy.direct.short": "للمشار إليهم فقط",
"privacy.private.long": "أنشر لمتابعيك فقط",
"privacy.private.short": متابعيك فقط",
"privacy.public.long": "أنشر على الخيوط العامة",
"privacy.private.short": لمتابِعين فقط",
"privacy.public.long": "مرئي للكل",
"privacy.public.short": "للعامة",
"privacy.unlisted.long": "لا تقم بإدراجه على الخيوط العامة",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.short": "غير مدرج",
"refresh": "أنعِش",
"regeneration_indicator.label": "جارٍ التحميل…",

@ -70,7 +70,7 @@
"column.blocks": "Usuarios bloquiaos",
"column.bookmarks": "Marcadores",
"column.community": "Llinia temporal llocal",
"column.direct": "Mensaxes direutos",
"column.conversations": "Conversations",
"column.directory": "Browse profiles",
"column.domain_blocks": "Dominios anubríos",
"column.favourites": "Favoritos",
@ -92,9 +92,9 @@
"community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Namái multimedia",
"community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "Esti barritu namái va unviase a los usuarios mentaos.",
"compose_form.direct_message_warning_learn_more": "Saber más",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "¿En qué pienses?",
@ -166,11 +166,11 @@
"empty_column.blocks": "Entá nun bloquiesti a nengún usuariu.",
"empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "Entá nun tienes nuengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.",
"empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.",
"empty_column.domain_blocks": "Entá nun hai dominios anubríos.",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.",
"empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
"empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.",
"empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
"empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas una, va amosase equí.",
"empty_column.hashtag": "Entá nun hai nada nesta etiqueta.",
@ -230,8 +230,8 @@
"keyboard_shortcuts.boost": "pa compartir un toot",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "Enfocar l'área de composición",
"keyboard_shortcuts.conversations": "to open conversations column",
"keyboard_shortcuts.description": "Descripción",
"keyboard_shortcuts.direct": "Abrir la columna de los mensaxes direutos",
"keyboard_shortcuts.down": "pa baxar na llista",
"keyboard_shortcuts.enter": "p'abrir estaos",
"keyboard_shortcuts.favourite": "p'amestar a Favoritos",
@ -289,8 +289,7 @@
"navigation_bar.blocks": "Usuarios bloquiaos",
"navigation_bar.bookmarks": "Marcadores",
"navigation_bar.community_timeline": "Llinia temporal llocal",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Mensaxes direutos",
"navigation_bar.compose": "Compose new post",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Dominios anubríos",
"navigation_bar.edit_profile": "Editar el perfil",
@ -369,10 +368,10 @@
"privacy.direct.long": "Post to mentioned users only",
"privacy.direct.short": "Direct",
"privacy.private.long": "Post to followers only",
"privacy.private.short": "Namái siguidores",
"privacy.public.long": "Visible for all, shown in public timelines",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Visible for all",
"privacy.public.short": "Public",
"privacy.unlisted.long": "Nun apaez nes llinies temporales públiques",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.short": "Nun llistar",
"refresh": "Refresh",
"regeneration_indicator.label": "Cargando…",
@ -502,7 +501,7 @@
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.resources.followers": "Followers",
"timeline_hint.resources.follows": "Follows",
"timeline_hint.resources.statuses": "Older toots",
"timeline_hint.resources.statuses": "Older posts",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.trending_now": "Trending now",
"ui.beforeunload": "El borrador va perdese si coles de Mastodon.",

@ -70,7 +70,7 @@
"column.blocks": "Блокирани потребители",
"column.bookmarks": "Отметки",
"column.community": "Локална емисия",
"column.direct": "Директни съобщения",
"column.conversations": "Conversations",
"column.directory": "Преглед на профили",
"column.domain_blocks": "Hidden domains",
"column.favourites": "Любими",
@ -92,8 +92,8 @@
"community.column_settings.local_only": "Само локално",
"community.column_settings.media_only": "Media only",
"community.column_settings.remote_only": "Само дистанционно",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Още информация",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "Тази публикация няма да бъде изброена под нито един хаштаг, тъй като е скрита. Само публични публикации могат да се търсят по хаштаг.",
"compose_form.lock_disclaimer": "Вашият акаунт не е {locked}. Всеки може да ви последва, за да прегледа вашите публикации само за последователи.",
"compose_form.lock_disclaimer.lock": "заключено",
@ -166,7 +166,7 @@
"empty_column.blocks": "Не сте блокирали потребители все още.",
"empty_column.bookmarked_statuses": "Все още нямате отметнати публикации. Когато отметнете някоя, тя ще се покаже тук.",
"empty_column.community": "Локалната емисия е празна. Напишете нещо публично, за да започнете!",
"empty_column.direct": "Все още нямате директни съобщения. Когато изпратите или получите някое, то ще се покаже тук.",
"empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.favourited_statuses": "Все още нямате любими публикации. Когато поставите някоя в любими, тя ще се покаже тук.",
@ -230,8 +230,8 @@
"keyboard_shortcuts.boost": "за споделяне",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "за фокусиране на текстовото пространство за композиране",
"keyboard_shortcuts.conversations": "to open conversations column",
"keyboard_shortcuts.description": "Описание",
"keyboard_shortcuts.direct": "за отваряне на колона за директни съобщения",
"keyboard_shortcuts.down": "за придвижване надолу в списъка",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "за поставяне в любими",
@ -290,7 +290,6 @@
"navigation_bar.bookmarks": "Отметки",
"navigation_bar.community_timeline": "Локална емисия",
"navigation_bar.compose": "Композиране на нова публикация",
"navigation_bar.direct": "Директни съобщения",
"navigation_bar.discover": "Откриване",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Редактирай профил",
@ -367,12 +366,12 @@
"poll_button.remove_poll": "Премахване на анкета",
"privacy.change": "Adjust status privacy",
"privacy.direct.long": "Post to mentioned users only",
"privacy.direct.short": "Директно",
"privacy.direct.short": "Direct",
"privacy.private.long": "Post to followers only",
"privacy.private.short": "Само за последователи",
"privacy.public.long": "Post to public timelines",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Visible for all",
"privacy.public.short": "Публично",
"privacy.unlisted.long": "Do not show in public timelines",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.short": "Скрито",
"refresh": "Опресняване",
"regeneration_indicator.label": "Зареждане…",

@ -70,7 +70,7 @@
"column.blocks": "যর বলক কর হয়",
"column.bookmarks": "বকমক",
"column.community": "স সময়সি",
"column.direct": "সরসরি",
"column.conversations": "Conversations",
"column.directory": "পইল বউজ করন",
"column.domain_blocks": "লনগি",
"column.favourites": "পছনর গ",
@ -92,8 +92,8 @@
"community.column_settings.local_only": "শর সয়",
"community.column_settings.media_only": "শর ছবিিিও",
"community.column_settings.remote_only": "শর দরবর",
"compose_form.direct_message_warning": "শর যরক উলখ কর হয়রকই এই টটটি হব ।",
"compose_form.direct_message_warning_learn_more": "আরন",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "কশটর ভতর এই টটটিকবরণ এটিিবহিত। শর পরকয ঠটগশটর ভতরওয়।",
"compose_form.lock_disclaimer": "আপনর নিবনধনওয়ই, যও আপন অনসরণ করতরব এব অনরকদর জনয লখতরব।",
"compose_form.lock_disclaimer.lock": "তওয়",
@ -166,7 +166,7 @@
"empty_column.blocks": "আপনিযবহরকর বলক করন নি।",
"empty_column.bookmarked_statuses": "আপনর ক এখনও কনও বকমকড টট নই। আপনি যখন একটিকমক করন, এটি এখরদরিত হব।",
"empty_column.community": "স সময়রিই। পরকযভিিির উদধন করন!",
"empty_column.direct": "আপনর ক সরসরিই। যদিও পয়, স এখ",
"empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.",
"empty_column.domain_blocks": "এখনও কনও লন নই।",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.favourited_statuses": "আপনর পছনর কট এখনই। আপনি পছনর হিিিত করল এখওয়।",
@ -230,8 +230,8 @@
"keyboard_shortcuts.boost": "সমরথন করত",
"keyboard_shortcuts.column": "ক কলমএ কস করত",
"keyboard_shortcuts.compose": "ল সমপদনর জয়গয় ফস করত",
"keyboard_shortcuts.conversations": "to open conversations column",
"keyboard_shortcuts.description": "বিবরণ",
"keyboard_shortcuts.direct": "সরসরিখত",
"keyboard_shortcuts.down": "তির ভতরি",
"keyboard_shortcuts.enter": "অবসখত",
"keyboard_shortcuts.favourite": "পছনর দখত",
@ -290,7 +290,6 @@
"navigation_bar.bookmarks": "বকমক",
"navigation_bar.community_timeline": "স সময়র",
"navigation_bar.compose": "নতন টট লিন",
"navigation_bar.direct": "সরসরিি",
"navigation_bar.discover": "ঘন",
"navigation_bar.domain_blocks": "লনগি",
"navigation_bar.edit_profile": "নির প সমদন করত",
@ -367,12 +366,12 @@
"poll_button.remove_poll": "নিচন বদ দি",
"privacy.change": "লর গপনয়ত অবসিক করত",
"privacy.direct.long": "শর উলিত বযবহরকর কিখত",
"privacy.direct.short": "সরসরি",
"privacy.direct.short": "Direct",
"privacy.private.long": "শর আপনর অনসরণকর লিখত",
"privacy.private.short": "র অনসরণকর জন",
"privacy.public.long": "সরবজনন পরকয সময়রিখত",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Visible for all",
"privacy.public.short": "সরবজনন পরকয",
"privacy.unlisted.long": "সরবজনন পরকয সময়র",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.short": "পরকয নয়",
"refresh": "সতজ কর",
"regeneration_indicator.label": "আসছ…",

@ -70,7 +70,7 @@
"column.blocks": "Implijer·ezed·ien berzet",
"column.bookmarks": "Sinedoù",
"column.community": "Red-amzer lec'hel",
"column.direct": "Kemennadoù prevez",
"column.conversations": "Conversations",
"column.directory": "Mont a-dreuz ar profiloù",
"column.domain_blocks": "Domani berzet",
"column.favourites": "Muiañ-karet",
@ -92,8 +92,8 @@
"community.column_settings.local_only": "Nemet lec'hel",
"community.column_settings.media_only": "Nemet Mediaoù",
"community.column_settings.remote_only": "Nemet a-bell",
"compose_form.direct_message_warning": "An toud-mañ a vo kaset nemet d'an implijer·ezed·ien meneget.",
"compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "Ne vo ket lakaet an toud-mañ er rolloù gerioù-klik dre mard eo anlistennet. N'eus nemet an toudoù foran a c'hall bezañ klasket dre c'her-klik.",
"compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal heuliañ ac'hanoc'h evit gwelout ho toudoù prevez.",
"compose_form.lock_disclaimer.lock": "prennet",
@ -166,7 +166,7 @@
"empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.",
"empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan ganeoc'h e teuio war wel amañ.",
"empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !",
"empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.",
"empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.",
"empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.",