Browse Source

Merge branch 'master' of github.com:tootsuite/mastodon

master
Matt Baer 5 years ago
parent
commit
2cab63dce1
100 changed files with 1955 additions and 1136 deletions
  1. +1
    -0
      .codeclimate.yml
  2. +8
    -0
      .env.production.sample
  3. +14
    -1
      .eslintrc.yml
  4. +4
    -1
      .rubocop.yml
  5. +2
    -1
      app/controllers/api/v1/domain_blocks_controller.rb
  6. +9
    -6
      app/controllers/api/v1/timelines/direct_controller.rb
  7. +8
    -0
      app/controllers/api/v2/search_controller.rb
  8. +5
    -0
      app/controllers/application_controller.rb
  9. +17
    -2
      app/controllers/intents_controller.rb
  10. +1
    -1
      app/controllers/settings/follower_domains_controller.rb
  11. +5
    -4
      app/javascript/mastodon/actions/importer/normalizer.js
  12. +1
    -1
      app/javascript/mastodon/actions/search.js
  13. +16
    -1
      app/javascript/mastodon/actions/statuses.js
  14. +0
    -20
      app/javascript/mastodon/actions/timelines.js
  15. +0
    -22
      app/javascript/mastodon/components/collapsable.js
  16. +34
    -0
      app/javascript/mastodon/components/hashtag.js
  17. +8
    -3
      app/javascript/mastodon/components/scrollable_list.js
  18. +6
    -0
      app/javascript/mastodon/components/status_action_bar.js
  19. +1
    -0
      app/javascript/mastodon/components/status_list.js
  20. +7
    -5
      app/javascript/mastodon/containers/status_container.js
  21. +29
    -8
      app/javascript/mastodon/features/account/components/action_bar.js
  22. +11
    -0
      app/javascript/mastodon/features/account/components/header.js
  23. +1
    -1
      app/javascript/mastodon/features/account_timeline/containers/header_container.js
  24. +12
    -13
      app/javascript/mastodon/features/community_timeline/index.js
  25. +53
    -0
      app/javascript/mastodon/features/compose/components/action_bar.js
  26. +23
    -16
      app/javascript/mastodon/features/compose/components/compose_form.js
  27. +1
    -1
      app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
  28. +6
    -2
      app/javascript/mastodon/features/compose/components/navigation_bar.js
  29. +6
    -9
      app/javascript/mastodon/features/compose/components/search_results.js
  30. +1
    -0
      app/javascript/mastodon/features/compose/containers/compose_form_container.js
  31. +3
    -3
      app/javascript/mastodon/features/compose/index.js
  32. +1
    -1
      app/javascript/mastodon/features/domain_blocks/index.js
  33. +1
    -1
      app/javascript/mastodon/features/emoji/__tests__/emoji-test.js
  34. +54
    -8
      app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js
  35. +8
    -2
      app/javascript/mastodon/features/emoji/emoji_compressed.js
  36. +23
    -3
      app/javascript/mastodon/features/emoji/emoji_mart_search_light.js
  37. +2
    -2
      app/javascript/mastodon/features/emoji/emoji_picker.js
  38. +54
    -48
      app/javascript/mastodon/features/getting_started/index.js
  39. +12
    -13
      app/javascript/mastodon/features/public_timeline/index.js
  40. +7
    -1
      app/javascript/mastodon/features/status/components/action_bar.js
  41. +49
    -10
      app/javascript/mastodon/features/status/index.js
  42. +66
    -0
      app/javascript/mastodon/features/trends/index.js
  43. +7
    -0
      app/javascript/mastodon/features/ui/components/report_modal.js
  44. +2
    -1
      app/javascript/mastodon/features/ui/index.js
  45. +9
    -4
      app/javascript/mastodon/locales/ar.json
  46. +9
    -4
      app/javascript/mastodon/locales/bg.json
  47. +11
    -6
      app/javascript/mastodon/locales/ca.json
  48. +11
    -6
      app/javascript/mastodon/locales/co.json
  49. +9
    -4
      app/javascript/mastodon/locales/de.json
  50. +106
    -36
      app/javascript/mastodon/locales/defaultMessages.json
  51. +65
    -60
      app/javascript/mastodon/locales/el.json
  52. +11
    -6
      app/javascript/mastodon/locales/en.json
  53. +15
    -10
      app/javascript/mastodon/locales/eo.json
  54. +9
    -4
      app/javascript/mastodon/locales/es.json
  55. +268
    -263
      app/javascript/mastodon/locales/eu.json
  56. +53
    -48
      app/javascript/mastodon/locales/fa.json
  57. +15
    -10
      app/javascript/mastodon/locales/fi.json
  58. +13
    -8
      app/javascript/mastodon/locales/fr.json
  59. +10
    -5
      app/javascript/mastodon/locales/gl.json
  60. +9
    -4
      app/javascript/mastodon/locales/he.json
  61. +9
    -4
      app/javascript/mastodon/locales/hr.json
  62. +9
    -4
      app/javascript/mastodon/locales/hu.json
  63. +9
    -4
      app/javascript/mastodon/locales/hy.json
  64. +9
    -4
      app/javascript/mastodon/locales/id.json
  65. +9
    -4
      app/javascript/mastodon/locales/io.json
  66. +28
    -23
      app/javascript/mastodon/locales/it.json
  67. +16
    -11
      app/javascript/mastodon/locales/ja.json
  68. +10
    -5
      app/javascript/mastodon/locales/ko.json
  69. +11
    -6
      app/javascript/mastodon/locales/nl.json
  70. +9
    -4
      app/javascript/mastodon/locales/no.json
  71. +12
    -7
      app/javascript/mastodon/locales/oc.json
  72. +9
    -4
      app/javascript/mastodon/locales/pl.json
  73. +14
    -9
      app/javascript/mastodon/locales/pt-BR.json
  74. +9
    -4
      app/javascript/mastodon/locales/pt.json
  75. +9
    -4
      app/javascript/mastodon/locales/ru.json
  76. +23
    -18
      app/javascript/mastodon/locales/sk.json
  77. +9
    -4
      app/javascript/mastodon/locales/sl.json
  78. +9
    -4
      app/javascript/mastodon/locales/sr-Latn.json
  79. +9
    -4
      app/javascript/mastodon/locales/sr.json
  80. +12
    -7
      app/javascript/mastodon/locales/sv.json
  81. +9
    -4
      app/javascript/mastodon/locales/te.json
  82. +9
    -4
      app/javascript/mastodon/locales/th.json
  83. +9
    -4
      app/javascript/mastodon/locales/tr.json
  84. +9
    -4
      app/javascript/mastodon/locales/uk.json
  85. +9
    -4
      app/javascript/mastodon/locales/zh-CN.json
  86. +20
    -15
      app/javascript/mastodon/locales/zh-HK.json
  87. +9
    -4
      app/javascript/mastodon/locales/zh-TW.json
  88. +38
    -1
      app/javascript/mastodon/reducers/compose.js
  89. +60
    -35
      app/javascript/mastodon/reducers/contexts.js
  90. +3
    -1
      app/javascript/mastodon/reducers/domain_lists.js
  91. +2
    -2
      app/javascript/mastodon/reducers/search.js
  92. +4
    -0
      app/javascript/mastodon/reducers/settings.js
  93. +2
    -2
      app/javascript/mastodon/service_worker/entry.js
  94. +16
    -4
      app/javascript/mastodon/service_worker/web_push_notifications.js
  95. +1
    -2
      app/javascript/mastodon/utils/html.js
  96. +10
    -0
      app/javascript/mastodon/utils/numbers.js
  97. +2
    -226
      app/javascript/styles/mastodon-light.scss
  98. +265
    -0
      app/javascript/styles/mastodon-light/diff.scss
  99. +41
    -0
      app/javascript/styles/mastodon-light/variables.scss
  100. +1
    -1
      app/javascript/styles/mastodon/about.scss

+ 1
- 0
.codeclimate.yml View File

@@ -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:


+ 8
- 0
.env.production.sample View File

@@ -88,6 +88,10 @@ SMTP_FROM_ADDRESS=notifications@example.com
# CDN_HOST=https://assets.example.com # CDN_HOST=https://assets.example.com


# S3 (optional) # S3 (optional)
# The attachment host must allow cross origin request from WEB_DOMAIN or
# LOCAL_DOMAIN if WEB_DOMAIN is not set. For example, the server may have the
# following header field:
# Access-Control-Allow-Origin: https://192.168.1.123:9000/
# S3_ENABLED=true # S3_ENABLED=true
# S3_BUCKET= # S3_BUCKET=
# AWS_ACCESS_KEY_ID= # AWS_ACCESS_KEY_ID=
@@ -97,6 +101,8 @@ SMTP_FROM_ADDRESS=notifications@example.com
# S3_HOSTNAME=192.168.1.123:9000 # S3_HOSTNAME=192.168.1.123:9000


# S3 (Minio Config (optional) Please check Minio instance for details) # S3 (Minio Config (optional) Please check Minio instance for details)
# The attachment host must allow cross origin request - see the description
# above.
# S3_ENABLED=true # S3_ENABLED=true
# S3_BUCKET= # S3_BUCKET=
# AWS_ACCESS_KEY_ID= # AWS_ACCESS_KEY_ID=
@@ -108,6 +114,8 @@ SMTP_FROM_ADDRESS=notifications@example.com
# S3_SIGNATURE_VERSION= # S3_SIGNATURE_VERSION=


# Swift (optional) # Swift (optional)
# The attachment host must allow cross origin request - see the description
# above.
# SWIFT_ENABLED=true # SWIFT_ENABLED=true
# SWIFT_USERNAME= # SWIFT_USERNAME=
# For Keystone V3, the value for SWIFT_TENANT should be the project name # For Keystone V3, the value for SWIFT_TENANT should be the project name


+ 14
- 1
.eslintrc.yml View File

@@ -7,6 +7,9 @@ env:
es6: true es6: true
jest: true jest: true


globals:
ATTACHMENT_HOST: false

parser: babel-eslint parser: babel-eslint


plugins: plugins:
@@ -110,13 +113,23 @@ rules:
jsx-a11y/accessible-emoji: warn jsx-a11y/accessible-emoji: warn
jsx-a11y/alt-text: warn jsx-a11y/alt-text: warn
jsx-a11y/anchor-has-content: warn jsx-a11y/anchor-has-content: warn
jsx-a11y/anchor-is-valid:
- warn
- components:
- Link
- NavLink
specialLink:
- to
aspect:
- noHref
- invalidHref
- preferButton
jsx-a11y/aria-activedescendant-has-tabindex: warn jsx-a11y/aria-activedescendant-has-tabindex: warn
jsx-a11y/aria-props: warn jsx-a11y/aria-props: warn
jsx-a11y/aria-proptypes: warn jsx-a11y/aria-proptypes: warn
jsx-a11y/aria-role: warn jsx-a11y/aria-role: warn
jsx-a11y/aria-unsupported-elements: warn jsx-a11y/aria-unsupported-elements: warn
jsx-a11y/heading-has-content: warn jsx-a11y/heading-has-content: warn
jsx-a11y/href-no-hash: warn
jsx-a11y/html-has-lang: warn jsx-a11y/html-has-lang: warn
jsx-a11y/iframe-has-title: warn jsx-a11y/iframe-has-title: warn
jsx-a11y/img-redundant-alt: warn jsx-a11y/img-redundant-alt: warn


+ 4
- 1
.rubocop.yml View File

@@ -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'

+ 2
- 1
app/controllers/api/v1/domain_blocks_controller.rb View File

@@ -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




+ 9
- 6
app/controllers/api/v1/timelines/direct_controller.rb View File

@@ -23,15 +23,18 @@ class Api::V1::Timelines::DirectController < Api::BaseController
end end


def direct_statuses def direct_statuses
direct_timeline_statuses.paginate_by_max_id(
limit_param(DEFAULT_STATUSES_LIMIT),
params[:max_id],
params[:since_id]
)
direct_timeline_statuses
end end


def direct_timeline_statuses def direct_timeline_statuses
Status.as_direct_timeline(current_account)
# this query requires built in pagination.
Status.as_direct_timeline(
current_account,
limit_param(DEFAULT_STATUSES_LIMIT),
params[:max_id],
params[:since_id],
true # returns array of cache_ids object
)
end end


def insert_pagination_headers def insert_pagination_headers


+ 8
- 0
app/controllers/api/v2/search_controller.rb View File

@@ -0,0 +1,8 @@
# frozen_string_literal: true

class Api::V2::SearchController < Api::V1::SearchController
def index
@search = Search.new(search)
render json: @search, serializer: REST::V2::SearchSerializer
end
end

+ 5
- 0
app/controllers/application_controller.rb View File

@@ -20,6 +20,7 @@ class ApplicationController < ActionController::Base
rescue_from ActionController::RoutingError, with: :not_found rescue_from ActionController::RoutingError, with: :not_found
rescue_from ActiveRecord::RecordNotFound, with: :not_found rescue_from ActiveRecord::RecordNotFound, with: :not_found
rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity
rescue_from ActionController::UnknownFormat, with: :not_acceptable
rescue_from Mastodon::NotPermittedError, with: :forbidden rescue_from Mastodon::NotPermittedError, with: :forbidden


before_action :store_current_location, except: :raise_not_found, unless: :devise_controller? before_action :store_current_location, except: :raise_not_found, unless: :devise_controller?
@@ -73,6 +74,10 @@ class ApplicationController < ActionController::Base
respond_with_error(422) respond_with_error(422)
end end


def not_acceptable
respond_with_error(406)
end

def single_user_mode? def single_user_mode?
@single_user_mode ||= Rails.configuration.x.single_user_mode && Account.exists? @single_user_mode ||= Rails.configuration.x.single_user_mode && Account.exists?
end end


+ 17
- 2
app/controllers/intents_controller.rb View File

@@ -1,9 +1,10 @@
# frozen_string_literal: true # frozen_string_literal: true


class IntentsController < ApplicationController class IntentsController < ApplicationController
def show
uri = Addressable::URI.parse(params[:uri])
before_action :check_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

+ 1
- 1
app/controllers/settings/follower_domains_controller.rb View File

@@ -13,7 +13,7 @@ class Settings::FollowerDomainsController < ApplicationController
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




+ 5
- 4
app/javascript/mastodon/actions/importer/normalizer.js View File

@@ -50,13 +50,14 @@ export function normalizeStatus(status, normalOldStatus) {
normalStatus.spoilerHtml = normalOldStatus.get('spoilerHtml'); normalStatus.spoilerHtml = normalOldStatus.get('spoilerHtml');
normalStatus.hidden = normalOldStatus.get('hidden'); normalStatus.hidden = normalOldStatus.get('hidden');
} else { } else {
const searchContent = [status.spoiler_text, status.content].join('\n\n').replace(/<br\s*\/?>/g, '\n').replace(/<\/p><p>/g, '\n\n');
const emojiMap = makeEmojiMap(normalStatus);
const spoilerText = normalStatus.spoiler_text || '';
const searchContent = [spoilerText, status.content].join('\n\n').replace(/<br\s*\/?>/g, '\n').replace(/<\/p><p>/g, '\n\n');
const emojiMap = makeEmojiMap(normalStatus);


normalStatus.search_index = domParser.parseFromString(searchContent, 'text/html').documentElement.textContent; normalStatus.search_index = domParser.parseFromString(searchContent, 'text/html').documentElement.textContent;
normalStatus.contentHtml = emojify(normalStatus.content, emojiMap); normalStatus.contentHtml = emojify(normalStatus.content, emojiMap);
normalStatus.spoilerHtml = emojify(escapeTextContentForBrowser(normalStatus.spoiler_text || ''), emojiMap);
normalStatus.hidden = normalStatus.sensitive;
normalStatus.spoilerHtml = emojify(escapeTextContentForBrowser(spoilerText), emojiMap);
normalStatus.hidden = spoilerText.length > 0 || normalStatus.sensitive;
} }


return normalStatus; return normalStatus;


+ 1
- 1
app/javascript/mastodon/actions/search.js View File

@@ -33,7 +33,7 @@ export function submitSearch() {


dispatch(fetchSearchRequest()); dispatch(fetchSearchRequest());


api(getState).get('/api/v1/search', {
api(getState).get('/api/v2/search', {
params: { params: {
q: value, q: value,
resolve: true, resolve: true,


+ 16
- 1
app/javascript/mastodon/actions/statuses.js View File

@@ -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));
}); });


+ 0
- 20
app/javascript/mastodon/actions/timelines.js View File

@@ -13,21 +13,9 @@ export const TIMELINE_SCROLL_TOP = 'TIMELINE_SCROLL_TOP';


export const TIMELINE_DISCONNECT = 'TIMELINE_DISCONNECT'; export const TIMELINE_DISCONNECT = 'TIMELINE_DISCONNECT';


export const TIMELINE_CONTEXT_UPDATE = 'CONTEXT_UPDATE';

export function updateTimeline(timeline, status) { export function updateTimeline(timeline, status) {
return (dispatch, getState) => { return (dispatch, getState) => {
const references = status.reblog ? getState().get('statuses').filter((item, itemId) => (itemId === status.reblog.id || item.get('reblog') === status.reblog.id)).map((_, itemId) => itemId) : []; const references = status.reblog ? getState().get('statuses').filter((item, itemId) => (itemId === status.reblog.id || item.get('reblog') === status.reblog.id)).map((_, itemId) => itemId) : [];
const parents = [];

if (status.in_reply_to_id) {
let parent = getState().getIn(['statuses', status.in_reply_to_id]);

while (parent && parent.get('in_reply_to_id')) {
parents.push(parent.get('id'));
parent = getState().getIn(['statuses', parent.get('in_reply_to_id')]);
}
}


dispatch(importFetchedStatus(status)); dispatch(importFetchedStatus(status));


@@ -37,14 +25,6 @@ export function updateTimeline(timeline, status) {
status, status,
references, references,
}); });

if (parents.length > 0) {
dispatch({
type: TIMELINE_CONTEXT_UPDATE,
status,
references: parents,
});
}
}; };
}; };




+ 0
- 22
app/javascript/mastodon/components/collapsable.js View File

@@ -1,22 +0,0 @@
import React from 'react';
import Motion from '../features/ui/util/optional_motion';
import spring from 'react-motion/lib/spring';
import PropTypes from 'prop-types';

const Collapsable = ({ fullHeight, isVisible, children }) => (
<Motion defaultStyle={{ opacity: !isVisible ? 0 : 100, height: isVisible ? fullHeight : 0 }} style={{ opacity: spring(!isVisible ? 0 : 100), height: spring(!isVisible ? 0 : fullHeight) }}>
{({ opacity, height }) => (
<div style={{ height: `${height}px`, overflow: 'hidden', opacity: opacity / 100, display: Math.floor(opacity) === 0 ? 'none' : 'block' }}>
{children}
</div>
)}
</Motion>
);

Collapsable.propTypes = {
fullHeight: PropTypes.number.isRequired,
isVisible: PropTypes.bool.isRequired,
children: PropTypes.node.isRequired,
};

export default Collapsable;

+ 34
- 0
app/javascript/mastodon/components/hashtag.js View File

@@ -0,0 +1,34 @@
import React from 'react';
import { Sparklines, SparklinesCurve } from 'react-sparklines';
import { Link } from 'react-router-dom';
import { FormattedMessage } from 'react-intl';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { shortNumberFormat } from '../utils/numbers';

const Hashtag = ({ hashtag }) => (
<div className='trends__item'>
<div className='trends__item__name'>
<Link to={`/timelines/tag/${hashtag.get('name')}`}>
#<span>{hashtag.get('name')}</span>
</Link>

<FormattedMessage id='trends.count_by_accounts' defaultMessage='{count} {rawCount, plural, one {person} other {people}} talking' values={{ rawCount: hashtag.getIn(['history', 0, 'accounts']), count: <strong>{shortNumberFormat(hashtag.getIn(['history', 0, 'accounts']))}</strong> }} />
</div>

<div className='trends__item__current'>
{shortNumberFormat(hashtag.getIn(['history', 0, 'uses']))}
</div>

<div className='trends__item__sparkline'>
<Sparklines width={50} height={28} data={hashtag.get('history').reverse().map(day => day.get('uses')).toArray()}>
<SparklinesCurve style={{ fill: 'none' }} />
</Sparklines>
</div>
</div>
);

Hashtag.propTypes = {
hashtag: ImmutablePropTypes.map.isRequired,
};

export default Hashtag;

+ 8
- 3
app/javascript/mastodon/components/scrollable_list.js View File

@@ -25,6 +25,7 @@ export default class ScrollableList extends PureComponent {
isLoading: PropTypes.bool, isLoading: PropTypes.bool,
hasMore: PropTypes.bool, hasMore: PropTypes.bool,
prepend: PropTypes.node, prepend: PropTypes.node,
alwaysPrepend: PropTypes.bool,
emptyMessage: PropTypes.node, emptyMessage: PropTypes.node,
children: PropTypes.node, children: PropTypes.node,
}; };
@@ -140,7 +141,7 @@ export default class ScrollableList extends PureComponent {
} }


render () { render () {
const { children, scrollKey, trackScroll, shouldUpdateScroll, isLoading, hasMore, prepend, emptyMessage, onLoadMore } = this.props;
const { children, scrollKey, trackScroll, shouldUpdateScroll, isLoading, hasMore, prepend, alwaysPrepend, emptyMessage, onLoadMore } = this.props;
const { fullscreen } = this.state; const { fullscreen } = this.state;
const childrenCount = React.Children.count(children); const childrenCount = React.Children.count(children);


@@ -172,8 +173,12 @@ export default class ScrollableList extends PureComponent {
); );
} else { } else {
scrollableArea = ( scrollableArea = (
<div className='empty-column-indicator' ref={this.setRef}>
{emptyMessage}
<div style={{ flex: '1 1 auto', display: 'flex', flexDirection: 'column' }}>
{alwaysPrepend && prepend}

<div className='empty-column-indicator' ref={this.setRef}>
{emptyMessage}
</div>
</div> </div>
); );
} }


+ 6
- 0
app/javascript/mastodon/components/status_action_bar.js View File

@@ -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 });


+ 1
- 0
app/javascript/mastodon/components/status_list.js View File

@@ -24,6 +24,7 @@ export default class StatusList extends ImmutablePureComponent {
hasMore: PropTypes.bool, hasMore: PropTypes.bool,
prepend: PropTypes.node, prepend: PropTypes.node,
emptyMessage: PropTypes.node, emptyMessage: PropTypes.node,
alwaysPrepend: PropTypes.bool,
}; };


static defaultProps = { static defaultProps = {


+ 7
- 5
app/javascript/mastodon/containers/status_container.js View File

@@ -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),
confirm: intl.formatMessage(messages.deleteConfirm),
onConfirm: () => dispatch(deleteStatus(status.get('id'))),
message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),
confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),
onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)),
})); }));
} }
}, },


+ 29
- 8
app/javascript/mastodon/features/account/components/action_bar.js View File

@@ -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}' },
@@ -23,6 +24,14 @@ const messages = defineMessages({
unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' }, unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' },
hideReblogs: { id: 'account.hide_reblogs', defaultMessage: 'Hide boosts from @{name}' }, hideReblogs: { id: 'account.hide_reblogs', defaultMessage: 'Hide boosts from @{name}' },
showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' }, showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' },
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },
lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },
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' },
}); });


@injectIntl @injectIntl
@@ -54,17 +63,29 @@ export default class ActionBar extends React.PureComponent {
let menu = []; let menu = [];
let extraInfo = ''; let extraInfo = '';


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 });
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);
}


if ('share' in navigator) { if ('share' in navigator) {
menu.push({ text: intl.formatMessage(messages.share, { name: account.get('username') }), action: this.handleShare }); menu.push({ text: intl.formatMessage(messages.share, { name: account.get('username') }), action: this.handleShare });
menu.push(null);
} }


menu.push(null);

if (account.get('id') === me) { if (account.get('id') === me) {
menu.push({ text: intl.formatMessage(messages.edit_profile), href: '/settings/profile' }); menu.push({ text: intl.formatMessage(messages.edit_profile), href: '/settings/profile' });
menu.push({ text: intl.formatMessage(messages.preferences), href: '/settings/preferences' });
menu.push({ text: intl.formatMessage(messages.pins), to: '/pinned' });
menu.push(null);
menu.push({ text: intl.formatMessage(messages.follow_requests), to: '/follow_requests' });
menu.push({ text: intl.formatMessage(messages.favourites), to: '/favourites' });
menu.push({ text: intl.formatMessage(messages.lists), to: '/lists' });
menu.push(null);
menu.push({ text: intl.formatMessage(messages.mutes), to: '/mutes' });
menu.push({ text: intl.formatMessage(messages.blocks), to: '/blocks' });
menu.push({ text: intl.formatMessage(messages.domain_blocks), to: '/domain_blocks' });
} else { } else {
if (account.getIn(['relationship', 'following'])) { if (account.getIn(['relationship', 'following'])) {
if (account.getIn(['relationship', 'showing_reblogs'])) { if (account.getIn(['relationship', 'showing_reblogs'])) {
@@ -126,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>


+ 11
- 0
app/javascript/mastodon/features/account/components/header.js View File

@@ -14,6 +14,7 @@ const messages = defineMessages({
follow: { id: 'account.follow', defaultMessage: 'Follow' }, follow: { id: 'account.follow', defaultMessage: 'Follow' },
requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' },
unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },
edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },
}); });


class Avatar extends ImmutablePureComponent { class Avatar extends ImmutablePureComponent {
@@ -74,6 +75,10 @@ export default class Header extends ImmutablePureComponent {
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
}; };


openEditProfile = () => {
window.open('/settings/profile', '_blank');
}

render () { render () {
const { account, intl } = this.props; const { account, intl } = this.props;


@@ -118,6 +123,12 @@ export default class Header extends ImmutablePureComponent {
</div> </div>
); );
} }
} else {
actionBtn = (
<div className='account--action-button'>
<IconButton size={26} icon='pencil' title={intl.formatMessage(messages.edit_profile)} onClick={this.openEditProfile} />
</div>
);
} }


if (account.get('moved') && !account.getIn(['relationship', 'following'])) { if (account.get('moved') && !account.getIn(['relationship', 'following'])) {


+ 1
- 1
app/javascript/mastodon/features/account_timeline/containers/header_container.js View File

@@ -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)),
})); }));


+ 12
- 13
app/javascript/mastodon/features/community_timeline/index.js View File

@@ -8,7 +8,7 @@ import ColumnHeader from '../../components/column_header';
import { expandCommunityTimeline } from '../../actions/timelines'; import { expandCommunityTimeline } from '../../actions/timelines';
import { addColumn, removeColumn, moveColumn, changeColumnParams } from '../../actions/columns'; import { addColumn, removeColumn, moveColumn, changeColumnParams } from '../../actions/columns';
import ColumnSettingsContainer from './containers/column_settings_container'; import ColumnSettingsContainer from './containers/column_settings_container';
// import SectionHeadline from './components/section_headline';
import SectionHeadline from './components/section_headline';
import { connectCommunityStream } from '../../actions/streaming'; import { connectCommunityStream } from '../../actions/streaming';


const messages = defineMessages({ const messages = defineMessages({
@@ -100,17 +100,15 @@ export default class CommunityTimeline extends React.PureComponent {
const { intl, hasUnread, columnId, multiColumn, onlyMedia } = this.props; const { intl, hasUnread, columnId, multiColumn, onlyMedia } = this.props;
const pinned = !!columnId; const pinned = !!columnId;


// pending
//
// const headline = (
// <SectionHeadline
// timelineId='community'
// to='/timelines/public/local'
// pinned={pinned}
// onlyMedia={onlyMedia}
// onClick={this.handleHeadlineLinkClick}
// />
// );
const headline = (
<SectionHeadline
timelineId='community'
to='/timelines/public/local'
pinned={pinned}
onlyMedia={onlyMedia}
onClick={this.handleHeadlineLinkClick}
/>
);


return ( return (
<Column ref={this.setRef}> <Column ref={this.setRef}>
@@ -128,7 +126,8 @@ export default class CommunityTimeline extends React.PureComponent {
</ColumnHeader> </ColumnHeader>


<StatusListContainer <StatusListContainer
// prepend={headline}
prepend={headline}
alwaysPrepend
trackScroll={!pinned} trackScroll={!pinned}
scrollKey={`community_timeline-${columnId}`} scrollKey={`community_timeline-${columnId}`}
timelineId={`community${onlyMedia ? ':media' : ''}`} timelineId={`community${onlyMedia ? ':media' : ''}`}


+ 53
- 0
app/javascript/mastodon/features/compose/components/action_bar.js View File

@@ -0,0 +1,53 @@
import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import DropdownMenuContainer from '../../../containers/dropdown_menu_container';
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' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },
lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },
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' },
});

@injectIntl
export default class ActionBar extends React.PureComponent {

static propTypes = {
account: ImmutablePropTypes.map.isRequired,
intl: PropTypes.object.isRequired,
};

render () {
const { intl } = this.props;

let menu = [];

menu.push({ text: intl.formatMessage(messages.edit_profile), href: '/settings/profile' });
menu.push({ text: intl.formatMessage(messages.preferences), href: '/settings/preferences' });
menu.push({ text: intl.formatMessage(messages.pins), to: '/pinned' });
menu.push(null);
menu.push({ text: intl.formatMessage(messages.follow_requests), to: '/follow_requests' });
menu.push({ text: intl.formatMessage(messages.favourites), to: '/favourites' });
menu.push({ text: intl.formatMessage(messages.lists), to: '/lists' });
menu.push(null);
menu.push({ text: intl.formatMessage(messages.mutes), to: '/mutes' });
menu.push({ text: intl.formatMessage(messages.blocks), to: '/blocks' });
menu.push({ text: intl.formatMessage(messages.domain_blocks), to: '/domain_blocks' });

return (
<div className='compose__action-bar'>
<div className='compose__action-bar-dropdown'>
<DropdownMenuContainer items={menu} icon='ellipsis-v' size={24} direction='right' />
</div>
</div>
);
}

}

+ 23
- 16
app/javascript/mastodon/features/compose/components/compose_form.js View File

@@ -7,7 +7,6 @@ import ReplyIndicatorContainer from '../containers/reply_indicator_container';
import AutosuggestTextarea from '../../../components/autosuggest_textarea'; import AutosuggestTextarea from '../../../components/autosuggest_textarea';
import UploadButtonContainer from '../containers/upload_button_container'; import UploadButtonContainer from '../containers/upload_button_container';
import { defineMessages, injectIntl } from 'react-intl'; import { defineMessages, injectIntl } from 'react-intl';
import Collapsable from '../../../components/collapsable';
import SpoilerButtonContainer from '../containers/spoiler_button_container'; import SpoilerButtonContainer from '../containers/spoiler_button_container';
import PrivacyDropdownContainer from '../containers/privacy_dropdown_container'; import PrivacyDropdownContainer from '../containers/privacy_dropdown_container';
import SensitiveButtonContainer from '../containers/sensitive_button_container'; import SensitiveButtonContainer from '../containers/sensitive_button_container';
@@ -40,6 +39,7 @@ export default class ComposeForm extends ImmutablePureComponent {
privacy: PropTypes.string, privacy: PropTypes.string,
spoiler_text: PropTypes.string, spoiler_text: PropTypes.string,
focusDate: PropTypes.instanceOf(Date), focusDate: PropTypes.instanceOf(Date),
caretPosition: PropTypes.number,
preselectDate: PropTypes.instanceOf(Date), preselectDate: PropTypes.instanceOf(Date),
is_submitting: PropTypes.bool, is_submitting: PropTypes.bool,
is_uploading: PropTypes.bool, is_uploading: PropTypes.bool,
@@ -96,7 +96,6 @@ export default class ComposeForm extends ImmutablePureComponent {
} }


onSuggestionSelected = (tokenStart, token, value) => { onSuggestionSelected = (tokenStart, token, value) => {
this._restoreCaret = null;
this.props.onSuggestionSelected(tokenStart, token, value); this.props.onSuggestionSelected(tokenStart, token, value);
} }


@@ -116,9 +115,9 @@ export default class ComposeForm extends ImmutablePureComponent {
if (this.props.preselectDate !== prevProps.preselectDate) { if (this.props.preselectDate !== prevProps.preselectDate) {
selectionEnd = this.props.text.length; selectionEnd = this.props.text.length;
selectionStart = this.props.text.search(/\s/) + 1; selectionStart = this.props.text.search(/\s/) + 1;
} else if (typeof this._restoreCaret === 'number') {
selectionStart = this._restoreCaret;
selectionEnd = this._restoreCaret;
} else if (typeof this.props.caretPosition === 'number') {
selectionStart = this.props.caretPosition;
selectionEnd = this.props.caretPosition;
} else { } else {
selectionEnd = this.props.text.length; selectionEnd = this.props.text.length;
selectionStart = selectionEnd; selectionStart = selectionEnd;
@@ -129,19 +128,29 @@ 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;
const emojiChar = data.native;
const needsSpace = data.custom && position > 0 && !allowedAroundShortCode.includes(text[position - 1]); const needsSpace = data.custom && position > 0 && !allowedAroundShortCode.includes(text[position - 1]);


this._restoreCaret = position + emojiChar.length + 1 + (needsSpace ? 1 : 0);
this.props.onPickEmoji(position, data, needsSpace); this.props.onPickEmoji(position, data, needsSpace);
} }


@@ -162,17 +171,15 @@ export default class ComposeForm extends ImmutablePureComponent {
<div className='compose-form'> <div className='compose-form'>
<WarningContainer /> <WarningContainer />


<Collapsable isVisible={this.props.spoiler} fullHeight={50}>
<div className='spoiler-input'>
<label>
<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' />
</label>
</div>
</Collapsable>

<ReplyIndicatorContainer /> <ReplyIndicatorContainer />


<div className={`spoiler-input ${this.props.spoiler ? 'spoiler-input--visible' : ''}`}>
<label>
<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' ref={this.setSpoilerText} />
</label>
</div>

<div className='compose-form__autosuggest-wrapper'> <div className='compose-form__autosuggest-wrapper'>
<AutosuggestTextarea <AutosuggestTextarea
ref={this.setAutosuggestTextarea} ref={this.setAutosuggestTextarea}


+ 1
- 1
app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js View File

@@ -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 = [


+ 6
- 2
app/javascript/mastodon/features/compose/components/navigation_bar.js View File

@@ -1,9 +1,10 @@
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import ActionBar from './action_bar';
import Avatar from '../../../components/avatar'; import Avatar from '../../../components/avatar';
import IconButton from '../../../components/icon_button';
import Permalink from '../../../components/permalink'; import Permalink from '../../../components/permalink';
import IconButton from '../../../components/icon_button';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';


@@ -30,7 +31,10 @@ export default class NavigationBar extends ImmutablePureComponent {
<a href='/settings/profile' className='navigation-bar__profile-edit'><FormattedMessage id='navigation_bar.edit_profile' defaultMessage='Edit profile' /></a> <a href='/settings/profile' className='navigation-bar__profile-edit'><FormattedMessage id='navigation_bar.edit_profile' defaultMessage='Edit profile' /></a>
</div> </div>


<IconButton title='' icon='close' onClick={this.props.onClose} />
<div className='navigation-bar__actions'>
<IconButton className='close' title='' icon='close' onClick={this.props.onClose} />
<ActionBar account={this.props.account} />
</div>
</div> </div>
); );
} }


+ 6
- 9
app/javascript/mastodon/features/compose/components/search_results.js View File

@@ -3,8 +3,8 @@ 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';
import StatusContainer from '../../../containers/status_container'; import StatusContainer from '../../../containers/status_container';
import { Link } from 'react-router-dom';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import Hashtag from '../../../components/hashtag';


export default class SearchResults extends ImmutablePureComponent { export default class SearchResults extends ImmutablePureComponent {


@@ -22,7 +22,7 @@ export default class SearchResults extends ImmutablePureComponent {
count += results.get('accounts').size; count += results.get('accounts').size;
accounts = ( accounts = (
<div className='search-results__section'> <div className='search-results__section'>
<h5><FormattedMessage id='search_results.accounts' defaultMessage='People' /></h5>
<h5><i className='fa fa-fw fa-users' /><FormattedMessage id='search_results.accounts' defaultMessage='People' /></h5>


{results.get('accounts').map(accountId => <AccountContainer key={accountId} id={accountId} />)} {results.get('accounts').map(accountId => <AccountContainer key={accountId} id={accountId} />)}
</div> </div>
@@ -33,7 +33,7 @@ export default class SearchResults extends ImmutablePureComponent {
count += results.get('statuses').size; count += results.get('statuses').size;
statuses = ( statuses = (
<div className='search-results__section'> <div className='search-results__section'>
<h5><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>
<h5><i className='fa fa-fw fa-quote-right' /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>


{results.get('statuses').map(statusId => <StatusContainer key={statusId} id={statusId} />)} {results.get('statuses').map(statusId => <StatusContainer key={statusId} id={statusId} />)}
</div> </div>
@@ -44,13 +44,9 @@ export default class SearchResults extends ImmutablePureComponent {
count += results.get('hashtags').size; count += results.get('hashtags').size;
hashtags = ( hashtags = (
<div className='search-results__section'> <div className='search-results__section'>
<h5><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></h5>
<h5><i className='fa fa-fw fa-hashtag' /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></h5>


{results.get('hashtags').map(hashtag => (
<Link key={hashtag} className='search-results__hashtag' to={`/timelines/tag/${hashtag}`}>
#{hashtag}
</Link>
))}
{results.get('hashtags').map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}
</div> </div>
); );
} }
@@ -58,6 +54,7 @@ export default class SearchResults extends ImmutablePureComponent {
return ( return (
<div className='search-results'> <div className='search-results'>
<div className='search-results__header'> <div className='search-results__header'>
<i className='fa fa-search fa-fw' />
<FormattedMessage id='search_results.total' defaultMessage='{count, number} {count, plural, one {result} other {results}}' values={{ count }} /> <FormattedMessage id='search_results.total' defaultMessage='{count, number} {count, plural, one {result} other {results}}' values={{ count }} />
</div> </div>




+ 1
- 0
app/javascript/mastodon/features/compose/containers/compose_form_container.js View File

@@ -19,6 +19,7 @@ const mapStateToProps = state => ({
spoiler_text: state.getIn(['compose', 'spoiler_text']), spoiler_text: state.getIn(['compose', 'spoiler_text']),
privacy: state.getIn(['compose', 'privacy']), privacy: state.getIn(['compose', 'privacy']),
focusDate: state.getIn(['compose', 'focusDate']), focusDate: state.getIn(['compose', 'focusDate']),
caretPosition: state.getIn(['compose', 'caretPosition']),
preselectDate: state.getIn(['compose', 'preselectDate']), preselectDate: state.getIn(['compose', 'preselectDate']),
is_submitting: state.getIn(['compose', 'is_submitting']), is_submitting: state.getIn(['compose', 'is_submitting']),
is_uploading: state.getIn(['compose', 'is_uploading']), is_uploading: state.getIn(['compose', 'is_uploading']),


+ 3
- 3
app/javascript/mastodon/features/compose/index.js View File

@@ -75,7 +75,7 @@ export default class Compose extends React.PureComponent {
const { columns } = this.props; const { columns } = this.props;
header = ( header = (
<nav className='drawer__header'> <nav className='drawer__header'>
<Link to='/getting-started' className='drawer__tab' title={intl.formatMessage(messages.start)} aria-label={intl.formatMessage(messages.start)}><i role='img' className='fa fa-fw fa-asterisk' /></Link>
<Link to='/getting-started' className='drawer__tab' title={intl.formatMessage(messages.start)} aria-label={intl.formatMessage(messages.start)}><i role='img' className='fa fa-fw fa-bars' /></Link>
{!columns.some(column => column.get('id') === 'HOME') && ( {!columns.some(column => column.get('id') === 'HOME') && (
<Link to='/timelines/home' className='drawer__tab' title={intl.formatMessage(messages.home_timeline)} aria-label={intl.formatMessage(messages.home_timeline)}><i role='img' className='fa fa-fw fa-home' /></Link> <Link to='/timelines/home' className='drawer__tab' title={intl.formatMessage(messages.home_timeline)} aria-label={intl.formatMessage(messages.home_timeline)}><i role='img' className='fa fa-fw fa-home' /></Link>
)} )}
@@ -101,7 +101,7 @@ export default class Compose extends React.PureComponent {
{(multiColumn || isSearchPage) && <SearchContainer /> } {(multiColumn || isSearchPage) && <SearchContainer /> }


<div className='drawer__pager'> <div className='drawer__pager'>
<div className='drawer__inner' onFocus={this.onFocus}>
{!isSearchPage && <div className='drawer__inner' onFocus={this.onFocus}>
<NavigationContainer onClose={this.onBlur} /> <NavigationContainer onClose={this.onBlur} />
<ComposeFormContainer /> <ComposeFormContainer />
{multiColumn && ( {multiColumn && (
@@ -109,7 +109,7 @@ export default class Compose extends React.PureComponent {
<img alt='' draggable='false' src={elephantUIPlane} /> <img alt='' draggable='false' src={elephantUIPlane} />
</div> </div>
)} )}
</div>
</div>}


<Motion defaultStyle={{ x: isSearchPage ? 0 : -100 }} style={{ x: spring(showSearch || isSearchPage ? 0 : -100, { stiffness: 210, damping: 20 }) }}> <Motion defaultStyle={{ x: isSearchPage ? 0 : -100 }} style={{ x: spring(showSearch || isSearchPage ? 0 : -100, { stiffness: 210, damping: 20 }) }}>
{({ x }) => ( {({ x }) => (


+ 1
- 1
app/javascript/mastodon/features/domain_blocks/index.js View File

@@ -28,7 +28,7 @@ export default class Blocks extends ImmutablePureComponent {
static propTypes = { static propTypes = {
params: PropTypes.object.isRequired, params: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired, dispatch: PropTypes.func.isRequired,
domains: ImmutablePropTypes.list,
domains: ImmutablePropTypes.orderedSet,
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
}; };




+ 1
- 1
app/javascript/mastodon/features/emoji/__tests__/emoji-test.js View File

@@ -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', () => {


+ 54
- 8
app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js View File

@@ -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(emojiIndex.search('masto').map(trimEmojis)).toEqual(expected);
expect(search('masto', { custom }).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 = [
{ {


+ 8
- 2
app/javascript/mastodon/features/emoji/emoji_compressed.js View File

@@ -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,
])); ]));

+ 23
- 3
app/javascript/mastodon/features/emoji/emoji_mart_search_light.js View File

@@ -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 = [] } = {}) {
addCustomToPool(custom, originalPool);
function search(value, { emojisToShowFilter, maxResults, include, exclude, custom } = {}) {
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) {


+ 2
- 2
app/javascript/mastodon/features/emoji/emoji_picker.js View File

@@ -1,5 +1,5 @@
import Picker from 'emoji-mart/dist-es/components/picker';
import Emoji from 'emoji-mart/dist-es/components/emoji';
import Picker from 'emoji-mart/dist-es/components/picker/picker';
import Emoji from 'emoji-mart/dist-es/components/emoji/emoji';


export { export {
Picker, Picker,


+ 54
- 48
app/javascript/mastodon/features/getting_started/index.js View File

@@ -10,34 +10,32 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import { me } from '../../initial_state'; import { me } from '../../initial_state';
import { fetchFollowRequests } from '../../actions/accounts'; import { fetchFollowRequests } from '../../actions/accounts';
import { List as ImmutableList } from 'immutable'; import { List as ImmutableList } from 'immutable';
import { Link } from 'react-router-dom';
import NavigationBar from '../compose/components/navigation_bar';


const messages = defineMessages({ const messages = defineMessages({
heading: { id: 'getting_started.heading', defaultMessage: 'Getting started' },
home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' }, home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' },
notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' }, notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },
public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' }, public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' },
navigation_subheading: { id: 'column_subheading.navigation', defaultMessage: 'Navigation' },
settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' }, settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' },
community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' }, community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },
direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' }, direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
sign_out: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },
blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' }, blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },
domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' }, domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' },
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' },
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },
lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' }, lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },
keyboard_shortcuts: { id: 'navigation_bar.keyboard_shortcuts', defaultMessage: 'Keyboard shortcuts' },
discover: { id: 'navigation_bar.discover', defaultMessage: 'Discover' },
personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' },
security: { id: 'navigation_bar.security', defaultMessage: 'Security' },
}); });


const mapStateToProps = state => ({ const mapStateToProps = state => ({
myAccount: state.getIn(['accounts', me]), myAccount: state.getIn(['accounts', me]),
columns: state.getIn(['settings', 'columns']),
unreadFollowRequests: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size, unreadFollowRequests: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,
unreadNotifications: state.getIn(['notifications', 'unread']),
}); });


const mapDispatchToProps = dispatch => ({ const mapDispatchToProps = dispatch => ({
@@ -77,65 +75,73 @@ export default class GettingStarted extends ImmutablePureComponent {
} }


render () { render () {
const { intl, myAccount, columns, multiColumn, unreadFollowRequests, unreadNotifications } = this.props;
const { intl, myAccount, multiColumn, unreadFollowRequests } = this.props;


const navItems = []; const navItems = [];
let i = 1;
let height = 0;


if (multiColumn) { if (multiColumn) {
if (!columns.find(item => item.get('id') === 'HOME')) {
navItems.push(<ColumnLink key='0' icon='home' text={intl.formatMessage(messages.home_timeline)} to='/timelines/home' />);
}

if (!columns.find(item => item.get('id') === 'NOTIFICATIONS')) {
navItems.push(<ColumnLink key='1' icon='bell' text={intl.formatMessage(messages.notifications)} badge={badgeDisplay(unreadNotifications)} to='/notifications' />);
}

if (!columns.find(item => item.get('id') === 'COMMUNITY')) {
navItems.push(<ColumnLink key='2' icon='users' text={intl.formatMessage(messages.community_timeline)} to='/timelines/public/local' />);
}

if (!columns.find(item => item.get('id') === 'PUBLIC')) {
navItems.push(<ColumnLink key='3' icon='globe' text={intl.formatMessage(messages.public_timeline)} to='/timelines/public' />);
}
}

if (!multiColumn || !columns.find(item => item.get('id') === 'DIRECT')) {
navItems.push(<ColumnLink key='4' icon='envelope' text={intl.formatMessage(messages.direct)} to='/timelines/direct' />);
navItems.push(
<ColumnSubheading key={i++} text={intl.formatMessage(messages.discover)} />,
<ColumnLink key={i++} icon='users' text={intl.formatMessage(messages.community_timeline)} to='/timelines/public/local' />,
<ColumnLink key={i++} icon='globe' text={intl.formatMessage(messages.public_timeline)} to='/timelines/public' />,
<ColumnSubheading key={i++} text={intl.formatMessage(messages.personal)} />
);

height += 34*2 + 48*2;
} }


navItems.push( navItems.push(
<ColumnLink key='5' icon='star' text={intl.formatMessage(messages.favourites)} to='/favourites' />,
<ColumnLink key='6' icon='bars' text={intl.formatMessage(messages.lists)} to='/lists' />
<ColumnLink key={i++} icon='envelope' text={intl.formatMessage(messages.direct)} to='/timelines/direct' />,
<ColumnLink key={i++} icon='star' text={intl.formatMessage(messages.favourites)} to='/favourites' />,
<ColumnLink key={i++} icon='bars' text={intl.formatMessage(messages.lists)} to='/lists' />
); );


height += 48*3;

if (myAccount.get('locked')) { if (myAccount.get('locked')) {
navItems.push(<ColumnLink key='7' icon='users' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />);
navItems.push(<ColumnLink key={i++} icon='users' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />);
height += 48;
} }


if (multiColumn) {
navItems.push(<ColumnLink key='8' icon='question' text={intl.formatMessage(messages.keyboard_shortcuts)} to='/keyboard-shortcuts' />);
}
if (!multiColumn) {
navItems.push(
<ColumnSubheading key={i++} text={intl.formatMessage(messages.settings_subheading)} />,
<ColumnLink key={i++} icon='gears' text={intl.formatMessage(messages.preferences)} href='/settings/preferences' />,
<ColumnLink key={i++} icon='lock' text={intl.formatMessage(messages.security)} href='/auth/edit' />
);


navItems.push(<ColumnLink key='9' icon='book' text={intl.formatMessage(messages.info)} href='/about/more' />);
height += 34 + 48*2;
}


return ( return (
<Column icon='asterisk' heading={intl.formatMessage(messages.heading)} hideHeadingOnMobile>
<div className='getting-started__wrapper'>
<ColumnSubheading text={intl.formatMessage(messages.navigation_subheading)} />
<Column>
{multiColumn && <div className='column-header__wrapper'>
<h1 className='column-header'>
<button>
<i className='fa fa-bars fa-fw column-header__icon' />
<FormattedMessage id='getting_started.heading' defaultMessage='Getting started' />
</button>
</h1>
</div>}

<div className='getting-started__wrapper' style={{ height }}>
{!multiColumn && <NavigationBar account={myAccount} />}
{navItems} {navItems}
<ColumnSubheading text={intl.formatMessage(messages.settings_subheading)} />
<ColumnLink icon='thumb-tack' text={intl.formatMessage(messages.pins)} to='/pinned' />
<ColumnLink icon='volume-off' text={intl.formatMessage(messages.mutes)} to='/mutes' />
<ColumnLink icon='ban' text={intl.formatMessage(messages.blocks)} to='/blocks' />
<ColumnLink icon='minus-circle' text={intl.formatMessage(messages.domain_blocks)} to='/domain_blocks' />
<ColumnLink icon='cog' text={intl.formatMessage(messages.preferences)} href='/settings/preferences' />
<ColumnLink icon='sign-out' text={intl.formatMessage(messages.sign_out)} href='/auth/sign_out' method='delete' />
</div> </div>


<div className='static-content getting-started'>
<p>
<a href='https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/FAQ.md' rel='noopener' target='_blank'><FormattedMessage id='getting_started.faq' defaultMessage='FAQ' /></a> • <a href='https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/User-guide.md' rel='noopener' target='_blank'><FormattedMessage id='getting_started.userguide' defaultMessage='User Guide' /></a> • <a href='https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md' rel='noopener' target='_blank'><FormattedMessage id='getting_started.appsshort' defaultMessage='Apps' /></a>
</p>
{!multiColumn && <div className='flex-spacer' />}

<div className='getting-started getting-started__footer'>
<ul>
{multiColumn && <li><Link to='/keyboard-shortcuts'><FormattedMessage id='navigation_bar.keyboard_shortcuts' defaultMessage='Hotkeys' /></Link> · </li>}
<li><a href='/about/more' target='_blank'><FormattedMessage id='navigation_bar.info' defaultMessage='About this instance' /></a> · </li>
<li><a href='/terms' target='_blank'><FormattedMessage id='getting_started.terms' defaultMessage='Terms of service' /></a> · </li>
<li><a href='https://github.com/tootsuite/documentation#documentation' target='_blank'><FormattedMessage id='getting_started.documentation' defaultMessage='Documentation' /></a> · </li>
<li><a href='/auth/sign_out' data-method='delete'><FormattedMessage id='navigation_bar.logout' defaultMessage='Logout' /></a></li>
</ul>

<p> <p>
<FormattedMessage <FormattedMessage
id='getting_started.open_source_notice' id='getting_started.open_source_notice'


+ 12
- 13
app/javascript/mastodon/features/public_timeline/index.js View File

@@ -8,7 +8,7 @@ import ColumnHeader from '../../components/column_header';
import { expandPublicTimeline } from '../../actions/timelines'; import { expandPublicTimeline } from '../../actions/timelines';
import { addColumn, removeColumn, moveColumn, changeColumnParams } from '../../actions/columns'; import { addColumn, removeColumn, moveColumn, changeColumnParams } from '../../actions/columns';
import ColumnSettingsContainer from './containers/column_settings_container'; import ColumnSettingsContainer from './containers/column_settings_container';
// import SectionHeadline from '../community_timeline/components/section_headline';
import SectionHeadline from '../community_timeline/components/section_headline';
import { connectPublicStream } from '../../actions/streaming'; import { connectPublicStream } from '../../actions/streaming';


const messages = defineMessages({ const messages = defineMessages({
@@ -100,17 +100,15 @@ export default class PublicTimeline extends React.PureComponent {
const { intl, columnId, hasUnread, multiColumn, onlyMedia } = this.props; const { intl, columnId, hasUnread, multiColumn, onlyMedia } = this.props;
const pinned = !!columnId; const pinned = !!columnId;


// pending
//
// const headline = (
// <SectionHeadline
// timelineId='public'
// to='/timelines/public'
// pinned={pinned}
// onlyMedia={onlyMedia}
// onClick={this.handleHeadlineLinkClick}
// />
// );
const headline = (
<SectionHeadline
timelineId='public'
to='/timelines/public'
pinned={pinned}
onlyMedia={onlyMedia}
onClick={this.handleHeadlineLinkClick}
/>
);


return ( return (
<Column ref={this.setRef}> <Column ref={this.setRef}>
@@ -128,7 +126,8 @@ export default class PublicTimeline extends React.PureComponent {
</ColumnHeader> </ColumnHeader>


<StatusListContainer <StatusListContainer
// prepend={headline}
prepend={headline}
alwaysPrepend
timelineId={`public${onlyMedia ? ':media' : ''}`} timelineId={`public${onlyMedia ? ':media' : ''}`}
onLoadMore={this.handleLoadMore} onLoadMore={this.handleLoadMore}
trackScroll={!pinned} trackScroll={!pinned}


+ 7
- 1
app/javascript/mastodon/features/status/components/action_bar.js View File

@@ -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 });
@@ -155,7 +161,7 @@ export default class ActionBar extends React.PureComponent {
<div className='detailed-status__action-bar'> <div className='detailed-status__action-bar'>
<div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all'} onClick={this.handleReplyClick} /></div> <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all'} onClick={this.handleReplyClick} /></div>
<div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div> <div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div>
<div className='detailed-status__button'><IconButton animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} activeStyle={{ color: '#ca8f04' }} /></div>
<div className='detailed-status__button'><IconButton className='star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} /></div>
{shareButton} {shareButton}


<div className='detailed-status__action-bar-dropdown'> <div className='detailed-status__action-bar-dropdown'>


+ 49
- 10
app/javascript/mastodon/features/status/index.js View File

@@ -1,3 +1,4 @@
import Immutable from 'immutable';
import React from 'react'; import React from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
@@ -46,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' },
@@ -54,11 +57,47 @@ const messages = defineMessages({
const makeMapStateToProps = () => { const makeMapStateToProps = () => {
const getStatus = makeGetStatus(); const getStatus = makeGetStatus();


const mapStateToProps = (state, props) => ({
status: getStatus(state, props.params.statusId),
ancestorsIds: state.getIn(['contexts', 'ancestors', props.params.statusId]),
descendantsIds: state.getIn(['contexts', 'descendants', props.params.statusId]),
});
const mapStateToProps = (state, props) => {
const status = getStatus(state, props.params.statusId);
let ancestorsIds = Immutable.List();
let descendantsIds = Immutable.List();

if (status) {
ancestorsIds = ancestorsIds.withMutations(mutable => {
let id = status.get('in_reply_to_id');

while (id) {
mutable.unshift(id);
id = state.getIn(['contexts', 'inReplyTos', id]);
}
});

descendantsIds = descendantsIds.withMutations(mutable => {
const ids = [status.get('id')];

while (ids.length > 0) {
let id = ids.shift();
const replies = state.getIn(['contexts', 'replies', id]);

if (status.get('id') !== id) {
mutable.push(id);
}

if (replies) {
replies.reverse().forEach(reply => {
ids.unshift(reply);
});
}
}
});
}

return {
status,
ancestorsIds,
descendantsIds,
};
};


return mapStateToProps; return mapStateToProps;
}; };
@@ -135,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),
confirm: intl.formatMessage(messages.deleteConfirm),
onConfirm: () => dispatch(deleteStatus(status.get('id'))),
message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),
confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),
onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)),
})); }));
} }
} }


+ 66
- 0
app/javascript/mastodon/features/trends/index.js View File

@@ -0,0 +1,66 @@
import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { connect } from 'react-redux';
import { injectIntl, defineMessages } from 'react-intl';
import Column from '../ui/components/column';
import ColumnHeader from '../../components/column_header';
import Hashtag from '../../components/hashtag';
import classNames from 'classnames';
import { fetchTrends } from '../../actions/trends';

const messages = defineMessages({
title: { id: 'trends.header', defaultMessage: 'Trending now' },
refreshTrends: { id: 'trends.refresh', defaultMessage: 'Refresh trends' },
});

const mapStateToProps = state => ({
trends: state.getIn(['trends', 'items']),
loading: state.getIn(['trends', 'isLoading']),
});

const mapDispatchToProps = dispatch => ({
fetchTrends: () => dispatch(fetchTrends()),
});

@connect(mapStateToProps, mapDispatchToProps)
@injectIntl
export default class Trends extends ImmutablePureComponent {

static propTypes = {
intl: PropTypes.object.isRequired,
trends: ImmutablePropTypes.list,
fetchTrends: PropTypes.func.isRequired,
loading: PropTypes.bool,
};

componentDidMount () {
this.props.fetchTrends();
}

handleRefresh = () => {
this.props.fetchTrends();
}

render () {
const { trends, loading, intl } = this.props;

return (
<Column>
<ColumnHeader
icon='fire'
title={intl.formatMessage(messages.title)}
extraButton={(
<button className='column-header__button' title={intl.formatMessage(messages.refreshTrends)} aria-label={intl.formatMessage(messages.refreshTrends)} onClick={this.handleRefresh}><i className={classNames('fa', 'fa-refresh', { 'fa-spin': loading })} /></button>
)}
/>

<div className='scrollable'>
{trends && trends.map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}
</div>
</Column>
);
}

}

+ 7
- 0
app/javascript/mastodon/features/ui/components/report_modal.js View File

@@ -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}
/> />




+ 2
- 1
app/javascript/mastodon/features/ui/index.js View File

@@ -132,11 +132,12 @@ class SwitchingColumnsArea extends React.PureComponent {
render () { render () {
const { children } = this.props; const { children } = this.props;
const { mobile } = this.state; const { mobile } = this.state;
const redirect = mobile ? <Redirect from='/' to='/timelines/home' exact /> : <Redirect from='/' to='/getting-started' exact />;


return ( return (
<ColumnsAreaContainer ref={this.setRef} singleColumn={mobile}> <ColumnsAreaContainer ref={this.setRef} singleColumn={mobile}>
<WrappedSwitch> <WrappedSwitch>
<Redirect from='/' to='/getting-started' exact />
{redirect}
<WrappedRoute path='/getting-started' component={GettingStarted} content={children} /> <WrappedRoute path='/getting-started' component={GettingStarted} content={children} />
<WrappedRoute path='/keyboard-shortcuts' component={KeyboardShortcuts} content={children} /> <WrappedRoute path='/keyboard-shortcuts' component={KeyboardShortcuts} content={children} />
<WrappedRoute path='/timelines/home' component={HomeTimeline} content={children} /> <WrappedRoute path='/timelines/home' component={HomeTimeline} content={children} />


+ 9
- 4
app/javascript/mastodon/locales/ar.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "تدبيس", "column_header.pin": "تدبيس",
"column_header.show_settings": "عرض الإعدادات", "column_header.show_settings": "عرض الإعدادات",
"column_header.unpin": "فك التدبيس", "column_header.unpin": "فك التدبيس",
"column_subheading.navigation": "التصفح",
"column_subheading.settings": "الإعدادات", "column_subheading.settings": "الإعدادات",
"compose_form.direct_message_warning": "لن يَظهر هذا التبويق إلا للمستخدمين المذكورين.", "compose_form.direct_message_warning": "لن يَظهر هذا التبويق إلا للمستخدمين المذكورين.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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": "يمكنكم إدماج هذه الحالة على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.",
@@ -112,11 +113,10 @@
"empty_column.public": "لا يوجد أي شيء هنا ! قم بنشر شيء ما للعامة، أو إتبع مستخدمين آخرين في الخوادم المثيلة الأخرى لملء خيط المحادثات العام", "empty_column.public": "لا يوجد أي شيء هنا ! قم بنشر شيء ما للعامة، أو إتبع مستخدمين آخرين في الخوادم المثيلة الأخرى لملء خيط المحادثات العام",
"follow_request.authorize": "ترخيص", "follow_request.authorize": "ترخيص",
"follow_request.reject": "رفض", "follow_request.reject": "رفض",
"getting_started.appsshort": "تطبيقات",
"getting_started.faq": "أسئلة وأجوبة شائعة",
"getting_started.documentation": "Documentation",
"getting_started.heading": "إستعدّ للبدء", "getting_started.heading": "إستعدّ للبدء",
"getting_started.open_source_notice": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على جيت هب {github}.", "getting_started.open_source_notice": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على جيت هب {github}.",
"getting_started.userguide": "دليل المستخدم",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "متقدمة", "home.column_settings.advanced": "متقدمة",
"home.column_settings.basic": "أساسية", "home.column_settings.basic": "أساسية",
"home.column_settings.filter_regex": "تصفية حسب التعبيرات العادية", "home.column_settings.filter_regex": "تصفية حسب التعبيرات العادية",
@@ -160,6 +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.domain_blocks": "النطاقات المخفية", "navigation_bar.domain_blocks": "النطاقات المخفية",
"navigation_bar.edit_profile": "تعديل الملف الشخصي", "navigation_bar.edit_profile": "تعديل الملف الشخصي",
"navigation_bar.favourites": "المفضلة", "navigation_bar.favourites": "المفضلة",
@@ -169,9 +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.pins": "التبويقات المثبتة", "navigation_bar.pins": "التبويقات المثبتة",
"navigation_bar.preferences": "التفضيلات", "navigation_bar.preferences": "التفضيلات",
"navigation_bar.public_timeline": "الخيط العام الموحد", "navigation_bar.public_timeline": "الخيط العام الموحد",
"navigation_bar.security": "Security",
"notification.favourite": "{name} أعجب بمنشورك", "notification.favourite": "{name} أعجب بمنشورك",
"notification.follow": "{name} يتابعك", "notification.follow": "{name} يتابعك",
"notification.mention": "{name} ذكرك", "notification.mention": "{name} ذكرك",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "البحث", "tabs_bar.search": "البحث",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.", "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
"upload_area.title": "إسحب ثم أفلت للرفع", "upload_area.title": "إسحب ثم أفلت للرفع",
"upload_button.label": "إضافة وسائط", "upload_button.label": "إضافة وسائط",


+ 9
- 4
app/javascript/mastodon/locales/bg.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Pin", "column_header.pin": "Pin",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin", "column_header.unpin": "Unpin",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Settings", "column_subheading.settings": "Settings",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"follow_request.authorize": "Authorize", "follow_request.authorize": "Authorize",
"follow_request.reject": "Reject", "follow_request.reject": "Reject",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.documentation": "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.userguide": "User Guide",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Advanced", "home.column_settings.advanced": "Advanced",
"home.column_settings.basic": "Basic", "home.column_settings.basic": "Basic",
"home.column_settings.filter_regex": "Filter out by regular expressions", "home.column_settings.filter_regex": "Filter out by regular expressions",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "Local timeline",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Редактирай профил", "navigation_bar.edit_profile": "Редактирай профил",
"navigation_bar.favourites": "Favourites", "navigation_bar.favourites": "Favourites",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Излизане", "navigation_bar.logout": "Излизане",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "Muted users",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Предпочитания", "navigation_bar.preferences": "Предпочитания",
"navigation_bar.public_timeline": "Публичен канал", "navigation_bar.public_timeline": "Публичен канал",
"navigation_bar.security": "Security",
"notification.favourite": "{name} хареса твоята публикация", "notification.favourite": "{name} хареса твоята публикация",
"notification.follow": "{name} те последва", "notification.follow": "{name} те последва",
"notification.mention": "{name} те спомена", "notification.mention": "{name} те спомена",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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": "Добави медия",


+ 11
- 6
app/javascript/mastodon/locales/ca.json View File

@@ -58,10 +58,9 @@
"column_header.pin": "Fixa", "column_header.pin": "Fixa",
"column_header.show_settings": "Mostra la configuració", "column_header.show_settings": "Mostra la configuració",
"column_header.unpin": "No fixis", "column_header.unpin": "No fixis",
"column_subheading.navigation": "Navegació",
"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",
@@ -84,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ó.",
@@ -112,11 +113,10 @@
"empty_column.public": "No hi ha res aquí! Escriu alguna cosa públicament o segueix manualment usuaris d'altres instàncies per omplir-ho", "empty_column.public": "No hi ha res aquí! Escriu alguna cosa públicament o segueix manualment usuaris d'altres instàncies per omplir-ho",
"follow_request.authorize": "Autoritzar", "follow_request.authorize": "Autoritzar",
"follow_request.reject": "Rebutjar", "follow_request.reject": "Rebutjar",
"getting_started.appsshort": "Aplicacions",
"getting_started.faq": "PMF",
"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.userguide": "Guia de l'usuari",
"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",
@@ -160,6 +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": "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",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Llistes", "navigation_bar.lists": "Llistes",
"navigation_bar.logout": "Tancar sessió", "navigation_bar.logout": "Tancar sessió",
"navigation_bar.mutes": "Usuaris silenciats", "navigation_bar.mutes": "Usuaris silenciats",
"navigation_bar.personal": "Personal",
"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": "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",
@@ -187,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.",
@@ -263,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}",
@@ -282,6 +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, una {person} altres {people}} parlant",
"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",


+ 11
- 6
app/javascript/mastodon/locales/co.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Puntarulà", "column_header.pin": "Puntarulà",
"column_header.show_settings": "Mustrà i parametri", "column_header.show_settings": "Mustrà i parametri",
"column_header.unpin": "Spuntarulà", "column_header.unpin": "Spuntarulà",
"column_subheading.navigation": "Navigazione",
"column_subheading.settings": "Parametri", "column_subheading.settings": "Parametri",
"compose_form.direct_message_warning": "Solu l'utilizatori mintuvati puderenu vede stu statutu.", "compose_form.direct_message_warning": "Solu l'utilizatori mintuvati puderenu vede stu statutu.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Ùn c'hè nunda quì! Scrivete qualcosa in pubblicu o seguitate utilizatori d'altre istanze per empie a linea pubblica", "empty_column.public": "Ùn c'hè nunda quì! Scrivete qualcosa in pubblicu o seguitate utilizatori d'altre istanze per empie a linea pubblica",
"follow_request.authorize": "Auturizà", "follow_request.authorize": "Auturizà",
"follow_request.reject": "Righjittà", "follow_request.reject": "Righjittà",
"getting_started.appsshort": "Applicazione",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Per principià", "getting_started.heading": "Per principià",
"getting_started.open_source_notice": "Mastodon ghjè un lugiziale liberu. Pudete cuntribuisce à u codice o a traduzione, o palisà un bug, nant'à GitHub: {github}.", "getting_started.open_source_notice": "Mastodon ghjè un lugiziale liberu. Pudete cuntribuisce à u codice o a traduzione, o palisà un bug, nant'à GitHub: {github}.",
"getting_started.userguide": "Guida d'utilizazione",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Avanzati", "home.column_settings.advanced": "Avanzati",
"home.column_settings.basic": "Bàsichi", "home.column_settings.basic": "Bàsichi",
"home.column_settings.filter_regex": "Filtrà cù spressione regulare (regex)", "home.column_settings.filter_regex": "Filtrà cù spressione regulare (regex)",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Utilizatori bluccati", "navigation_bar.blocks": "Utilizatori bluccati",
"navigation_bar.community_timeline": "Linea pubblica lucale", "navigation_bar.community_timeline": "Linea pubblica lucale",
"navigation_bar.direct": "Missaghji diretti", "navigation_bar.direct": "Missaghji diretti",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Duminii piattati", "navigation_bar.domain_blocks": "Duminii piattati",
"navigation_bar.edit_profile": "Mudificà u prufile", "navigation_bar.edit_profile": "Mudificà u prufile",
"navigation_bar.favourites": "Favuriti", "navigation_bar.favourites": "Favuriti",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Liste", "navigation_bar.lists": "Liste",
"navigation_bar.logout": "Scunnettassi", "navigation_bar.logout": "Scunnettassi",
"navigation_bar.mutes": "Utilizatori piattati", "navigation_bar.mutes": "Utilizatori piattati",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Statuti puntarulati", "navigation_bar.pins": "Statuti puntarulati",
"navigation_bar.preferences": "Preferenze", "navigation_bar.preferences": "Preferenze",
"navigation_bar.public_timeline": "Linea pubblica glubale", "navigation_bar.public_timeline": "Linea pubblica glubale",
"navigation_bar.security": "Security",
"notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti", "notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti",
"notification.follow": "{name} v'hà seguitatu", "notification.follow": "{name} v'hà seguitatu",
"notification.mention": "{name} v'hà mintuvatu", "notification.mention": "{name} v'hà mintuvatu",
@@ -219,7 +222,7 @@
"privacy.unlisted.long": "Ùn mette micca nant'a linea pubblica (ma tutt'u mondu pò vede u statutu nant'à u vostru prufile)", "privacy.unlisted.long": "Ùn mette micca nant'a linea pubblica (ma tutt'u mondu pò vede u statutu nant'à u vostru prufile)",
"privacy.unlisted.short": "Micca listatu", "privacy.unlisted.short": "Micca listatu",
"regeneration_indicator.label": "Caricamentu…", "regeneration_indicator.label": "Caricamentu…",
"regeneration_indicator.sublabel": "Priparazione di a vostra pagina d'accolta",
"regeneration_indicator.sublabel": "Priparazione di a vostra pagina d'accolta!",
"relative_time.days": "{number}d", "relative_time.days": "{number}d",
"relative_time.hours": "{number}h", "relative_time.hours": "{number}h",
"relative_time.just_now": "avà", "relative_time.just_now": "avà",
@@ -263,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}",
@@ -282,12 +286,13 @@
"tabs_bar.search": "Cercà", "tabs_bar.search": "Cercà",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",
"upload_form.description": "Discrive per i malvistosi", "upload_form.description": "Discrive per i malvistosi",
"upload_form.focus": "Riquatrà", "upload_form.focus": "Riquatrà",
"upload_form.undo": "Annullà",
"upload_form.undo": "Sguassà",
"upload_progress.label": "Caricamentu...", "upload_progress.label": "Caricamentu...",
"video.close": "Chjudà a video", "video.close": "Chjudà a video",
"video.exit_fullscreen": "Caccià u pienu screnu", "video.exit_fullscreen": "Caccià u pienu screnu",


+ 9
- 4
app/javascript/mastodon/locales/de.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Anheften", "column_header.pin": "Anheften",
"column_header.show_settings": "Einstellungen anzeigen", "column_header.show_settings": "Einstellungen anzeigen",
"column_header.unpin": "Lösen", "column_header.unpin": "Lösen",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Einstellungen", "column_subheading.settings": "Einstellungen",
"compose_form.direct_message_warning": "Dieser Beitrag wird nur für die erwähnten Nutzer sichtbar sein.", "compose_form.direct_message_warning": "Dieser Beitrag wird nur für die erwähnten Nutzer sichtbar sein.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Instanzen, um die Zeitleiste aufzufüllen", "empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Instanzen, um die Zeitleiste aufzufüllen",
"follow_request.authorize": "Erlauben", "follow_request.authorize": "Erlauben",
"follow_request.reject": "Ablehnen", "follow_request.reject": "Ablehnen",
"getting_started.appsshort": "Apps",
"getting_started.faq": "Häufig gestellte Fragen",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Erste Schritte", "getting_started.heading": "Erste Schritte",
"getting_started.open_source_notice": "Mastodon ist quelloffene Software. Du kannst auf GitHub unter {github} dazu beitragen oder Probleme melden.", "getting_started.open_source_notice": "Mastodon ist quelloffene Software. Du kannst auf GitHub unter {github} dazu beitragen oder Probleme melden.",
"getting_started.userguide": "Bedienungsanleitung",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Erweitert", "home.column_settings.advanced": "Erweitert",
"home.column_settings.basic": "Einfach", "home.column_settings.basic": "Einfach",
"home.column_settings.filter_regex": "Mit regulären Ausdrücken filtern", "home.column_settings.filter_regex": "Mit regulären Ausdrücken filtern",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blockierte Profile", "navigation_bar.blocks": "Blockierte Profile",
"navigation_bar.community_timeline": "Lokale Zeitleiste", "navigation_bar.community_timeline": "Lokale Zeitleiste",
"navigation_bar.direct": "Direktnachrichten", "navigation_bar.direct": "Direktnachrichten",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Versteckte Domains", "navigation_bar.domain_blocks": "Versteckte Domains",
"navigation_bar.edit_profile": "Profil bearbeiten", "navigation_bar.edit_profile": "Profil bearbeiten",
"navigation_bar.favourites": "Favoriten", "navigation_bar.favourites": "Favoriten",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listen", "navigation_bar.lists": "Listen",
"navigation_bar.logout": "Abmelden", "navigation_bar.logout": "Abmelden",
"navigation_bar.mutes": "Stummgeschaltete Profile", "navigation_bar.mutes": "Stummgeschaltete Profile",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Angeheftete Beiträge", "navigation_bar.pins": "Angeheftete Beiträge",
"navigation_bar.preferences": "Einstellungen", "navigation_bar.preferences": "Einstellungen",
"navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.public_timeline": "Föderierte Zeitleiste",
"navigation_bar.security": "Security",
"notification.favourite": "{name} hat deinen Beitrag favorisiert", "notification.favourite": "{name} hat deinen Beitrag favorisiert",
"notification.follow": "{name} folgt dir", "notification.follow": "{name} folgt dir",
"notification.mention": "{name} hat dich erwähnt", "notification.mention": "{name} hat dich erwähnt",
@@ -263,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",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Suchen", "tabs_bar.search": "Suchen",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 106
- 36
app/javascript/mastodon/locales/defaultMessages.json View File

@@ -121,6 +121,15 @@
{ {
"descriptors": [ "descriptors": [
{ {
"defaultMessage": "{count} {rawCount, plural, one {person} other {people}} talking",
"id": "trends.count_by_accounts"
}
],
"path": "app/javascript/mastodon/components/hashtag.json"
},
{
"descriptors": [
{
"defaultMessage": "Load more", "defaultMessage": "Load more",
"id": "status.load_more" "id": "status.load_more"
} }
@@ -211,6 +220,10 @@
"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"
}, },
@@ -369,6 +382,14 @@
"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"
}, },
@@ -428,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"
} }
], ],
@@ -501,6 +522,38 @@
"id": "account.show_reblogs" "id": "account.show_reblogs"
}, },
{ {
"defaultMessage": "Pinned toots",
"id": "navigation_bar.pins"
},
{
"defaultMessage": "Preferences",
"id": "navigation_bar.preferences"
},
{
"defaultMessage": "Follow requests",
"id": "navigation_bar.follow_requests"
},
{
"defaultMessage": "Favourites",
"id": "navigation_bar.favourites"
},
{
"defaultMessage": "Lists",
"id": "navigation_bar.lists"
},
{
"defaultMessage": "Blocked users",
"id": "navigation_bar.blocks"
},
{
"defaultMessage": "Hidden domains",
"id": "navigation_bar.domain_blocks"
},
{
"defaultMessage": "Muted users",
"id": "navigation_bar.mutes"
},
{
"defaultMessage": "Information below may reflect the user's profile incompletely.", "defaultMessage": "Information below may reflect the user's profile incompletely.",
"id": "account.disclaimer_full" "id": "account.disclaimer_full"
}, },
@@ -542,6 +595,10 @@
"id": "account.unblock" "id": "account.unblock"
}, },
{ {
"defaultMessage": "Edit profile",
"id": "account.edit_profile"
},
{
"defaultMessage": "Follows you", "defaultMessage": "Follows you",
"id": "account.follows_you" "id": "account.follows_you"
}, },
@@ -593,16 +650,21 @@
{ {
"descriptors": [ "descriptors": [
{ {
"defaultMessage": "Local timeline",
"id": "column.community"
},
{
"defaultMessage": "Toots", "defaultMessage": "Toots",
"id": "timeline.posts" "id": "timeline.posts"
}, },
{ {
"defaultMessage": "Media", "defaultMessage": "Media",
"id": "timeline.media" "id": "timeline.media"
}
],
"path": "app/javascript/mastodon/features/community_timeline/components/section_headline.json"
},
{
"descriptors": [
{
"defaultMessage": "Local timeline",
"id": "column.community"
}, },
{ {
"defaultMessage": "The local timeline is empty. Write something publicly to get the ball rolling!", "defaultMessage": "The local timeline is empty. Write something publicly to get the ball rolling!",
@@ -985,10 +1047,6 @@
{ {
"descriptors": [ "descriptors": [
{ {
"defaultMessage": "Getting started",
"id": "getting_started.heading"
},
{
"defaultMessage": "Home", "defaultMessage": "Home",
"id": "tabs_bar.home" "id": "tabs_bar.home"
}, },
@@ -1001,10 +1059,6 @@
"id": "navigation_bar.public_timeline" "id": "navigation_bar.public_timeline"
}, },
{ {
"defaultMessage": "Navigation",
"id": "column_subheading.navigation"
},
{
"defaultMessage": "Settings", "defaultMessage": "Settings",
"id": "column_subheading.settings" "id": "column_subheading.settings"
}, },
@@ -1025,10 +1079,6 @@
"id": "navigation_bar.follow_requests" "id": "navigation_bar.follow_requests"
}, },
{ {
"defaultMessage": "Logout",
"id": "navigation_bar.logout"
},
{
"defaultMessage": "Favourites", "defaultMessage": "Favourites",
"id": "navigation_bar.favourites" "id": "navigation_bar.favourites"
}, },
@@ -1045,10 +1095,6 @@
"id": "navigation_bar.mutes" "id": "navigation_bar.mutes"
}, },
{ {
"defaultMessage": "Extended information",
"id": "navigation_bar.info"
},
{
"defaultMessage": "Pinned toots", "defaultMessage": "Pinned toots",
"id": "navigation_bar.pins" "id": "navigation_bar.pins"
}, },
@@ -1057,20 +1103,40 @@
"id": "navigation_bar.lists" "id": "navigation_bar.lists"
}, },
{ {
"defaultMessage": "Keyboard shortcuts",
"defaultMessage": "Discover",
"id": "navigation_bar.discover"
},
{
"defaultMessage": "Personal",
"id": "navigation_bar.personal"
},
{
"defaultMessage": "Security",
"id": "navigation_bar.security"
},
{
"defaultMessage": "Getting started",
"id": "getting_started.heading"
},
{
"defaultMessage": "Hotkeys",
"id": "navigation_bar.keyboard_shortcuts" "id": "navigation_bar.keyboard_shortcuts"
}, },
{ {
"defaultMessage": "FAQ",
"id": "getting_started.faq"
"defaultMessage": "About this instance",
"id": "navigation_bar.info"
}, },
{ {
"defaultMessage": "User Guide",
"id": "getting_started.userguide"
"defaultMessage": "Terms of service",
"id": "getting_started.terms"
}, },
{ {
"defaultMessage": "Apps",
"id": "getting_started.appsshort"
"defaultMessage": "Documentation",
"id": "getting_started.documentation"
},
{
"defaultMessage": "Logout",
"id": "navigation_bar.logout"
}, },
{ {
"defaultMessage": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "defaultMessage": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
@@ -1402,14 +1468,6 @@
"id": "column.public" "id": "column.public"
}, },
{ {
"defaultMessage": "Toots",
"id": "timeline.posts"
},
{
"defaultMessage": "Media",
"id": "timeline.media"
},
{
"defaultMessage": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", "defaultMessage": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"id": "empty_column.public" "id": "empty_column.public"
} }
@@ -1441,6 +1499,10 @@
"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"
}, },
@@ -1522,6 +1584,14 @@
"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"
}, },


+ 65
- 60
app/javascript/mastodon/locales/el.json View File

@@ -11,16 +11,16 @@
"account.followers": "Ακόλουθοι", "account.followers": "Ακόλουθοι",
"account.follows": "Ακολουθεί", "account.follows": "Ακολουθεί",
"account.follows_you": "Σε ακολουθεί", "account.follows_you": "Σε ακολουθεί",
"account.hide_reblogs": "Απόκρυψη προωθήσεων από τον/την @{name}",
"account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}",
"account.media": "Πολυμέσα", "account.media": "Πολυμέσα",
"account.mention": "Ανέφερε τον/την @{name}",
"account.moved_to": "{name} μετακόμισε στο:",
"account.mention": "Ανάφερε @{name}",
"account.moved_to": "{name} μεταφέρθηκε στο:",
"account.mute": "Σώπασε τον/την @{name}", "account.mute": "Σώπασε τον/την @{name}",
"account.mute_notifications": "Σώπασε τις ειδοποιήσεις από τον/την @{name}", "account.mute_notifications": "Σώπασε τις ειδοποιήσεις από τον/την @{name}",
"account.muted": "Αποσιωπημένος/η", "account.muted": "Αποσιωπημένος/η",
"account.posts": "Τουτ", "account.posts": "Τουτ",
"account.posts_with_replies": "Τουτ και απαντήσεις", "account.posts_with_replies": "Τουτ και απαντήσεις",
"account.report": "Ανέφερε τον/την @{name}",
"account.report": "Κατάγγειλε τον/την @{name}",
"account.requested": "Εκκρεμεί έγκριση. Κάνε κλικ για να ακυρώσεις το αίτημα ακολούθησης", "account.requested": "Εκκρεμεί έγκριση. Κάνε κλικ για να ακυρώσεις το αίτημα ακολούθησης",
"account.share": "Μοιράσου το προφίλ του/της @{name}", "account.share": "Μοιράσου το προφίλ του/της @{name}",
"account.show_reblogs": "Δείξε τις προωθήσεις του/της @{name}", "account.show_reblogs": "Δείξε τις προωθήσεις του/της @{name}",
@@ -44,7 +44,7 @@
"column.direct": "Απευθείας μηνύματα", "column.direct": "Απευθείας μηνύματα",
"column.domain_blocks": "Κρυμμένοι τομείς", "column.domain_blocks": "Κρυμμένοι τομείς",
"column.favourites": "Αγαπημένα", "column.favourites": "Αγαπημένα",
"column.follow_requests": "Αιτήματα παρακολούθησης",
"column.follow_requests": "Αιτήματα ακολούθησης",
"column.home": "Αρχική", "column.home": "Αρχική",
"column.lists": "Λίστες", "column.lists": "Λίστες",
"column.mutes": "Αποσιωπημένοι χρήστες", "column.mutes": "Αποσιωπημένοι χρήστες",
@@ -58,11 +58,10 @@
"column_header.pin": "Καρφίτσωμα", "column_header.pin": "Καρφίτσωμα",
"column_header.show_settings": "Εμφάνιση ρυθμίσεων", "column_header.show_settings": "Εμφάνιση ρυθμίσεων",
"column_header.unpin": "Ξεκαρφίτσωμα", "column_header.unpin": "Ξεκαρφίτσωμα",
"column_subheading.navigation": "Πλοήγηση",
"column_subheading.settings": "Ρυθμίσεις", "column_subheading.settings": "Ρυθμίσεις",
"compose_form.direct_message_warning": "Αυτό το τουτ θα εμφανίζεται μόνο σε όλους τους αναφερόμενους χρήστες.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "Αυτό το τουτ δεν θα εμφανίζεται κάτω από καμία ταμπέλα καθώς είναι αφανές. Μόνο τα δημόσια τουτ μπορούν να αναζητηθούν ανά ταμπέλα.",
"compose_form.direct_message_warning": "Αυτό το τουτ θα σταλεί μόνο στους αναφερόμενους χρήστες.",
"compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα",
"compose_form.hashtag_warning": "Αυτό το τουτ δεν θα εμφανίζεται κάτω από κανένα hashtag καθώς είναι αφανές. Μόνο τα δημόσια τουτ μπορούν να αναζητηθούν ανά hashtag.",
"compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σας προς τους ακολούθους σας.", "compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σας προς τους ακολούθους σας.",
"compose_form.lock_disclaimer.lock": "κλειδωμένος", "compose_form.lock_disclaimer.lock": "κλειδωμένος",
"compose_form.placeholder": "Τι σκέφτεσαι;", "compose_form.placeholder": "Τι σκέφτεσαι;",
@@ -84,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": "Ενσωματώστε αυτή την κατάσταση στην ιστοσελίδα σας αντιγράφοντας τον παρακάτω κώδικα.",
@@ -107,16 +108,15 @@
"empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ταμπέλα.", "empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ταμπέλα.",
"empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.", "empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.",
"empty_column.home.public_timeline": "η δημόσια ροή", "empty_column.home.public_timeline": "η δημόσια ροή",
"empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ",
"empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ.",
"empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Αλληλεπίδρασε με άλλους χρήστες για να ξεκινήσεις την κουβέντα.", "empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Αλληλεπίδρασε με άλλους χρήστες για να ξεκινήσεις την κουβέντα.",
"empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο, ή ακολούθησε χειροκίνητα χρήστες από άλλα instances για να το γεμίσεις",
"empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο, ή ακολούθησε χειροκίνητα χρήστες από άλλα instances για να τη γεμίσεις",
"follow_request.authorize": "Ενέκρινε", "follow_request.authorize": "Ενέκρινε",
"follow_request.reject": "Απέρριψε", "follow_request.reject": "Απέρριψε",
"getting_started.appsshort": "Εφαρμογές",
"getting_started.faq": "Συχνές Ερωτήσεις",
"getting_started.documentation": "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.userguide": "Οδηγός Χρηστών",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Προχωρημένα", "home.column_settings.advanced": "Προχωρημένα",
"home.column_settings.basic": "Βασικά", "home.column_settings.basic": "Βασικά",
"home.column_settings.filter_regex": "Φιλτράρετε μέσω regular expressions", "home.column_settings.filter_regex": "Φιλτράρετε μέσω regular expressions",
@@ -139,58 +139,61 @@
"keyboard_shortcuts.search": "για εστίαση αναζήτησης", "keyboard_shortcuts.search": "για εστίαση αναζήτησης",
"keyboard_shortcuts.toggle_hidden": "για εμφάνιση/απόκρυψη κειμένου πίσω από την προειδοποίηση", "keyboard_shortcuts.toggle_hidden": "για εμφάνιση/απόκρυψη κειμένου πίσω από την προειδοποίηση",
"keyboard_shortcuts.toot": "για δημιουργία ολοκαίνουριου τουτ", "keyboard_shortcuts.toot": "για δημιουργία ολοκαίνουριου τουτ",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"keyboard_shortcuts.unfocus": "για την απο-εστίαση του πεδίου σύνθεσης/αναζήτησης",
"keyboard_shortcuts.up": "για να ανέβεις στη λίστα",
"lightbox.close": "Close", "lightbox.close": "Close",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lightbox.next": "Επόμενο",
"lightbox.previous": "Προηγούμενο",
"lists.account.add": "Πρόσθεσε στη λίστα",
"lists.account.remove": "Αφαίρεσε από τη λίστα",
"lists.delete": "Delete list", "lists.delete": "Delete list",
"lists.edit": "Edit list",
"lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title",
"lists.search": "Search among people you follow",
"lists.subheading": "Your lists",
"loading_indicator.label": "Loading...",
"media_gallery.toggle_visible": "Toggle visibility",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.blocks": "Blocked users",
"lists.edit": "Τροποποίησε τη λίστα",
"lists.new.create": "Πρόσθεσε λίστα",
"lists.new.title_placeholder": "Τίτλος νέας λίστα",
"lists.search": "Αναζήτησε ανάμεσα σε όσους/όσες ακολουθείς",
"lists.subheading": "Οι λίστες σου",
"loading_indicator.label": "Φορτώνει...",
"media_gallery.toggle_visible": "Αντιστροφή ορατότητας",
"missing_indicator.label": "Δε βρέθηκε",
"missing_indicator.sublabel": "Αυτό το υλικό δε βρέθηκε",
"mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;",
"navigation_bar.blocks": "Αποκλεισμένοι χρήστες",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "Local timeline",
"navigation_bar.direct": "Direct messages",
"navigation_bar.direct": "Απευθείας μηνύματα",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile", "navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favourites", "navigation_bar.favourites": "Favourites",
"navigation_bar.follow_requests": "Follow requests", "navigation_bar.follow_requests": "Follow requests",
"navigation_bar.info": "Extended information", "navigation_bar.info": "Extended information",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.keyboard_shortcuts": "Συντομεύσεις πληκτρολογίου",
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Logout",
"navigation_bar.logout": "Αποσύνδεση",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "Muted users",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
"notification.mention": "{name} mentioned you",
"notification.reblog": "{name} boosted your status",
"navigation_bar.preferences": "Προτιμήσεις",
"navigation_bar.public_timeline": "Ομοσπονδιακή ροή",
"navigation_bar.security": "Security",
"notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου",
"notification.follow": "Ο/Η {name} σε ακολούθησε",
"notification.mention": "Ο/Η {name} σε ανέφερε",
"notification.reblog": "Ο/Η {name} προώθησε την κατάστασή σου",
"notifications.clear": "Καθαρισμός ειδοποιήσεων", "notifications.clear": "Καθαρισμός ειδοποιήσεων",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις όλες τις ειδοποιήσεις σου;",
"notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.alert": "Desktop notifications",
"notifications.column_settings.favourite": "Favourites:",
"notifications.column_settings.follow": "New followers:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.favourite": "Αγαπημένα:",
"notifications.column_settings.follow": "Νέοι ακόλουθοι:",
"notifications.column_settings.mention": "Αναφορές:",
"notifications.column_settings.push": "Push notifications", "notifications.column_settings.push": "Push notifications",
"notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
"notifications.column_settings.push_meta": "Αυτή η συσκευή",
"notifications.column_settings.reblog": "Προωθήσεις:",
"notifications.column_settings.show": "Εμφάνισε σε στήλη",
"notifications.column_settings.sound": "Ηχητική ειδοποίηση",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"onboarding.done": "Done",
"onboarding.next": "Next",
"onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
"onboarding.done": "Έγινε",
"onboarding.next": "Επόμενο",
"onboarding.page_five.public_timelines": "Η τοπική ροή δείχνει τις δημόσιες δημοσιεύσεις από όσους εδρεύουν στον κόμβο {domain}. Η ομοσπονδιακή ροή δείχνει τις δημόσιες δημοσιεύσεις εκείνων που οι χρήστες του {domain} ακολουθούν. Αυτές οι είναι Δημόσιες Ροές, ένας ωραίος τρόπος να ανακαλύψεις καινούριους ανθρώπους.",
"onboarding.page_four.home": "The home timeline shows posts from people you follow.", "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
"onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
"onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
@@ -201,7 +204,7 @@
"onboarding.page_six.almost_done": "Almost done...", "onboarding.page_six.almost_done": "Almost done...",
"onboarding.page_six.appetoot": "Bon Appetoot!", "onboarding.page_six.appetoot": "Bon Appetoot!",
"onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
"onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
"onboarding.page_six.github": "Το Mastodon είναι ελεύθερο λογισμικό. Μπορείς να αναφέρεις σφάλματα, να αιτηθείς νέες λειτουργίες ή να συνεισφέρεις κώδικα στο {github}.",
"onboarding.page_six.guidelines": "community guidelines", "onboarding.page_six.guidelines": "community guidelines",
"onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
"onboarding.page_six.various_app": "mobile apps", "onboarding.page_six.various_app": "mobile apps",
@@ -227,13 +230,13 @@
"relative_time.seconds": "{number}s", "relative_time.seconds": "{number}s",
"reply_indicator.cancel": "Cancel", "reply_indicator.cancel": "Cancel",
"report.forward": "Forward to {target}", "report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
"report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της καταγγελίας κι εκεί;",
"report.hint": "Η καταγγελία θα σταλεί στους διαχειριστές του κόμβου σου. Μπορείς να περιγράψεις γιατί καταγγέλεις το λογαριασμό παρακάτω:",
"report.placeholder": "Additional comments", "report.placeholder": "Additional comments",
"report.submit": "Submit", "report.submit": "Submit",
"report.target": "Report {target}",
"report.target": "Καταγγελία {target}",
"search.placeholder": "Search", "search.placeholder": "Search",
"search_popout.search_format": "Advanced search format",
"search_popout.search_format": "Προχωρημένη αναζήτηση",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag", "search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status", "search_popout.tips.status": "status",
@@ -247,7 +250,7 @@
"status.block": "Block @{name}", "status.block": "Block @{name}",
"status.cancel_reblog_private": "Unboost", "status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted", "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Delete",
"status.delete": "Διαγραφή",
"status.direct": "Direct message @{name}", "status.direct": "Direct message @{name}",
"status.embed": "Embed", "status.embed": "Embed",
"status.favourite": "Favourite", "status.favourite": "Favourite",
@@ -263,9 +266,10 @@
"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": "Καταγγελία @{name}",
"status.sensitive_toggle": "Click to view", "status.sensitive_toggle": "Click to view",
"status.sensitive_warning": "Sensitive content", "status.sensitive_warning": "Sensitive content",
"status.share": "Share", "status.share": "Share",
@@ -275,19 +279,20 @@
"status.show_more_all": "Show more for all", "status.show_more_all": "Show more for all",
"status.unmute_conversation": "Unmute conversation", "status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile", "status.unpin": "Unpin from profile",
"tabs_bar.federated_timeline": "Federated",
"tabs_bar.federated_timeline": "Ομοσπονδιακή",
"tabs_bar.home": "Home", "tabs_bar.home": "Home",
"tabs_bar.local_timeline": "Local", "tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",
"upload_form.description": "Describe for the visually impaired", "upload_form.description": "Describe for the visually impaired",
"upload_form.focus": "Crop", "upload_form.focus": "Crop",
"upload_form.undo": "Undo",
"upload_form.undo": "Διαγραφή",
"upload_progress.label": "Uploading...", "upload_progress.label": "Uploading...",
"video.close": "Close video", "video.close": "Close video",
"video.exit_fullscreen": "Exit full screen", "video.exit_fullscreen": "Exit full screen",


+ 11
- 6
app/javascript/mastodon/locales/en.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Pin", "column_header.pin": "Pin",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin", "column_header.unpin": "Unpin",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Settings", "column_subheading.settings": "Settings",
"compose_form.direct_message_warning": "This toot will only be sent to the mentioned users.", "compose_form.direct_message_warning": "This toot will only be sent to the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -81,9 +80,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"follow_request.authorize": "Authorize", "follow_request.authorize": "Authorize",
"follow_request.reject": "Reject", "follow_request.reject": "Reject",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Getting started", "getting_started.heading": "Getting started",
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.userguide": "User Guide",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Advanced", "home.column_settings.advanced": "Advanced",
"home.column_settings.basic": "Basic", "home.column_settings.basic": "Basic",
"home.column_settings.filter_regex": "Filter out by regular expressions", "home.column_settings.filter_regex": "Filter out by regular expressions",
@@ -160,18 +160,21 @@
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "Local timeline",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile", "navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favourites", "navigation_bar.favourites": "Favourites",
"navigation_bar.follow_requests": "Follow requests", "navigation_bar.follow_requests": "Follow requests",
"navigation_bar.info": "About this instance", "navigation_bar.info": "About this instance",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Logout", "navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "Muted users",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status", "notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 15
- 10
app/javascript/mastodon/locales/eo.json View File

@@ -58,10 +58,9 @@
"column_header.pin": "Alpingli", "column_header.pin": "Alpingli",
"column_header.show_settings": "Montri agordojn", "column_header.show_settings": "Montri agordojn",
"column_header.unpin": "Depingli", "column_header.unpin": "Depingli",
"column_subheading.navigation": "Navigado",
"column_subheading.settings": "Agordado", "column_subheading.settings": "Agordado",
"compose_form.direct_message_warning": "Tiu mesaĝo videblos nur por ĉiuj menciitaj uzantoj.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.direct_message_warning": "Tiu mesaĝo estos sendita nur al menciitaj uzantoj.",
"compose_form.direct_message_warning_learn_more": "Lerni pli",
"compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.", "compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.",
"compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.", "compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.",
"compose_form.lock_disclaimer.lock": "ŝlosita", "compose_form.lock_disclaimer.lock": "ŝlosita",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Estas nenio ĉi tie! Publike skribu ion, aŭ mane sekvu uzantojn de aliaj nodoj por plenigi la publikan tempolinion", "empty_column.public": "Estas nenio ĉi tie! Publike skribu ion, aŭ mane sekvu uzantojn de aliaj nodoj por plenigi la publikan tempolinion",
"follow_request.authorize": "Rajtigi", "follow_request.authorize": "Rajtigi",
"follow_request.reject": "Rifuzi", "follow_request.reject": "Rifuzi",
"getting_started.appsshort": "Aplikaĵoj",
"getting_started.faq": "Oftaj demandoj",
"getting_started.documentation": "Dokumentado",
"getting_started.heading": "Por komenci", "getting_started.heading": "Por komenci",
"getting_started.open_source_notice": "Mastodon estas malfermitkoda programo. Vi povas kontribui aŭ raporti problemojn en GitHub je {github}.", "getting_started.open_source_notice": "Mastodon estas malfermitkoda programo. Vi povas kontribui aŭ raporti problemojn en GitHub je {github}.",
"getting_started.userguide": "Gvidilo de uzo",
"getting_started.terms": "Uzkondiĉoj",
"home.column_settings.advanced": "Precizaj agordoj", "home.column_settings.advanced": "Precizaj agordoj",
"home.column_settings.basic": "Bazaj agordoj", "home.column_settings.basic": "Bazaj agordoj",
"home.column_settings.filter_regex": "Filtri per regulesprimoj", "home.column_settings.filter_regex": "Filtri per regulesprimoj",
@@ -160,18 +160,21 @@
"navigation_bar.blocks": "Blokitaj uzantoj", "navigation_bar.blocks": "Blokitaj uzantoj",
"navigation_bar.community_timeline": "Loka tempolinio", "navigation_bar.community_timeline": "Loka tempolinio",
"navigation_bar.direct": "Rektaj mesaĝoj", "navigation_bar.direct": "Rektaj mesaĝoj",
"navigation_bar.discover": "Esplori",
"navigation_bar.domain_blocks": "Kaŝitaj domajnoj", "navigation_bar.domain_blocks": "Kaŝitaj domajnoj",
"navigation_bar.edit_profile": "Redakti profilon", "navigation_bar.edit_profile": "Redakti profilon",
"navigation_bar.favourites": "Stelumoj", "navigation_bar.favourites": "Stelumoj",
"navigation_bar.follow_requests": "Petoj de sekvado", "navigation_bar.follow_requests": "Petoj de sekvado",
"navigation_bar.info": "Pri ĉi tiu nodo", "navigation_bar.info": "Pri ĉi tiu nodo",
"navigation_bar.keyboard_shortcuts": "Klavaraj mallongigoj",
"navigation_bar.keyboard_shortcuts": "Rapidklavoj",
"navigation_bar.lists": "Listoj", "navigation_bar.lists": "Listoj",
"navigation_bar.logout": "Elsaluti", "navigation_bar.logout": "Elsaluti",
"navigation_bar.mutes": "Silentigitaj uzantoj", "navigation_bar.mutes": "Silentigitaj uzantoj",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Alpinglitaj mesaĝoj", "navigation_bar.pins": "Alpinglitaj mesaĝoj",
"navigation_bar.preferences": "Preferoj", "navigation_bar.preferences": "Preferoj",
"navigation_bar.public_timeline": "Fratara tempolinio", "navigation_bar.public_timeline": "Fratara tempolinio",
"navigation_bar.security": "Sekureco",
"notification.favourite": "{name} stelumis vian mesaĝon", "notification.favourite": "{name} stelumis vian mesaĝon",
"notification.follow": "{name} eksekvis vin", "notification.follow": "{name} eksekvis vin",
"notification.mention": "{name} menciis vin", "notification.mention": "{name} menciis vin",
@@ -187,7 +190,7 @@
"notifications.column_settings.reblog": "Diskonigoj:", "notifications.column_settings.reblog": "Diskonigoj:",
"notifications.column_settings.show": "Montri en kolumno", "notifications.column_settings.show": "Montri en kolumno",
"notifications.column_settings.sound": "Eligi sonon", "notifications.column_settings.sound": "Eligi sonon",
"notifications.group": "{count} notifications",
"notifications.group": "{count} sciigoj",
"onboarding.done": "Farita", "onboarding.done": "Farita",
"onboarding.next": "Sekva", "onboarding.next": "Sekva",
"onboarding.page_five.public_timelines": "La loka tempolinio montras publikajn mesaĝojn de ĉiuj en {domain}. La fratara tempolinio montras publikajn mesaĝojn de ĉiuj, kiuj estas sekvataj de homoj en {domain}. Tio estas la publikaj tempolinioj, kio estas bona maniero por malkovri novajn homojn.", "onboarding.page_five.public_timelines": "La loka tempolinio montras publikajn mesaĝojn de ĉiuj en {domain}. La fratara tempolinio montras publikajn mesaĝojn de ĉiuj, kiuj estas sekvataj de homoj en {domain}. Tio estas la publikaj tempolinioj, kio estas bona maniero por malkovri novajn homojn.",
@@ -263,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}",
@@ -280,8 +284,9 @@
"tabs_bar.local_timeline": "Loka tempolinio", "tabs_bar.local_timeline": "Loka tempolinio",
"tabs_bar.notifications": "Sciigoj", "tabs_bar.notifications": "Sciigoj",
"tabs_bar.search": "Serĉi", "tabs_bar.search": "Serĉi",
"timeline.media": "Media",
"timeline.posts": "Toots",
"timeline.media": "Aŭdovidaĵoj",
"timeline.posts": "Mesaĝoj",
"trends.count_by_accounts": "{count} {rawCount, pluraj, unu {person} alia(j) {people}} parolas",
"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",


+ 9
- 4
app/javascript/mastodon/locales/es.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Fijar", "column_header.pin": "Fijar",
"column_header.show_settings": "Mostrar ajustes", "column_header.show_settings": "Mostrar ajustes",
"column_header.unpin": "Dejar de fijar", "column_header.unpin": "Dejar de fijar",
"column_subheading.navigation": "Navegación",
"column_subheading.settings": "Ajustes", "column_subheading.settings": "Ajustes",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "¡No hay nada aquí! Escribe algo públicamente, o sigue usuarios de otras instancias manualmente para llenarlo", "empty_column.public": "¡No hay nada aquí! Escribe algo públicamente, o sigue usuarios de otras instancias manualmente para llenarlo",
"follow_request.authorize": "Autorizar", "follow_request.authorize": "Autorizar",
"follow_request.reject": "Rechazar", "follow_request.reject": "Rechazar",
"getting_started.appsshort": "Aplicaciones",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Primeros pasos", "getting_started.heading": "Primeros pasos",
"getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.", "getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.",
"getting_started.userguide": "Guía de usuario",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Avanzado", "home.column_settings.advanced": "Avanzado",
"home.column_settings.basic": "Básico", "home.column_settings.basic": "Básico",
"home.column_settings.filter_regex": "Filtrar con expresiones regulares", "home.column_settings.filter_regex": "Filtrar con expresiones regulares",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.blocks": "Usuarios bloqueados",
"navigation_bar.community_timeline": "Historia local", "navigation_bar.community_timeline": "Historia local",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Editar perfil", "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.favourites": "Favoritos", "navigation_bar.favourites": "Favoritos",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listas", "navigation_bar.lists": "Listas",
"navigation_bar.logout": "Cerrar sesión", "navigation_bar.logout": "Cerrar sesión",
"navigation_bar.mutes": "Usuarios silenciados", "navigation_bar.mutes": "Usuarios silenciados",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Toots fijados", "navigation_bar.pins": "Toots fijados",
"navigation_bar.preferences": "Preferencias", "navigation_bar.preferences": "Preferencias",
"navigation_bar.public_timeline": "Historia federada", "navigation_bar.public_timeline": "Historia federada",
"navigation_bar.security": "Security",
"notification.favourite": "{name} marcó tu estado como favorito", "notification.favourite": "{name} marcó tu estado como favorito",
"notification.follow": "{name} te empezó a seguir", "notification.follow": "{name} te empezó a seguir",
"notification.mention": "{name} te ha mencionado", "notification.mention": "{name} te ha mencionado",
@@ -263,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",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 268
- 263
app/javascript/mastodon/locales/eu.json View File

@@ -1,301 +1,306 @@
{ {
"account.badges.bot": "Bot", "account.badges.bot": "Bot",
"account.block": "Blokeatu @{name}", "account.block": "Blokeatu @{name}",
"account.block_domain": "{domain}(e)ko guztia ezkutatu",
"account.block_domain": "Ezkutatu {domain} domeinuko guztia",
"account.blocked": "Blokeatuta", "account.blocked": "Blokeatuta",
"account.direct": "@{name}(e)ri mezu zuzena bidali",
"account.direct": "Mezu zuzena @{name}(r)i",
"account.disclaimer_full": "Baliteke beheko informazioak erabiltzailearen profilaren zati bat baino ez erakustea.", "account.disclaimer_full": "Baliteke beheko informazioak erabiltzailearen profilaren zati bat baino ez erakustea.",
"account.domain_blocked": "Ezkutatutako domeinua", "account.domain_blocked": "Ezkutatutako domeinua",
"account.edit_profile": "Profila aldatu", "account.edit_profile": "Profila aldatu",
"account.follow": "Jarraitu", "account.follow": "Jarraitu",
"account.followers": "Jarraitzaileak", "account.followers": "Jarraitzaileak",
"account.follows": "Jarraitzen", "account.follows": "Jarraitzen",
"account.follows_you": "Jarraitzen dizu",
"account.hide_reblogs": "@{name}(e)k sustatutakoak ezkutatu",
"account.follows_you": "Jarraitzen zaitu",
"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": "@{name} isilarazi",
"account.mute_notifications": "@{name}(e)ren jakinarazpenak isilarazi",
"account.muted": "Isilarazita",
"account.posts": "Toots",
"account.posts_with_replies": "Toots and replies",
"account.report": "@{name} salatu",
"account.mute": "Mututu @{name}",
"account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak",
"account.muted": "Mutututa",
"account.posts": "Toot-ak",
"account.posts_with_replies": "Toot eta erantzunak",
"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": "@{name}(e)k sustatutakoak erakutsi",
"account.unblock": "@{name} desblokeatu",
"account.show_reblogs": "Erakutsi @{name}(r)en bultzadak",
"account.unblock": "Desblokeatu @{name}",
"account.unblock_domain": "Berriz erakutsi {domain}", "account.unblock_domain": "Berriz erakutsi {domain}",
"account.unfollow": "Jarraitzeari utzi", "account.unfollow": "Jarraitzeari utzi",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
"account.view_full_profile": "View full profile",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
"account.unmute": "Desmututu @{name}",
"account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak",
"account.view_full_profile": "Ikusi profil osoa",
"alert.unexpected.message": "Ustekabeko errore bat gertatu da.",
"alert.unexpected.title": "Ene!",
"boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko",
"bundle_column_error.body": "Zerbait okerra gertatu da osagai hau kargatzean.",
"bundle_column_error.retry": "Saiatu berriro",
"bundle_column_error.title": "Network error", "bundle_column_error.title": "Network error",
"bundle_modal_error.close": "Close",
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Blocked users",
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.domain_blocks": "Hidden domains",
"column.favourites": "Favourites",
"column.follow_requests": "Follow requests",
"column.home": "Home",
"column.lists": "Lists",
"column.mutes": "Muted users",
"column.notifications": "Notifications",
"bundle_modal_error.close": "Itxi",
"bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.",
"bundle_modal_error.retry": "Saiatu berriro",
"column.blocks": "Blokeatutako erabiltzaileak",
"column.community": "Denbora-lerro lokala",
"column.direct": "Mezu zuzenak",
"column.domain_blocks": "Ezkutatutako domeinuak",
"column.favourites": "Gogokoak",
"column.follow_requests": "Jarraitzeko eskariak",
"column.home": "Hasiera",
"column.lists": "Zerrendak",
"column.mutes": "Mutututako erabiltzaileak",
"column.notifications": "Jakinarazpenak",
"column.pins": "Pinned toot", "column.pins": "Pinned toot",
"column.public": "Federated timeline",
"column_back_button.label": "Back",
"column_header.hide_settings": "Hide settings",
"column_header.moveLeft_settings": "Move column to the left",
"column_header.moveRight_settings": "Move column to the right",
"column_header.pin": "Pin",
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Settings",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"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",
"compose_form.placeholder": "What is on your mind?",
"column.public": "Federatutako denbora-lerroa",
"column_back_button.label": "Atzera",
"column_header.hide_settings": "Ezkutatu ezarpenak",
"column_header.moveLeft_settings": "Eraman zutabea ezkerrera",
"column_header.moveRight_settings": "Eraman zutabea eskuinera",
"column_header.pin": "Finkatu",
"column_header.show_settings": "Erakutsi ezarpenak",
"column_header.unpin": "Desfinkatu",
"column_subheading.settings": "Ezarpenak",
"compose_form.direct_message_warning": "Toot hau aipatutako erabiltzaileei besterik ez zaie bidaliko.",
"compose_form.direct_message_warning_learn_more": "Ikasi gehiago",
"compose_form.hashtag_warning": "Toot hau ez da traoletan agertuko zerrendatu gabekoa baita. Traoletan toot publikoak besterik ez dira agertzen.",
"compose_form.lock_disclaimer": "Zure kontua ez dago {locked}. Edonork jarraitu zaitzake zure jarraitzaileentzako soilik diren mezuak ikusteko.",
"compose_form.lock_disclaimer.lock": "giltzapetuta",
"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": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"compose_form.spoiler_placeholder": "Write your warning here",
"confirmation_modal.cancel": "Cancel",
"compose_form.sensitive.marked": "Multimedia edukia hunkigarri gisa markatu da",
"compose_form.sensitive.unmarked": "Multimedia edukia ez da hunkigarri gisa markatu",
"compose_form.spoiler.marked": "Testua abisu batek ezkutatzen du",
"compose_form.spoiler.unmarked": "Testua ez dago ezkutatuta",
"compose_form.spoiler_placeholder": "Idatzi zure abisua hemen",
"confirmation_modal.cancel": "Utzi",
"confirmations.block.confirm": "Block", "confirmations.block.confirm": "Block",
"confirmations.block.message": "Are you sure you want to block {name}?",
"confirmations.delete.confirm": "Delete",
"confirmations.delete.message": "Are you sure you want to delete this status?",
"confirmations.delete_list.confirm": "Delete",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
"confirmations.domain_block.confirm": "Hide entire domain",
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
"confirmations.mute.confirm": "Mute",
"confirmations.mute.message": "Are you sure you want to mute {name}?",
"confirmations.unfollow.confirm": "Unfollow",
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "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.hashtag": "There is nothing in this hashtag yet.",
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
"empty_column.home.public_timeline": "the public timeline",
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.heading": "Getting started",
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.userguide": "User Guide",
"home.column_settings.advanced": "Advanced",
"home.column_settings.basic": "Basic",
"home.column_settings.filter_regex": "Filter out by regular expressions",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
"home.settings": "Column settings",
"keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"confirmations.block.message": "Ziur {name} blokeatu nahi duzula?",
"confirmations.delete.confirm": "Ezabatu",
"confirmations.delete.message": "Ziur mezu hau ezabatu nahi duzula?",
"confirmations.delete_list.confirm": "Ezabatu",
"confirmations.delete_list.message": "Ziur behin betiko ezabatu nahi duzula zerrenda hau?",
"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.mute.confirm": "Mututu",
"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.message": "Ziur {name} jarraitzeari utzi nahi diozula?",
"embed.instructions": "Txertatu mezu hau zure webgunean beheko kodea kopatuz.",
"embed.preview": "Hau da izango duen itxura:",
"emoji_button.activity": "Jarduera",
"emoji_button.custom": "Pertsonalizatua",
"emoji_button.flags": "Banderak",
"emoji_button.food": "Janari eta edaria",
"emoji_button.label": "Txertatu emoji-a",
"emoji_button.nature": "Natura",
"emoji_button.not_found": "Emojirik ez!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objektuak",
"emoji_button.people": "Jendea",
"emoji_button.recent": "Maiz erabiliak",
"emoji_button.search": "Bilatu...",
"emoji_button.search_results": "Bilaketaren emaitzak",
"emoji_button.symbols": "Sinboloak",
"emoji_button.travel": "Bidaiak eta tokiak",
"empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!",
"empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.",
"empty_column.hashtag": "Ez dago ezer traola honetan oraindik.",
"empty_column.home": "Zure hasierako denbora-lerroa hutsik dago! Ikusi {public} edo erabili bilaketa lehen urratsak eman eta beste batzuk aurkitzeko.",
"empty_column.home.public_timeline": "denbora-lerro publikoa",
"empty_column.list": "Ez dago ezer zerrenda honetan. Zerrenda honetako kideek mezu berriak argitaratzean, hemen agertuko dira.",
"empty_column.notifications": "Ez duzu jakinarazpenik oraindik. Jarri besteekin harremanetan elkarrizketa abiatzeko.",
"empty_column.public": "Ez dago ezer hemen! Idatzi zerbait publikoki edo jarraitu eskuz beste instantzia batzuetako erabiltzailean hau betetzeko",
"follow_request.authorize": "Baimendu",
"follow_request.reject": "Ukatu",
"getting_started.documentation": "Dokumentazioa",
"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.terms": "Erabilera baldintzak",
"home.column_settings.advanced": "Aurreratua",
"home.column_settings.basic": "Oinarrizkoa",
"home.column_settings.filter_regex": "Iragazi adierazpen erregularren bidez",
"home.column_settings.show_reblogs": "Erakutsi bultzadak",
"home.column_settings.show_replies": "Erakutsi erantzunak",
"home.settings": "Zutabearen ezarpenak",
"keyboard_shortcuts.back": "atzera nabigatzeko",
"keyboard_shortcuts.boost": "bultzada ematea",
"keyboard_shortcuts.column": "mezu bat zutabe batean fokatzea",
"keyboard_shortcuts.compose": "testua konposatzeko arean fokatzea",
"keyboard_shortcuts.description": "Description", "keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.down": "zerrendan behera mugitzea",
"keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "to favourite",
"keyboard_shortcuts.favourite": "gogoko egitea",
"keyboard_shortcuts.heading": "Keyboard Shortcuts", "keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.mention": "to mention author",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
"lists.edit": "Edit list",
"lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title",
"lists.search": "Search among people you follow",
"lists.subheading": "Your lists",
"loading_indicator.label": "Loading...",
"media_gallery.toggle_visible": "Toggle visibility",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.direct": "Direct messages",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favourites",
"navigation_bar.follow_requests": "Follow requests",
"navigation_bar.info": "Extended information",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Lists",
"navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Muted users",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
"notification.mention": "{name} mentioned you",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications",
"notifications.column_settings.favourite": "Favourites:",
"notifications.column_settings.follow": "New followers:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.push": "Push notifications",
"notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
"notifications.group": "{count} notifications",
"onboarding.done": "Done",
"onboarding.next": "Next",
"onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
"onboarding.page_four.home": "The home timeline shows posts from people you follow.",
"onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
"onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
"onboarding.page_one.full_handle": "Your full handle",
"onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.",
"onboarding.page_one.welcome": "Welcome to Mastodon!",
"onboarding.page_six.admin": "Your instance's admin is {admin}.",
"onboarding.page_six.almost_done": "Almost done...",
"keyboard_shortcuts.hotkey": "Laster-tekla",
"keyboard_shortcuts.legend": "legenda hau bistaratzea",
"keyboard_shortcuts.mention": "egilea aipatzea",
"keyboard_shortcuts.reply": "erantzutea",
"keyboard_shortcuts.search": "bilaketan fokua jartzea",
"keyboard_shortcuts.toggle_hidden": "testua erakustea/ezkutatzea abisu baten atzean",
"keyboard_shortcuts.toot": "toot berria hastea",
"keyboard_shortcuts.unfocus": "testua konposatzeko area / bilaketatik fokua kentzea",
"keyboard_shortcuts.up": "zerrendan gora mugitzea",
"lightbox.close": "Itxi",
"lightbox.next": "Hurrengoa",
"lightbox.previous": "Aurrekoa",
"lists.account.add": "Gehitu zerrendara",
"lists.account.remove": "Kendu zerrendatik",
"lists.delete": "Ezabatu zerrenda",
"lists.edit": "Editatu zerrenda",
"lists.new.create": "Gehitu zerrenda",
"lists.new.title_placeholder": "Zerrenda berriaren izena",
"lists.search": "Bilatu jarraitzen dituzun pertsonen artean",
"lists.subheading": "Zure zerrendak",
"loading_indicator.label": "Kargatzen...",
"media_gallery.toggle_visible": "Txandakatu ikusgaitasuna",
"missing_indicator.label": "Ez aurkitua",
"missing_indicator.sublabel": "Baliabide hau ezin izan da aurkitu",
"mute_modal.hide_notifications": "Ezkutatu erabiltzaile honen jakinarazpenak?",
"navigation_bar.blocks": "Blokeatutako erabiltzaileak",
"navigation_bar.community_timeline": "Denbora-lerro lokala",
"navigation_bar.direct": "Mezu zuzenak",
"navigation_bar.discover": "Aurkitu",
"navigation_bar.domain_blocks": "Ezkutatutako domeinuak",
"navigation_bar.edit_profile": "Aldatu profila",
"navigation_bar.favourites": "Gogokoak",
"navigation_bar.follow_requests": "Jarraitzeko eskariak",
"navigation_bar.info": "Instantzia honi buruz",
"navigation_bar.keyboard_shortcuts": "Laster-teklak",
"navigation_bar.lists": "Zerrendak",
"navigation_bar.logout": "Amaitu saioa",
"navigation_bar.mutes": "Mutututako erabiltzaileak",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Finkatutako toot-ak",
"navigation_bar.preferences": "Hobespenak",
"navigation_bar.public_timeline": "Federatutako denbora-lerroa",
"navigation_bar.security": "Segurtasuna",
"notification.favourite": "{name}(e)k zure mezua gogoko du",
"notification.follow": "{name}(e)k jarraitzen zaitu",
"notification.mention": "{name}(e)k aipatu zaitu",
"notification.reblog": "{name}(e)k bultzada eman dio zure mezuari",
"notifications.clear": "Garbitu jakinarazpenak",
"notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?",
"notifications.column_settings.alert": "Mahaigaineko jakinarazpenak",
"notifications.column_settings.favourite": "Gogokoak:",
"notifications.column_settings.follow": "Jarraitzaile berriak:",
"notifications.column_settings.mention": "Aipamenak:",
"notifications.column_settings.push": "Push jakinarazpenak",
"notifications.column_settings.push_meta": "Gailu hau",
"notifications.column_settings.reblog": "Bultzadak:",
"notifications.column_settings.show": "Erakutsi zutabean",
"notifications.column_settings.sound": "Jo soinua",
"notifications.group": "{count} jakinarazpen",
"onboarding.done": "Egina",
"onboarding.next": "Hurrengoa",
"onboarding.page_five.public_timelines": "Denbora-lerro lokalak {domain} domeinuko guztien mezu publikoak erakusten ditu. Federatutako denbora-lerroak {domain} domeinuko edonork jarraitutakoen mezu publikoak erakusten ditu. Hauek denbora-lerro publikoak dira, jende berria ezagutzeko primerakoak.",
"onboarding.page_four.home": "Hasierako denbora-lerroak jarraitzen duzun jendearen mezuak erakusten ditu.",
"onboarding.page_four.notifications": "Jakinarazpenen zutabeak besteek zurekin hasitako hartu-emanak erakusten ditu.",
"onboarding.page_one.federation": "Mastodon lotutako zerbitzari independenteez eraikitako gizarte sare bat da. Zerbitzari hauei instantzia deitzen diegu.",
"onboarding.page_one.full_handle": "Zure erabiltzaile-izen osoa",
"onboarding.page_one.handle_hint": "Hau da zure lagunei zu aurkitzeko emango zeniena.",
"onboarding.page_one.welcome": "Ongi etorri Mastodon-era!",
"onboarding.page_six.admin": "Zure instantziaren administratzailea {admin} da.",
"onboarding.page_six.almost_done": "Ia eginda...",
"onboarding.page_six.appetoot": "Bon Appetoot!", "onboarding.page_six.appetoot": "Bon Appetoot!",
"onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
"onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
"onboarding.page_six.guidelines": "community guidelines",
"onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
"onboarding.page_six.various_app": "mobile apps",
"onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
"onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
"onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
"onboarding.skip": "Skip",
"privacy.change": "Adjust status privacy",
"privacy.direct.long": "Post to mentioned users only",
"privacy.direct.short": "Direct",
"privacy.private.long": "Post to followers only",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Post to public timelines",
"privacy.public.short": "Public",
"onboarding.page_six.apps_available": "{apps} eskuragarri daude iOS, Android eta beste plataformetarako.",
"onboarding.page_six.github": "Mastodon software librea da. Akatsen berri eman ezakezu, ezaugarriak eskatu, edo kodea proposatu hemen: {github}.",
"onboarding.page_six.guidelines": "komunitatearen gida-lerroak",
"onboarding.page_six.read_guidelines": "Irakurri {domain} {guidelines} mesedez!",
"onboarding.page_six.various_app": "mugikorrerako aplikazioak",
"onboarding.page_three.profile": "Editatu zure profila zure abatarra, biografia eta pantaila-izena aldatzeko. Han hobespen gehiago daude ere.",
"onboarding.page_three.search": "Erabili bilaketa-barra jendea aurkitzeko eta traolak begiratzeko, esaterako {illustration} edo {introductions}. Instantzia honetan ez dagoen pertsona bat bilatzeko , erabili erabiltzaile-izen osoa.",
"onboarding.page_two.compose": "Idatzi mezuak konposizio-zutabean. Irudiak igo ditzakezu, pribatutasun ezarpenak aldatu, eta edukiei abisuak gehitu beheko ikonoekin.",
"onboarding.skip": "Saltatu",
"privacy.change": "Doitu mezuaren pribatutasuna",
"privacy.direct.long": "Bidali aipatutako erabiltzaileei besterik ez",
"privacy.direct.short": "Zuzena",
"privacy.private.long": "Bidali jarraitzaileei besterik ez",
"privacy.private.short": "Jarraitzaileak soilik",
"privacy.public.long": "Bistaratu denbora-lerro publikoetan",
"privacy.public.short": "Publikoa",
"privacy.unlisted.long": "Do not show in public timelines", "privacy.unlisted.long": "Do not show in public timelines",
"privacy.unlisted.short": "Unlisted",
"regeneration_indicator.label": "Loading…",
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
"privacy.unlisted.short": "Zerrendatu gabea",
"regeneration_indicator.label": "Kargatzen…",
"regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!",
"relative_time.days": "{number}d", "relative_time.days": "{number}d",
"relative_time.hours": "{number}h", "relative_time.hours": "{number}h",
"relative_time.just_now": "now",
"relative_time.just_now": "orain",
"relative_time.minutes": "{number}m", "relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s", "relative_time.seconds": "{number}s",
"reply_indicator.cancel": "Cancel",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
"report.placeholder": "Additional comments",
"reply_indicator.cancel": "Utzi",
"report.forward": "Birbidali hona: {target}",
"report.forward_hint": "Kontu hau beste zerbitzari batekoa da. Bidali txostenaren kopia anonimo hara ere?",
"report.hint": "Txostena zure instantziaren moderatzaileei bidaliko zaio. Kontu hau zergatik salatzen duzun behean azaldu dezakezu:",
"report.placeholder": "Iruzkin gehigarriak",
"report.submit": "Submit", "report.submit": "Submit",
"report.target": "Report {target}",
"search.placeholder": "Search",
"search_popout.search_format": "Advanced search format",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
"report.target": "{target} salatzen",
"search.placeholder": "Bilatu",
"search_popout.search_format": "Bilaketa aurreratuaren formatua",
"search_popout.tips.full_text": "Testu hutsarekin zuk idatzitako mezuak, gogokoak, bultzadak edo aipamenak aurkitu ditzakezu, bat datozen erabiltzaile-izenak, pantaila-izenak, eta traolak.",
"search_popout.tips.hashtag": "traola",
"search_popout.tips.status": "status", "search_popout.tips.status": "status",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots",
"search_popout.tips.text": "Testu hutsak pantaila-izenak, erabiltzaile-izenak eta traolak bilatzen ditu",
"search_popout.tips.user": "erabiltzailea",
"search_results.accounts": "Jendea",
"search_results.hashtags": "Traolak",
"search_results.statuses": "Toot-ak",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"standalone.public_title": "A look inside...",
"standalone.public_title": "Begiradatxo bat...",
"status.block": "Block @{name}", "status.block": "Block @{name}",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Delete",
"status.direct": "Direct message @{name}",
"status.embed": "Embed",
"status.favourite": "Favourite",
"status.load_more": "Load more",
"status.media_hidden": "Media hidden",
"status.mention": "Mention @{name}",
"status.more": "More",
"status.mute": "Mute @{name}",
"status.mute_conversation": "Mute conversation",
"status.open": "Expand this status",
"status.pin": "Pin on profile",
"status.pinned": "Pinned toot",
"status.reblog": "Boost",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} boosted",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
"status.sensitive_toggle": "Click to view",
"status.sensitive_warning": "Sensitive content",
"status.share": "Share",
"status.show_less": "Show less",
"status.show_less_all": "Show less for all",
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"tabs_bar.federated_timeline": "Federated",
"tabs_bar.home": "Home",
"tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notifications",
"tabs_bar.search": "Search",
"status.cancel_reblog_private": "Kendu bultzada",
"status.cannot_reblog": "Mezu honi ezin zaio bultzada eman",
"status.delete": "Ezabatu",
"status.direct": "Mezu zuzena @{name}(r)i",
"status.embed": "Txertatu",
"status.favourite": "Gogokoa",
"status.load_more": "Kargatu gehiago",
"status.media_hidden": "Multimedia ezkutatua",
"status.mention": "Aipatu @{name}",
"status.more": "Gehiago",
"status.mute": "Mututu @{name}",
"status.mute_conversation": "Mututu elkarrizketa",
"status.open": "Hedatu mezu hau",
"status.pin": "Finkatu profilean",
"status.pinned": "Finkatutako toot-a",
"status.reblog": "Bultzada",
"status.reblog_private": "Bultzada jatorrizko hartzaileei",
"status.reblogged_by": "{name}(r)en bultzada",
"status.redraft": "Ezabatu eta berridatzi",
"status.reply": "Erantzun",
"status.replyAll": "Erantzun harian",
"status.report": "Salatu @{name}",
"status.sensitive_toggle": "Egin klik ikusteko",
"status.sensitive_warning": "Eduki hunkigarria",
"status.share": "Partekatu",
"status.show_less": "Erakutsi gutxiago",
"status.show_less_all": "Erakutsi denetarik gutxiago",
"status.show_more": "Erakutsi gehiago",
"status.show_more_all": "Erakutsi denetarik gehiago",
"status.unmute_conversation": "Desmututu elkarrizketa",
"status.unpin": "Desfinkatu profiletik",
"tabs_bar.federated_timeline": "Federatua",
"tabs_bar.home": "Hasiera",
"tabs_bar.local_timeline": "Lokala",
"tabs_bar.notifications": "Jakinarazpenak",
"tabs_bar.search": "Bilatu",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Drag & drop to upload",
"upload_button.label": "Add media",
"upload_form.description": "Describe for the visually impaired",
"upload_form.focus": "Crop",
"upload_form.undo": "Undo",
"upload_progress.label": "Uploading...",
"video.close": "Close video",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"timeline.posts": "Toot-ak",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} hitz egiten",
"ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.",
"upload_area.title": "Arrastatu eta jaregin igotzeko",
"upload_button.label": "Gehitu multimedia",
"upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat",
"upload_form.focus": "Moztu",
"upload_form.undo": "Ezabatu",
"upload_progress.label": "Igotzen...",
"video.close": "Itxi bideoa",
"video.exit_fullscreen": "Irten pantaila osotik",
"video.expand": "Hedatu bideoa",
"video.fullscreen": "Full screen", "video.fullscreen": "Full screen",
"video.hide": "Hide video",
"video.mute": "Mute sound",
"video.hide": "Ezkutatu bideoa",
"video.mute": "Mututu soinua",
"video.pause": "Pause", "video.pause": "Pause",
"video.play": "Play",
"video.unmute": "Unmute sound"
"video.play": "Jo",
"video.unmute": "Desmututu soinua"
} }

+ 53
- 48
app/javascript/mastodon/locales/fa.json View File

@@ -1,9 +1,9 @@
{ {
"account.badges.bot": "Bot",
"account.badges.bot": "ربات",
"account.block": "مسدودسازی @{name}", "account.block": "مسدودسازی @{name}",
"account.block_domain": "پنهان‌سازی همه چیز از سرور {domain}", "account.block_domain": "پنهان‌سازی همه چیز از سرور {domain}",
"account.blocked": "مسدودشده", "account.blocked": "مسدودشده",
"account.direct": "Direct message @{name}",
"account.direct": "پیغام خصوصی به @{name}",
"account.disclaimer_full": "اطلاعات زیر ممکن است نمایهٔ این کاربر را به تمامی نشان ندهد.", "account.disclaimer_full": "اطلاعات زیر ممکن است نمایهٔ این کاربر را به تمامی نشان ندهد.",
"account.domain_blocked": "دامین پنهان‌شده", "account.domain_blocked": "دامین پنهان‌شده",
"account.edit_profile": "ویرایش نمایه", "account.edit_profile": "ویرایش نمایه",
@@ -12,7 +12,7 @@
"account.follows": "پی می‌گیرد", "account.follows": "پی می‌گیرد",
"account.follows_you": "پیگیر شماست", "account.follows_you": "پیگیر شماست",
"account.hide_reblogs": "پنهان کردن بازبوق‌های @{name}", "account.hide_reblogs": "پنهان کردن بازبوق‌های @{name}",
"account.media": "رسانه",
"account.media": "عکس و ویدیو",
"account.mention": "نام‌بردن از @{name}", "account.mention": "نام‌بردن از @{name}",
"account.moved_to": "{name} منتقل شده است به:", "account.moved_to": "{name} منتقل شده است به:",
"account.mute": "بی‌صدا کردن @{name}", "account.mute": "بی‌صدا کردن @{name}",
@@ -30,8 +30,8 @@
"account.unmute": "باصدا کردن @{name}", "account.unmute": "باصدا کردن @{name}",
"account.unmute_notifications": "باصداکردن اعلان‌ها از طرف @{name}", "account.unmute_notifications": "باصداکردن اعلان‌ها از طرف @{name}",
"account.view_full_profile": "نمایش نمایهٔ کامل", "account.view_full_profile": "نمایش نمایهٔ کامل",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
"alert.unexpected.message": "خطای پیش‌بینی‌نشده‌ای رخ داد.",
"alert.unexpected.title": "ای وای!",
"boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید",
"bundle_column_error.body": "هنگام بازکردن این بخش خطایی رخ داد.", "bundle_column_error.body": "هنگام بازکردن این بخش خطایی رخ داد.",
"bundle_column_error.retry": "تلاش دوباره", "bundle_column_error.retry": "تلاش دوباره",
@@ -41,8 +41,8 @@
"bundle_modal_error.retry": "تلاش دوباره", "bundle_modal_error.retry": "تلاش دوباره",
"column.blocks": "کاربران مسدودشده", "column.blocks": "کاربران مسدودشده",
"column.community": "نوشته‌های محلی", "column.community": "نوشته‌های محلی",
"column.direct": "Direct messages",
"column.domain_blocks": "Hidden domains",
"column.direct": "پیغام‌های خصوصی",
"column.domain_blocks": "دامین‌های پنهان‌شده",
"column.favourites": "پسندیده‌ها", "column.favourites": "پسندیده‌ها",
"column.follow_requests": "درخواست‌های پیگیری", "column.follow_requests": "درخواست‌های پیگیری",
"column.home": "خانه", "column.home": "خانه",
@@ -58,20 +58,19 @@
"column_header.pin": "ثابت‌کردن", "column_header.pin": "ثابت‌کردن",
"column_header.show_settings": "نمایش تنظیمات", "column_header.show_settings": "نمایش تنظیمات",
"column_header.unpin": "رهاکردن", "column_header.unpin": "رهاکردن",
"column_subheading.navigation": "گشت و گذار",
"column_subheading.settings": "تنظیمات", "column_subheading.settings": "تنظیمات",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"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.direct_message_warning": "این بوق تنها به کاربرانی که از آن‌ها نام برده شده فرستاده خواهد شد.",
"compose_form.direct_message_warning_learn_more": "بیشتر بدانید",
"compose_form.hashtag_warning": "از آن‌جا که این بوق فهرست‌نشده است، در نتایج جستجوی هشتگ‌ها پیدا نخواهد شد. تنها بوق‌های عمومی را می‌توان با جستجوی هشتگ پیدا کرد.",
"compose_form.lock_disclaimer": "حساب شما {locked} نیست. هر کسی می‌تواند پیگیر شما شود و نوشته‌های ویژهٔ پیگیران شما را ببیند.", "compose_form.lock_disclaimer": "حساب شما {locked} نیست. هر کسی می‌تواند پیگیر شما شود و نوشته‌های ویژهٔ پیگیران شما را ببیند.",
"compose_form.lock_disclaimer.lock": "قفل", "compose_form.lock_disclaimer.lock": "قفل",
"compose_form.placeholder": "تازه چه خبر؟", "compose_form.placeholder": "تازه چه خبر؟",
"compose_form.publish": "بوق", "compose_form.publish": "بوق",
"compose_form.publish_loud": "{publish}!", "compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"compose_form.sensitive.marked": "این تصویر به عنوان حساس علامت‌گذاری شده",
"compose_form.sensitive.unmarked": "این تصویر به عنوان حساس علامت‌گذاری نشده",
"compose_form.spoiler.marked": "نوشته پشت هشدار محتوا پنهان است",
"compose_form.spoiler.unmarked": "نوشته پنهان نیست",
"compose_form.spoiler_placeholder": "هشدار محتوا", "compose_form.spoiler_placeholder": "هشدار محتوا",
"confirmation_modal.cancel": "بی‌خیال", "confirmation_modal.cancel": "بی‌خیال",
"confirmations.block.confirm": "مسدود کن", "confirmations.block.confirm": "مسدود کن",
@@ -84,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": "برای جاگذاری این نوشته در سایت خودتان، کد زیر را کپی کنید.",
@@ -103,7 +104,7 @@
"emoji_button.symbols": "نمادها", "emoji_button.symbols": "نمادها",
"emoji_button.travel": "سفر و مکان", "emoji_button.travel": "سفر و مکان",
"empty_column.community": "فهرست نوشته‌های محلی خالی است. چیزی بنویسید تا چرخش بچرخد!", "empty_column.community": "فهرست نوشته‌های محلی خالی است. چیزی بنویسید تا چرخش بچرخد!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.direct": "شما هیچ پیغام مستقیمی ندارید. اگر چنین پیغامی بگیرید یا بفرستید این‌جا نمایش خواهد یافت.",
"empty_column.hashtag": "هنوز هیچ چیزی با این هشتگ نیست.", "empty_column.hashtag": "هنوز هیچ چیزی با این هشتگ نیست.",
"empty_column.home": "شما هنوز پیگیر کسی نیستید. {public} را ببینید یا چیزی را جستجو کنید تا کاربران دیگر را ببینید.", "empty_column.home": "شما هنوز پیگیر کسی نیستید. {public} را ببینید یا چیزی را جستجو کنید تا کاربران دیگر را ببینید.",
"empty_column.home.public_timeline": "فهرست نوشته‌های همه‌جا", "empty_column.home.public_timeline": "فهرست نوشته‌های همه‌جا",
@@ -112,14 +113,13 @@
"empty_column.public": "این‌جا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران دیگر را پی بگیرید تا این‌جا پر شود", "empty_column.public": "این‌جا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران دیگر را پی بگیرید تا این‌جا پر شود",
"follow_request.authorize": "اجازه دهید", "follow_request.authorize": "اجازه دهید",
"follow_request.reject": "اجازه ندهید", "follow_request.reject": "اجازه ندهید",
"getting_started.appsshort": "اپ‌ها",
"getting_started.faq": "پرسش‌های رایج",
"getting_started.documentation": "Documentation",
"getting_started.heading": "آغاز کنید", "getting_started.heading": "آغاز کنید",
"getting_started.open_source_notice": "ماستدون یک نرم‌افزار آزاد است. می‌توانید در ساخت آن مشارکت کنید یا مشکلاتش را در {github} گزارش دهید.", "getting_started.open_source_notice": "ماستدون یک نرم‌افزار آزاد است. می‌توانید در ساخت آن مشارکت کنید یا مشکلاتش را در {github} گزارش دهید.",
"getting_started.userguide": "راهنمای کاربری",
"getting_started.terms": "شرایط استفاده",
"home.column_settings.advanced": "پیشرفته", "home.column_settings.advanced": "پیشرفته",
"home.column_settings.basic": "اصلی", "home.column_settings.basic": "اصلی",
"home.column_settings.filter_regex": "با عبارت‌های باقاعده فیلتر کنید",
"home.column_settings.filter_regex": "با عبارت‌های باقاعده (regexp) فیلتر کنید",
"home.column_settings.show_reblogs": "نمایش بازبوق‌ها", "home.column_settings.show_reblogs": "نمایش بازبوق‌ها",
"home.column_settings.show_replies": "نمایش پاسخ‌ها", "home.column_settings.show_replies": "نمایش پاسخ‌ها",
"home.settings": "تنظیمات ستون", "home.settings": "تنظیمات ستون",
@@ -155,12 +155,13 @@
"loading_indicator.label": "بارگیری...", "loading_indicator.label": "بارگیری...",
"media_gallery.toggle_visible": "تغییر پیدایی", "media_gallery.toggle_visible": "تغییر پیدایی",
"missing_indicator.label": "پیدا نشد", "missing_indicator.label": "پیدا نشد",
"missing_indicator.sublabel": "This resource could not be found",
"missing_indicator.sublabel": "این منبع پیدا نشد",
"mute_modal.hide_notifications": "اعلان‌های این کاربر پنهان شود؟", "mute_modal.hide_notifications": "اعلان‌های این کاربر پنهان شود؟",
"navigation_bar.blocks": "کاربران مسدودشده", "navigation_bar.blocks": "کاربران مسدودشده",
"navigation_bar.community_timeline": "نوشته‌های محلی", "navigation_bar.community_timeline": "نوشته‌های محلی",
"navigation_bar.direct": "Direct messages",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.direct": "پیغام‌های خصوصی",
"navigation_bar.discover": "گشت و گذار",
"navigation_bar.domain_blocks": "دامین‌های پنهان‌شده",
"navigation_bar.edit_profile": "ویرایش نمایه", "navigation_bar.edit_profile": "ویرایش نمایه",
"navigation_bar.favourites": "پسندیده‌ها", "navigation_bar.favourites": "پسندیده‌ها",
"navigation_bar.follow_requests": "درخواست‌های پیگیری", "navigation_bar.follow_requests": "درخواست‌های پیگیری",
@@ -169,9 +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.pins": "نوشته‌های ثابت", "navigation_bar.pins": "نوشته‌های ثابت",
"navigation_bar.preferences": "ترجیحات", "navigation_bar.preferences": "ترجیحات",
"navigation_bar.public_timeline": "نوشته‌های همه‌جا", "navigation_bar.public_timeline": "نوشته‌های همه‌جا",
"navigation_bar.security": "امنیت",
"notification.favourite": "‫{name}‬ نوشتهٔ شما را پسندید", "notification.favourite": "‫{name}‬ نوشتهٔ شما را پسندید",
"notification.follow": "‫{name}‬ پیگیر شما شد", "notification.follow": "‫{name}‬ پیگیر شما شد",
"notification.mention": "‫{name}‬ از شما نام برد", "notification.mention": "‫{name}‬ از شما نام برد",
@@ -187,15 +190,15 @@
"notifications.column_settings.reblog": "بازبوق‌ها:", "notifications.column_settings.reblog": "بازبوق‌ها:",
"notifications.column_settings.show": "نمایش در ستون", "notifications.column_settings.show": "نمایش در ستون",
"notifications.column_settings.sound": "پخش صدا", "notifications.column_settings.sound": "پخش صدا",
"notifications.group": "{count} notifications",
"notifications.group": "{count} اعلان",
"onboarding.done": "پایان", "onboarding.done": "پایان",
"onboarding.next": "بعدی", "onboarding.next": "بعدی",
"onboarding.page_five.public_timelines": "نوشته‌های محلی یعنی نوشته‌های همهٔ کاربران {domain}. نوشته‌های همه‌جا یعنی نوشته‌های همهٔ کسانی که کاربران {domain} آن‌ها را پی می‌گیرند. این فهرست‌های عمومی راه خوبی برای یافتن کاربران تازه هستند.", "onboarding.page_five.public_timelines": "نوشته‌های محلی یعنی نوشته‌های همهٔ کاربران {domain}. نوشته‌های همه‌جا یعنی نوشته‌های همهٔ کسانی که کاربران {domain} آن‌ها را پی می‌گیرند. این فهرست‌های عمومی راه خوبی برای یافتن کاربران تازه هستند.",
"onboarding.page_four.home": "ستون «خانه» نوشته‌های کسانی را نشان می‌دهد که شما پی می‌گیرید.", "onboarding.page_four.home": "ستون «خانه» نوشته‌های کسانی را نشان می‌دهد که شما پی می‌گیرید.",
"onboarding.page_four.notifications": "ستون «اعلان‌ها» ارتباط‌های شما با دیگران را نشان می‌دهد.", "onboarding.page_four.notifications": "ستون «اعلان‌ها» ارتباط‌های شما با دیگران را نشان می‌دهد.",
"onboarding.page_one.federation": "ماستدون شبکه‌ای از سرورهای مستقل است که با پیوستن به یکدیگر یک شبکهٔ اجتماعی بزرگ را تشکیل می‌دهند.", "onboarding.page_one.federation": "ماستدون شبکه‌ای از سرورهای مستقل است که با پیوستن به یکدیگر یک شبکهٔ اجتماعی بزرگ را تشکیل می‌دهند.",
"onboarding.page_one.full_handle": "Your full handle",
"onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.",
"onboarding.page_one.full_handle": "شناسهٔ کاربری کامل شما",
"onboarding.page_one.handle_hint": "این چیزی است که باید به دوستان خود بگویید تا بتوانند شما را پیدا کنند.",
"onboarding.page_one.welcome": "به ماستدون خوش آمدید!", "onboarding.page_one.welcome": "به ماستدون خوش آمدید!",
"onboarding.page_six.admin": "نشانی مسئول سرور شما {admin} است.", "onboarding.page_six.admin": "نشانی مسئول سرور شما {admin} است.",
"onboarding.page_six.almost_done": "الان تقریباً آماده‌اید...", "onboarding.page_six.almost_done": "الان تقریباً آماده‌اید...",
@@ -218,51 +221,52 @@
"privacy.public.short": "عمومی", "privacy.public.short": "عمومی",
"privacy.unlisted.long": "عمومی، ولی فهرست نکن", "privacy.unlisted.long": "عمومی، ولی فهرست نکن",
"privacy.unlisted.short": "فهرست‌نشده", "privacy.unlisted.short": "فهرست‌نشده",
"regeneration_indicator.label": "Loading…",
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
"regeneration_indicator.label": "در حال باز شدن…",
"regeneration_indicator.sublabel": "این فهرست دارد آماده می‌شود!",
"relative_time.days": "{number}d", "relative_time.days": "{number}d",
"relative_time.hours": "{number}h", "relative_time.hours": "{number}h",
"relative_time.just_now": "الان", "relative_time.just_now": "الان",
"relative_time.minutes": "{number}m", "relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s", "relative_time.seconds": "{number}s",
"reply_indicator.cancel": "لغو", "reply_indicator.cancel": "لغو",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
"report.forward": "فرستادن به {target}",
"report.forward_hint": "این حساب در سرور دیگری ثبت شده. آیا می‌خواهید رونوشتی از این گزارش به طور ناشناس به آن‌جا هم فرستاده شود؟",
"report.hint": "این گزارش به مدیران سرور شما فرستاده خواهد شد. می‌توانید دلیل گزارش‌دادن این حساب را در این‌جا بنویسید:",
"report.placeholder": "توضیح اضافه", "report.placeholder": "توضیح اضافه",
"report.submit": "بفرست", "report.submit": "بفرست",
"report.target": "گزارش‌دادن", "report.target": "گزارش‌دادن",
"search.placeholder": "جستجو", "search.placeholder": "جستجو",
"search_popout.search_format": "راهنمای جستجوی پیشرفته", "search_popout.search_format": "راهنمای جستجوی پیشرفته",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.full_text": "جستجوی متنی ساده می‌تواند بوق‌هایی که شما نوشته‌اید، پسندیده‌اید، بازبوقیده‌اید، یا در آن‌ها از شما نام برده شده است را پیدا کند. همچنین نام‌های کاربری، نام نمایش‌یافته، و هشتگ‌ها را هم شامل می‌شود.",
"search_popout.tips.hashtag": "هشتگ", "search_popout.tips.hashtag": "هشتگ",
"search_popout.tips.status": "نوشته", "search_popout.tips.status": "نوشته",
"search_popout.tips.text": "جستجوی متنی ساده برای نام‌ها، نام‌های کاربری، و هشتگ‌ها", "search_popout.tips.text": "جستجوی متنی ساده برای نام‌ها، نام‌های کاربری، و هشتگ‌ها",
"search_popout.tips.user": "کاربر", "search_popout.tips.user": "کاربر",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots",
"search_results.accounts": "افراد",
"search_results.hashtags": "هشتگ‌ها",
"search_results.statuses": "بوق‌ها",
"search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}", "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}",
"standalone.public_title": "نگاهی به کاربران این سرور...", "standalone.public_title": "نگاهی به کاربران این سرور...",
"status.block": "Block @{name}",
"status.cancel_reblog_private": "Unboost",
"status.block": "مسدودسازی @{name}",
"status.cancel_reblog_private": "حذف بازبوق",
"status.cannot_reblog": "این نوشته را نمی‌شود بازبوقید", "status.cannot_reblog": "این نوشته را نمی‌شود بازبوقید",
"status.delete": "پاک‌کردن", "status.delete": "پاک‌کردن",
"status.direct": "Direct message @{name}",
"status.direct": "پیغام مستقیم به @{name}",
"status.embed": "جاگذاری", "status.embed": "جاگذاری",
"status.favourite": "پسندیدن", "status.favourite": "پسندیدن",
"status.load_more": "بیشتر نشان بده", "status.load_more": "بیشتر نشان بده",
"status.media_hidden": "تصویر پنهان شده", "status.media_hidden": "تصویر پنهان شده",
"status.mention": "نام‌بردن از @{name}", "status.mention": "نام‌بردن از @{name}",
"status.more": "بیشتر", "status.more": "بیشتر",
"status.mute": "Mute @{name}",
"status.mute": "بی‌صدا کردن @{name}",
"status.mute_conversation": "بی‌صداکردن گفتگو", "status.mute_conversation": "بی‌صداکردن گفتگو",
"status.open": "این نوشته را باز کن", "status.open": "این نوشته را باز کن",
"status.pin": "نوشتهٔ ثابت نمایه", "status.pin": "نوشتهٔ ثابت نمایه",
"status.pinned": "Pinned toot",
"status.pinned": "بوق ثابت",
"status.reblog": "بازبوقیدن", "status.reblog": "بازبوقیدن",
"status.reblog_private": "Boost to original audience",
"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}",
@@ -270,24 +274,25 @@
"status.sensitive_warning": "محتوای حساس", "status.sensitive_warning": "محتوای حساس",
"status.share": "هم‌رسانی", "status.share": "هم‌رسانی",
"status.show_less": "نهفتن", "status.show_less": "نهفتن",
"status.show_less_all": "Show less for all",
"status.show_less_all": "نمایش کمتر همه",
"status.show_more": "نمایش", "status.show_more": "نمایش",
"status.show_more_all": "Show more for all",
"status.show_more_all": "نمایش بیشتر همه",
"status.unmute_conversation": "باصداکردن گفتگو", "status.unmute_conversation": "باصداکردن گفتگو",
"status.unpin": "برداشتن نوشتهٔ ثابت نمایه", "status.unpin": "برداشتن نوشتهٔ ثابت نمایه",
"tabs_bar.federated_timeline": "همگانی", "tabs_bar.federated_timeline": "همگانی",
"tabs_bar.home": "خانه", "tabs_bar.home": "خانه",
"tabs_bar.local_timeline": "محلی", "tabs_bar.local_timeline": "محلی",
"tabs_bar.notifications": "اعلان‌ها", "tabs_bar.notifications": "اعلان‌ها",
"tabs_bar.search": "Search",
"timeline.media": "Media",
"timeline.posts": "Toots",
"tabs_bar.search": "جستجو",
"timeline.media": "عکس و ویدیو",
"timeline.posts": "بوق‌ها",
"trends.count_by_accounts": "{count} {rawCount, plural, one {نفر نوشته است} other {نفر نوشته‌اند}}",
"ui.beforeunload": "اگر از ماستدون خارج شوید پیش‌نویس شما پاک خواهد شد.", "ui.beforeunload": "اگر از ماستدون خارج شوید پیش‌نویس شما پاک خواهد شد.",
"upload_area.title": "برای بارگذاری به این‌جا بکشید", "upload_area.title": "برای بارگذاری به این‌جا بکشید",
"upload_button.label": "افزودن تصویر", "upload_button.label": "افزودن تصویر",
"upload_form.description": "نوشتهٔ توضیحی برای کم‌بینایان و نابینایان", "upload_form.description": "نوشتهٔ توضیحی برای کم‌بینایان و نابینایان",
"upload_form.focus": "Crop",
"upload_form.undo": "واگردانی",
"upload_form.focus": "بریدن لبه‌ها",
"upload_form.undo": "حذف",
"upload_progress.label": "بارگذاری...", "upload_progress.label": "بارگذاری...",
"video.close": "بستن ویدیو", "video.close": "بستن ویدیو",
"video.exit_fullscreen": "خروج از حالت تمام صفحه", "video.exit_fullscreen": "خروج از حالت تمام صفحه",


+ 15
- 10
app/javascript/mastodon/locales/fi.json View File

@@ -1,9 +1,9 @@
{ {
"account.badges.bot": "Bot",
"account.badges.bot": "Botti",
"account.block": "Estä @{name}", "account.block": "Estä @{name}",
"account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}", "account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}",
"account.blocked": "Estetty", "account.blocked": "Estetty",
"account.direct": "Direct message @{name}",
"account.direct": "Viesti käyttäjälle @{name}",
"account.disclaimer_full": "Alla olevat käyttäjän profiilitiedot saattavat olla epätäydellisiä.", "account.disclaimer_full": "Alla olevat käyttäjän profiilitiedot saattavat olla epätäydellisiä.",
"account.domain_blocked": "Verkko-osoite piilotettu", "account.domain_blocked": "Verkko-osoite piilotettu",
"account.edit_profile": "Muokkaa", "account.edit_profile": "Muokkaa",
@@ -41,7 +41,7 @@
"bundle_modal_error.retry": "Yritä uudestaan", "bundle_modal_error.retry": "Yritä uudestaan",
"column.blocks": "Estetyt käyttäjät", "column.blocks": "Estetyt käyttäjät",
"column.community": "Paikallinen aikajana", "column.community": "Paikallinen aikajana",
"column.direct": "Direct messages",
"column.direct": "Viestit",
"column.domain_blocks": "Piilotetut verkkotunnukset", "column.domain_blocks": "Piilotetut verkkotunnukset",
"column.favourites": "Suosikit", "column.favourites": "Suosikit",
"column.follow_requests": "Seuraamispyynnöt", "column.follow_requests": "Seuraamispyynnöt",
@@ -58,10 +58,9 @@
"column_header.pin": "Kiinnitä", "column_header.pin": "Kiinnitä",
"column_header.show_settings": "Näytä asetukset", "column_header.show_settings": "Näytä asetukset",
"column_header.unpin": "Poista kiinnitys", "column_header.unpin": "Poista kiinnitys",
"column_subheading.navigation": "Navigaatio",
"column_subheading.settings": "Asetukset", "column_subheading.settings": "Asetukset",
"compose_form.direct_message_warning": "Tämä tuuttaus näkyy vain mainituille käyttäjille.", "compose_form.direct_message_warning": "Tämä tuuttaus näkyy vain mainituille käyttäjille.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.direct_message_warning_learn_more": "Lisätietoja",
"compose_form.hashtag_warning": "Tämä tuuttaus ei näy hashtag-hauissa, koska se on listaamaton. Hashtagien avulla voi hakea vain julkisia tuuttauksia.", "compose_form.hashtag_warning": "Tämä tuuttaus ei näy hashtag-hauissa, koska se on listaamaton. Hashtagien avulla voi hakea vain julkisia tuuttauksia.",
"compose_form.lock_disclaimer": "Tilisi ei ole {locked}. Kuka tahansa voi seurata tiliäsi ja nähdä vain seuraajille rajaamasi julkaisut.", "compose_form.lock_disclaimer": "Tilisi ei ole {locked}. Kuka tahansa voi seurata tiliäsi ja nähdä vain seuraajille rajaamasi julkaisut.",
"compose_form.lock_disclaimer.lock": "lukittu", "compose_form.lock_disclaimer.lock": "lukittu",
@@ -84,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.",
@@ -103,7 +104,7 @@
"emoji_button.symbols": "Symbolit", "emoji_button.symbols": "Symbolit",
"emoji_button.travel": "Matkailu", "emoji_button.travel": "Matkailu",
"empty_column.community": "Paikallinen aikajana on tyhjä. Homma lähtee käyntiin, kun kirjoitat jotain julkista!", "empty_column.community": "Paikallinen aikajana on tyhjä. Homma lähtee käyntiin, kun kirjoitat jotain julkista!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.direct": "Sinulla ei ole vielä yhtään viestiä yksittäiselle käyttäjälle. Kun lähetät tai vastaanotat sellaisen, se näkyy täällä.",
"empty_column.hashtag": "Tällä hashtagilla ei ole vielä mitään.", "empty_column.hashtag": "Tällä hashtagilla ei ole vielä mitään.",
"empty_column.home": "Kotiaikajanasi on tyhjä! {public} ja hakutoiminto auttavat alkuun ja kohtaamaan muita käyttäjiä.", "empty_column.home": "Kotiaikajanasi on tyhjä! {public} ja hakutoiminto auttavat alkuun ja kohtaamaan muita käyttäjiä.",
"empty_column.home.public_timeline": "yleinen aikajana", "empty_column.home.public_timeline": "yleinen aikajana",
@@ -112,11 +113,10 @@
"empty_column.public": "Täällä ei ole mitään! Saat sisältöä, kun kirjoitat jotain julkisesti tai käyt manuaalisesti seuraamassa muiden instanssien käyttäjiä", "empty_column.public": "Täällä ei ole mitään! Saat sisältöä, kun kirjoitat jotain julkisesti tai käyt manuaalisesti seuraamassa muiden instanssien käyttäjiä",
"follow_request.authorize": "Valtuuta", "follow_request.authorize": "Valtuuta",
"follow_request.reject": "Hylkää", "follow_request.reject": "Hylkää",
"getting_started.appsshort": "Sovellukset",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Aloitus", "getting_started.heading": "Aloitus",
"getting_started.open_source_notice": "Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHubissa: {github}.", "getting_started.open_source_notice": "Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHubissa: {github}.",
"getting_started.userguide": "Käyttöopas",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Lisäasetukset", "home.column_settings.advanced": "Lisäasetukset",
"home.column_settings.basic": "Perusasetukset", "home.column_settings.basic": "Perusasetukset",
"home.column_settings.filter_regex": "Suodata säännöllisillä lausekkeilla", "home.column_settings.filter_regex": "Suodata säännöllisillä lausekkeilla",
@@ -159,7 +159,8 @@
"mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?", "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?",
"navigation_bar.blocks": "Estetyt käyttäjät", "navigation_bar.blocks": "Estetyt käyttäjät",
"navigation_bar.community_timeline": "Paikallinen aikajana", "navigation_bar.community_timeline": "Paikallinen aikajana",
"navigation_bar.direct": "Direct messages",
"navigation_bar.direct": "Viestit",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Piilotetut verkkotunnukset", "navigation_bar.domain_blocks": "Piilotetut verkkotunnukset",
"navigation_bar.edit_profile": "Muokkaa profiilia", "navigation_bar.edit_profile": "Muokkaa profiilia",
"navigation_bar.favourites": "Suosikit", "navigation_bar.favourites": "Suosikit",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listat", "navigation_bar.lists": "Listat",
"navigation_bar.logout": "Kirjaudu ulos", "navigation_bar.logout": "Kirjaudu ulos",
"navigation_bar.mutes": "Mykistetyt käyttäjät", "navigation_bar.mutes": "Mykistetyt käyttäjät",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Kiinnitetyt tuuttaukset", "navigation_bar.pins": "Kiinnitetyt tuuttaukset",
"navigation_bar.preferences": "Asetukset", "navigation_bar.preferences": "Asetukset",
"navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.public_timeline": "Yleinen aikajana",
"navigation_bar.security": "Security",
"notification.favourite": "{name} tykkäsi tilastasi", "notification.favourite": "{name} tykkäsi tilastasi",
"notification.follow": "{name} seurasi sinua", "notification.follow": "{name} seurasi sinua",
"notification.mention": "{name} mainitsi sinut", "notification.mention": "{name} mainitsi sinut",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Hae", "tabs_bar.search": "Hae",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 13
- 8
app/javascript/mastodon/locales/fr.json View File

@@ -3,7 +3,7 @@
"account.block": "Bloquer @{name}", "account.block": "Bloquer @{name}",
"account.block_domain": "Tout masquer venant de {domain}", "account.block_domain": "Tout masquer venant de {domain}",
"account.blocked": "Bloqué", "account.blocked": "Bloqué",
"account.direct": "Message direct @{name}",
"account.direct": "Message direct à @{name}",
"account.disclaimer_full": "Les données ci-dessous peuvent ne pas refléter ce profil dans sa totalité.", "account.disclaimer_full": "Les données ci-dessous peuvent ne pas refléter ce profil dans sa totalité.",
"account.domain_blocked": "Domaine caché", "account.domain_blocked": "Domaine caché",
"account.edit_profile": "Modifier le profil", "account.edit_profile": "Modifier le profil",
@@ -58,10 +58,9 @@
"column_header.pin": "Épingler", "column_header.pin": "Épingler",
"column_header.show_settings": "Afficher les paramètres", "column_header.show_settings": "Afficher les paramètres",
"column_header.unpin": "Retirer", "column_header.unpin": "Retirer",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Paramètres", "column_subheading.settings": "Paramètres",
"compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé qu'aux personnes mentionnées. Cependant, l'administration de votre instance et des instances réceptrices pourront inspecter ce message.", "compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé qu'aux personnes mentionnées. Cependant, l'administration de votre instance et des instances réceptrices pourront inspecter ce message.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.direct_message_warning_learn_more": "En savoir plus",
"compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur \"non-listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par hashtag.", "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur \"non-listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par hashtag.",
"compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.", "compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.",
"compose_form.lock_disclaimer.lock": "verrouillé", "compose_form.lock_disclaimer.lock": "verrouillé",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres instances pour remplir le fil public", "empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres instances pour remplir le fil public",
"follow_request.authorize": "Accepter", "follow_request.authorize": "Accepter",
"follow_request.reject": "Rejeter", "follow_request.reject": "Rejeter",
"getting_started.appsshort": "Applications",
"getting_started.faq": "FAQ",
"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.userguide": "Guide d’utilisation",
"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",
@@ -160,6 +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": "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",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listes", "navigation_bar.lists": "Listes",
"navigation_bar.logout": "Déconnexion", "navigation_bar.logout": "Déconnexion",
"navigation_bar.mutes": "Comptes masqués", "navigation_bar.mutes": "Comptes masqués",
"navigation_bar.personal": "Personal",
"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": "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 :",
@@ -248,7 +251,7 @@
"status.cancel_reblog_private": "Dé-booster", "status.cancel_reblog_private": "Dé-booster",
"status.cannot_reblog": "Cette publication ne peut être boostée", "status.cannot_reblog": "Cette publication ne peut être boostée",
"status.delete": "Effacer", "status.delete": "Effacer",
"status.direct": "Message direct @{name}",
"status.direct": "Message direct à @{name}",
"status.embed": "Intégrer", "status.embed": "Intégrer",
"status.favourite": "Ajouter aux favoris", "status.favourite": "Ajouter aux favoris",
"status.load_more": "Charger plus", "status.load_more": "Charger plus",
@@ -263,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}",
@@ -281,7 +285,8 @@
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.search": "Chercher", "tabs_bar.search": "Chercher",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots",
"timeline.posts": "Pouets",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 10
- 5
app/javascript/mastodon/locales/gl.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Fixar", "column_header.pin": "Fixar",
"column_header.show_settings": "Mostras axustes", "column_header.show_settings": "Mostras axustes",
"column_header.unpin": "Soltar", "column_header.unpin": "Soltar",
"column_subheading.navigation": "Navegación",
"column_subheading.settings": "Axustes", "column_subheading.settings": "Axustes",
"compose_form.direct_message_warning": "Este toot enviarase só as usuarias mencionadas. Porén, a súa proveedora de internet e calquera das instancias receptoras poderían examinar esta mensaxe.", "compose_form.direct_message_warning": "Este toot enviarase só as usuarias mencionadas. Porén, a súa proveedora de internet e calquera das instancias receptoras poderían examinar esta mensaxe.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Nada por aquí! Escriba algo de xeito público, ou siga manualmente usuarias de outras instancias para ir enchéndoa", "empty_column.public": "Nada por aquí! Escriba algo de xeito público, ou siga manualmente usuarias de outras instancias para ir enchéndoa",
"follow_request.authorize": "Autorizar", "follow_request.authorize": "Autorizar",
"follow_request.reject": "Rexeitar", "follow_request.reject": "Rexeitar",
"getting_started.appsshort": "Aplicacións",
"getting_started.faq": "PMF",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Comezando", "getting_started.heading": "Comezando",
"getting_started.open_source_notice": "Mastodon é software de código aberto. Pode contribuír ou informar de fallos en GitHub en {github}.", "getting_started.open_source_notice": "Mastodon é software de código aberto. Pode contribuír ou informar de fallos en GitHub en {github}.",
"getting_started.userguide": "Guía de usuaria",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Avanzado", "home.column_settings.advanced": "Avanzado",
"home.column_settings.basic": "Básico", "home.column_settings.basic": "Básico",
"home.column_settings.filter_regex": "Filtrar expresións regulares", "home.column_settings.filter_regex": "Filtrar expresións regulares",
@@ -160,18 +160,21 @@
"navigation_bar.blocks": "Usuarias bloqueadas", "navigation_bar.blocks": "Usuarias bloqueadas",
"navigation_bar.community_timeline": "Liña temporal local", "navigation_bar.community_timeline": "Liña temporal local",
"navigation_bar.direct": "Mensaxes directas", "navigation_bar.direct": "Mensaxes directas",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Dominios agochados", "navigation_bar.domain_blocks": "Dominios agochados",
"navigation_bar.edit_profile": "Editar perfil", "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.favourites": "Favoritas", "navigation_bar.favourites": "Favoritas",
"navigation_bar.follow_requests": "Peticións de seguimento", "navigation_bar.follow_requests": "Peticións de seguimento",
"navigation_bar.info": "Sobre esta instancia", "navigation_bar.info": "Sobre esta instancia",
"navigation_bar.keyboard_shortcuts": "Atallos do teclado",
"navigation_bar.keyboard_shortcuts": "Atallos",
"navigation_bar.lists": "Listas", "navigation_bar.lists": "Listas",
"navigation_bar.logout": "Sair", "navigation_bar.logout": "Sair",
"navigation_bar.mutes": "Usuarias acaladas", "navigation_bar.mutes": "Usuarias acaladas",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Mensaxes fixadas", "navigation_bar.pins": "Mensaxes fixadas",
"navigation_bar.preferences": "Preferencias", "navigation_bar.preferences": "Preferencias",
"navigation_bar.public_timeline": "Liña temporal federada", "navigation_bar.public_timeline": "Liña temporal federada",
"navigation_bar.security": "Security",
"notification.favourite": "{name} marcou como favorito o seu estado", "notification.favourite": "{name} marcou como favorito o seu estado",
"notification.follow": "{name} está a seguila", "notification.follow": "{name} está a seguila",
"notification.mention": "{name} mencionoute", "notification.mention": "{name} mencionoute",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/he.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "קיבוע", "column_header.pin": "קיבוע",
"column_header.show_settings": "הצגת העדפות", "column_header.show_settings": "הצגת העדפות",
"column_header.unpin": "שחרור קיבוע", "column_header.unpin": "שחרור קיבוע",
"column_subheading.navigation": "ניווט",
"column_subheading.settings": "אפשרויות", "column_subheading.settings": "אפשרויות",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.",
@@ -112,11 +113,10 @@
"empty_column.public": "אין פה כלום! כדי למלא את הטור הזה אפשר לכתוב משהו, או להתחיל לעקוב אחרי אנשים מקהילות אחרות", "empty_column.public": "אין פה כלום! כדי למלא את הטור הזה אפשר לכתוב משהו, או להתחיל לעקוב אחרי אנשים מקהילות אחרות",
"follow_request.authorize": "קבלה", "follow_request.authorize": "קבלה",
"follow_request.reject": "דחיה", "follow_request.reject": "דחיה",
"getting_started.appsshort": "יישומונים לניידים",
"getting_started.faq": "שאלות ותשובות",
"getting_started.documentation": "Documentation",
"getting_started.heading": "בואו נתחיל", "getting_started.heading": "בואו נתחיל",
"getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}.", "getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}.",
"getting_started.userguide": "מדריך למשתמשים",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "למתקדמים", "home.column_settings.advanced": "למתקדמים",
"home.column_settings.basic": "למתחילים", "home.column_settings.basic": "למתחילים",
"home.column_settings.filter_regex": "סינון באמצעות ביטויים רגולריים (regular expressions)", "home.column_settings.filter_regex": "סינון באמצעות ביטויים רגולריים (regular expressions)",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "חסימות", "navigation_bar.blocks": "חסימות",
"navigation_bar.community_timeline": "ציר זמן מקומי", "navigation_bar.community_timeline": "ציר זמן מקומי",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "עריכת פרופיל", "navigation_bar.edit_profile": "עריכת פרופיל",
"navigation_bar.favourites": "חיבובים", "navigation_bar.favourites": "חיבובים",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "יציאה", "navigation_bar.logout": "יציאה",
"navigation_bar.mutes": "השתקות", "navigation_bar.mutes": "השתקות",
"navigation_bar.personal": "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",
"notification.favourite": "חצרוצך חובב על ידי {name}", "notification.favourite": "חצרוצך חובב על ידי {name}",
"notification.follow": "{name} במעקב אחרייך", "notification.follow": "{name} במעקב אחרייך",
"notification.mention": "אוזכרת על ידי {name}", "notification.mention": "אוזכרת על ידי {name}",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.", "ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.",
"upload_area.title": "ניתן להעלות על ידי Drag & drop", "upload_area.title": "ניתן להעלות על ידי Drag & drop",
"upload_button.label": "הוספת מדיה", "upload_button.label": "הוספת מדיה",


+ 9
- 4
app/javascript/mastodon/locales/hr.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Pin", "column_header.pin": "Pin",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin", "column_header.unpin": "Unpin",
"column_subheading.navigation": "Navigacija",
"column_subheading.settings": "Postavke", "column_subheading.settings": "Postavke",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Ovdje nema ništa! Napiši nešto javno, ili ručno slijedi korisnike sa drugih instanci kako bi popunio", "empty_column.public": "Ovdje nema ništa! Napiši nešto javno, ili ručno slijedi korisnike sa drugih instanci kako bi popunio",
"follow_request.authorize": "Autoriziraj", "follow_request.authorize": "Autoriziraj",
"follow_request.reject": "Odbij", "follow_request.reject": "Odbij",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Počnimo", "getting_started.heading": "Počnimo",
"getting_started.open_source_notice": "Mastodon je softver otvorenog koda. Možeš pridonijeti ili prijaviti probleme na GitHubu {github}.", "getting_started.open_source_notice": "Mastodon je softver otvorenog koda. Možeš pridonijeti ili prijaviti probleme na GitHubu {github}.",
"getting_started.userguide": "Upute za korištenje",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Napredno", "home.column_settings.advanced": "Napredno",
"home.column_settings.basic": "Osnovno", "home.column_settings.basic": "Osnovno",
"home.column_settings.filter_regex": "Filtriraj s regularnim izrazima", "home.column_settings.filter_regex": "Filtriraj s regularnim izrazima",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.blocks": "Blokirani korisnici",
"navigation_bar.community_timeline": "Lokalni timeline", "navigation_bar.community_timeline": "Lokalni timeline",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Uredi profil", "navigation_bar.edit_profile": "Uredi profil",
"navigation_bar.favourites": "Favoriti", "navigation_bar.favourites": "Favoriti",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Odjavi se", "navigation_bar.logout": "Odjavi se",
"navigation_bar.mutes": "Utišani korisnici", "navigation_bar.mutes": "Utišani korisnici",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Postavke", "navigation_bar.preferences": "Postavke",
"navigation_bar.public_timeline": "Federalni timeline", "navigation_bar.public_timeline": "Federalni timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} je lajkao tvoj status", "notification.favourite": "{name} je lajkao tvoj status",
"notification.follow": "{name} te sada slijedi", "notification.follow": "{name} te sada slijedi",
"notification.mention": "{name} te je spomenuo", "notification.mention": "{name} te je spomenuo",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/hu.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Kitűz", "column_header.pin": "Kitűz",
"column_header.show_settings": "Beállítások mutatása", "column_header.show_settings": "Beállítások mutatása",
"column_header.unpin": "Kitűzés eltávolítása", "column_header.unpin": "Kitűzés eltávolítása",
"column_subheading.navigation": "Navigáció",
"column_subheading.settings": "Beállítások", "column_subheading.settings": "Beállítások",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Jelenleg semmi nincs itt! Írj valamit publikusan vagy kövess más szervereken levő felhasználókat, hogy megtöltsd", "empty_column.public": "Jelenleg semmi nincs itt! Írj valamit publikusan vagy kövess más szervereken levő felhasználókat, hogy megtöltsd",
"follow_request.authorize": "Engedélyez", "follow_request.authorize": "Engedélyez",
"follow_request.reject": "Visszautasít", "follow_request.reject": "Visszautasít",
"getting_started.appsshort": "Applikációk",
"getting_started.faq": "GYIK",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Első lépések", "getting_started.heading": "Első lépések",
"getting_started.open_source_notice": "Mastodon egy nyílt forráskódú szoftver. Hozzájárulás vagy problémák jelentése a GitHub-on {github}.", "getting_started.open_source_notice": "Mastodon egy nyílt forráskódú szoftver. Hozzájárulás vagy problémák jelentése a GitHub-on {github}.",
"getting_started.userguide": "Használati Útmutató",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Fejlett", "home.column_settings.advanced": "Fejlett",
"home.column_settings.basic": "Alap", "home.column_settings.basic": "Alap",
"home.column_settings.filter_regex": "Szűrje ki reguláris kifejezésekkel", "home.column_settings.filter_regex": "Szűrje ki reguláris kifejezésekkel",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Tiltott felhasználók", "navigation_bar.blocks": "Tiltott felhasználók",
"navigation_bar.community_timeline": "Helyi idővonal", "navigation_bar.community_timeline": "Helyi idővonal",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Profil szerkesztése", "navigation_bar.edit_profile": "Profil szerkesztése",
"navigation_bar.favourites": "Kedvencek", "navigation_bar.favourites": "Kedvencek",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listák", "navigation_bar.lists": "Listák",
"navigation_bar.logout": "Kijelentkezés", "navigation_bar.logout": "Kijelentkezés",
"navigation_bar.mutes": "Némított felhasználók", "navigation_bar.mutes": "Némított felhasználók",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Kitűzött tülkök", "navigation_bar.pins": "Kitűzött tülkök",
"navigation_bar.preferences": "Beállítások", "navigation_bar.preferences": "Beállítások",
"navigation_bar.public_timeline": "Nyilvános időfolyam", "navigation_bar.public_timeline": "Nyilvános időfolyam",
"navigation_bar.security": "Security",
"notification.favourite": "{name} kedvencnek jelölte az állapotod", "notification.favourite": "{name} kedvencnek jelölte az állapotod",
"notification.follow": "{name} követ téged", "notification.follow": "{name} követ téged",
"notification.mention": "{name} megemlített", "notification.mention": "{name} megemlített",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/hy.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Ամրացնել", "column_header.pin": "Ամրացնել",
"column_header.show_settings": "Ցուցադրել կարգավորումները", "column_header.show_settings": "Ցուցադրել կարգավորումները",
"column_header.unpin": "Հանել", "column_header.unpin": "Հանել",
"column_subheading.navigation": "Նավարկություն",
"column_subheading.settings": "Կարգավորումներ", "column_subheading.settings": "Կարգավորումներ",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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": "Այս թութը քո կայքում ներդնելու համար կարող ես պատճենել ներքոհիշյալ կոդը։",
@@ -112,11 +113,10 @@
"empty_column.public": "Այստեղ բան չկա՛։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգույցներից էակների՝ այն լցնելու համար։", "empty_column.public": "Այստեղ բան չկա՛։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգույցներից էակների՝ այն լցնելու համար։",
"follow_request.authorize": "Վավերացնել", "follow_request.authorize": "Վավերացնել",
"follow_request.reject": "Մերժել", "follow_request.reject": "Մերժել",
"getting_started.appsshort": "Հավելվածներ",
"getting_started.faq": "ՀՏՀ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Ինչպես սկսել", "getting_started.heading": "Ինչպես սկսել",
"getting_started.open_source_notice": "Մաստոդոնը բաց ելատեքստով ծրագրակազմ է։ Կարող ես ներդրում անել կամ վրեպներ զեկուցել ԳիթՀաբում՝ {github}։", "getting_started.open_source_notice": "Մաստոդոնը բաց ելատեքստով ծրագրակազմ է։ Կարող ես ներդրում անել կամ վրեպներ զեկուցել ԳիթՀաբում՝ {github}։",
"getting_started.userguide": "Ձեռնարկ",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Առաջադեմ", "home.column_settings.advanced": "Առաջադեմ",
"home.column_settings.basic": "Հիմնական", "home.column_settings.basic": "Հիմնական",
"home.column_settings.filter_regex": "Զտել օրինաչափ արտահայտությամբ", "home.column_settings.filter_regex": "Զտել օրինաչափ արտահայտությամբ",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Արգելափակված օգտատերեր", "navigation_bar.blocks": "Արգելափակված օգտատերեր",
"navigation_bar.community_timeline": "Տեղական հոսք", "navigation_bar.community_timeline": "Տեղական հոսք",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Խմբագրել անձնական էջը", "navigation_bar.edit_profile": "Խմբագրել անձնական էջը",
"navigation_bar.favourites": "Հավանածներ", "navigation_bar.favourites": "Հավանածներ",
@@ -169,9 +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.pins": "Ամրացված թթեր", "navigation_bar.pins": "Ամրացված թթեր",
"navigation_bar.preferences": "Նախապատվություններ", "navigation_bar.preferences": "Նախապատվություններ",
"navigation_bar.public_timeline": "Դաշնային հոսք", "navigation_bar.public_timeline": "Դաշնային հոսք",
"navigation_bar.security": "Security",
"notification.favourite": "{name} հավանեց թութդ", "notification.favourite": "{name} հավանեց թութդ",
"notification.follow": "{name} սկսեց հետեւել քեզ", "notification.follow": "{name} սկսեց հետեւել քեզ",
"notification.mention": "{name} նշեց քեզ", "notification.mention": "{name} նշեց քեզ",
@@ -263,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}֊ից",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"ui.beforeunload": "Քո սեւագիրը կկորի, եթե լքես Մաստոդոնը։", "ui.beforeunload": "Քո սեւագիրը կկորի, եթե լքես Մաստոդոնը։",
"upload_area.title": "Քաշիր ու նետիր՝ վերբեռնելու համար", "upload_area.title": "Քաշիր ու նետիր՝ վերբեռնելու համար",
"upload_button.label": "Ավելացնել մեդիա", "upload_button.label": "Ավելացնել մեդիա",


+ 9
- 4
app/javascript/mastodon/locales/id.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Sematkan", "column_header.pin": "Sematkan",
"column_header.show_settings": "Tampilkan pengaturan", "column_header.show_settings": "Tampilkan pengaturan",
"column_header.unpin": "Lepaskan", "column_header.unpin": "Lepaskan",
"column_subheading.navigation": "Navigasi",
"column_subheading.settings": "Pengaturan", "column_subheading.settings": "Pengaturan",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Tidak ada apapun disini! Tulis sesuatu, atau ikuti pengguna lain dari server lain untuk mengisi ini", "empty_column.public": "Tidak ada apapun disini! Tulis sesuatu, atau ikuti pengguna lain dari server lain untuk mengisi ini",
"follow_request.authorize": "Izinkan", "follow_request.authorize": "Izinkan",
"follow_request.reject": "Tolak", "follow_request.reject": "Tolak",
"getting_started.appsshort": "Aplikasi",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Mulai", "getting_started.heading": "Mulai",
"getting_started.open_source_notice": "Mastodon adalah perangkat lunak yang bersifat terbuka. Anda dapat berkontribusi atau melaporkan permasalahan/bug di Github {github}.", "getting_started.open_source_notice": "Mastodon adalah perangkat lunak yang bersifat terbuka. Anda dapat berkontribusi atau melaporkan permasalahan/bug di Github {github}.",
"getting_started.userguide": "Panduan Pengguna",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Tingkat Lanjut", "home.column_settings.advanced": "Tingkat Lanjut",
"home.column_settings.basic": "Dasar", "home.column_settings.basic": "Dasar",
"home.column_settings.filter_regex": "Saring dengan regular expressions", "home.column_settings.filter_regex": "Saring dengan regular expressions",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Pengguna diblokir", "navigation_bar.blocks": "Pengguna diblokir",
"navigation_bar.community_timeline": "Linimasa lokal", "navigation_bar.community_timeline": "Linimasa lokal",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Ubah profil", "navigation_bar.edit_profile": "Ubah profil",
"navigation_bar.favourites": "Favorit", "navigation_bar.favourites": "Favorit",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Keluar", "navigation_bar.logout": "Keluar",
"navigation_bar.mutes": "Pengguna dibisukan", "navigation_bar.mutes": "Pengguna dibisukan",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Pengaturan", "navigation_bar.preferences": "Pengaturan",
"navigation_bar.public_timeline": "Linimasa gabungan", "navigation_bar.public_timeline": "Linimasa gabungan",
"navigation_bar.security": "Security",
"notification.favourite": "{name} menyukai status anda", "notification.favourite": "{name} menyukai status anda",
"notification.follow": "{name} mengikuti anda", "notification.follow": "{name} mengikuti anda",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/io.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Pin", "column_header.pin": "Pin",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin", "column_header.unpin": "Unpin",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Settings", "column_subheading.settings": "Settings",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Esas nulo hike! Skribez ulo publike, o manuale sequez uzeri de altra instaluri por plenigar ol.", "empty_column.public": "Esas nulo hike! Skribez ulo publike, o manuale sequez uzeri de altra instaluri por plenigar ol.",
"follow_request.authorize": "Yurizar", "follow_request.authorize": "Yurizar",
"follow_request.reject": "Refuzar", "follow_request.reject": "Refuzar",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Debuto", "getting_started.heading": "Debuto",
"getting_started.open_source_notice": "Mastodon esas programaro kun apertita kodexo. Tu povas kontributar o signalar problemi en GitHub ye {github}.", "getting_started.open_source_notice": "Mastodon esas programaro kun apertita kodexo. Tu povas kontributar o signalar problemi en GitHub ye {github}.",
"getting_started.userguide": "User Guide",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Komplexa", "home.column_settings.advanced": "Komplexa",
"home.column_settings.basic": "Simpla", "home.column_settings.basic": "Simpla",
"home.column_settings.filter_regex": "Ekfiltrar per reguloza expresuri", "home.column_settings.filter_regex": "Ekfiltrar per reguloza expresuri",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blokusita uzeri", "navigation_bar.blocks": "Blokusita uzeri",
"navigation_bar.community_timeline": "Lokala tempolineo", "navigation_bar.community_timeline": "Lokala tempolineo",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Modifikar profilo", "navigation_bar.edit_profile": "Modifikar profilo",
"navigation_bar.favourites": "Favorati", "navigation_bar.favourites": "Favorati",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Ekirar", "navigation_bar.logout": "Ekirar",
"navigation_bar.mutes": "Celita uzeri", "navigation_bar.mutes": "Celita uzeri",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferi", "navigation_bar.preferences": "Preferi",
"navigation_bar.public_timeline": "Federata tempolineo", "navigation_bar.public_timeline": "Federata tempolineo",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favorizis tua mesajo", "notification.favourite": "{name} favorizis tua mesajo",
"notification.follow": "{name} sequeskis tu", "notification.follow": "{name} sequeskis tu",
"notification.mention": "{name} mencionis tu", "notification.mention": "{name} mencionis tu",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 28
- 23
app/javascript/mastodon/locales/it.json View File

@@ -19,7 +19,7 @@
"account.mute_notifications": "Silenzia notifiche da @{name}", "account.mute_notifications": "Silenzia notifiche da @{name}",
"account.muted": "Silenziato", "account.muted": "Silenziato",
"account.posts": "Toot", "account.posts": "Toot",
"account.posts_with_replies": "Toot con risposte",
"account.posts_with_replies": "Toot e risposte",
"account.report": "Segnala @{name}", "account.report": "Segnala @{name}",
"account.requested": "In attesa di approvazione", "account.requested": "In attesa di approvazione",
"account.share": "Condividi il profilo di @{name}", "account.share": "Condividi il profilo di @{name}",
@@ -33,7 +33,7 @@
"alert.unexpected.message": "Si è verificato un errore inatteso.", "alert.unexpected.message": "Si è verificato un errore inatteso.",
"alert.unexpected.title": "Oops!", "alert.unexpected.title": "Oops!",
"boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta",
"bundle_column_error.body": "C'è stato un errore mentre questo componente veniva caricato.",
"bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.",
"bundle_column_error.retry": "Riprova", "bundle_column_error.retry": "Riprova",
"bundle_column_error.title": "Network error", "bundle_column_error.title": "Network error",
"bundle_modal_error.close": "Chiudi", "bundle_modal_error.close": "Chiudi",
@@ -58,10 +58,9 @@
"column_header.pin": "Fissa in cima", "column_header.pin": "Fissa in cima",
"column_header.show_settings": "Mostra impostazioni", "column_header.show_settings": "Mostra impostazioni",
"column_header.unpin": "Non fissare in cima", "column_header.unpin": "Non fissare in cima",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Impostazioni", "column_subheading.settings": "Impostazioni",
"compose_form.direct_message_warning": "Questo toot sarà visibile solo a tutti gli utenti citati.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.direct_message_warning": "Questo toot sarà mandato solo a tutti gli utenti menzionati.",
"compose_form.direct_message_warning_learn_more": "Per saperne di piu'",
"compose_form.hashtag_warning": "Questo toot non è listato, quindi non sarà trovato nelle ricerche per hashtag. Solo i toot pubblici possono essere cercati per hashtag.", "compose_form.hashtag_warning": "Questo toot non è listato, quindi non sarà trovato nelle ricerche per hashtag. Solo i toot pubblici possono essere cercati per hashtag.",
"compose_form.lock_disclaimer": "Il tuo account non è {bloccato}. Chiunque può decidere di seguirti per vedere i tuoi post per soli seguaci.", "compose_form.lock_disclaimer": "Il tuo account non è {bloccato}. Chiunque può decidere di seguirti per vedere i tuoi post per soli seguaci.",
"compose_form.lock_disclaimer.lock": "bloccato", "compose_form.lock_disclaimer.lock": "bloccato",
@@ -84,7 +83,9 @@
"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.unfollow.confirm": "Non seguire più",
"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.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.",
"embed.preview": "Ecco come apparirà:", "embed.preview": "Ecco come apparirà:",
@@ -94,7 +95,7 @@
"emoji_button.food": "Cibo e bevande", "emoji_button.food": "Cibo e bevande",
"emoji_button.label": "Inserisci emoji", "emoji_button.label": "Inserisci emoji",
"emoji_button.nature": "Natura", "emoji_button.nature": "Natura",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.not_found": "Nessun emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Oggetti", "emoji_button.objects": "Oggetti",
"emoji_button.people": "Persone", "emoji_button.people": "Persone",
"emoji_button.recent": "Usati di frequente", "emoji_button.recent": "Usati di frequente",
@@ -112,11 +113,10 @@
"empty_column.public": "Qui non c'è nulla! Scrivi qualcosa pubblicamente, o aggiungi utenti da altri server per riempire questo spazio", "empty_column.public": "Qui non c'è nulla! Scrivi qualcosa pubblicamente, o aggiungi utenti da altri server per riempire questo spazio",
"follow_request.authorize": "Autorizza", "follow_request.authorize": "Autorizza",
"follow_request.reject": "Rifiuta", "follow_request.reject": "Rifiuta",
"getting_started.appsshort": "App",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Come iniziare", "getting_started.heading": "Come iniziare",
"getting_started.open_source_notice": "Mastodon è un software open source. Puoi contribuire o segnalare errori su GitHub all'indirizzo {github}.", "getting_started.open_source_notice": "Mastodon è un software open source. Puoi contribuire o segnalare errori su GitHub all'indirizzo {github}.",
"getting_started.userguide": "Manuale utente",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Avanzato", "home.column_settings.advanced": "Avanzato",
"home.column_settings.basic": "Semplice", "home.column_settings.basic": "Semplice",
"home.column_settings.filter_regex": "Filtra con espressioni regolari", "home.column_settings.filter_regex": "Filtra con espressioni regolari",
@@ -127,12 +127,12 @@
"keyboard_shortcuts.boost": "per condividere", "keyboard_shortcuts.boost": "per condividere",
"keyboard_shortcuts.column": "per portare il focus su uno status in una delle colonne", "keyboard_shortcuts.column": "per portare il focus su uno status in una delle colonne",
"keyboard_shortcuts.compose": "per portare il focus nell'area di composizione", "keyboard_shortcuts.compose": "per portare il focus nell'area di composizione",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.description": "Descrizione",
"keyboard_shortcuts.down": "per spostarsi in basso nella lista", "keyboard_shortcuts.down": "per spostarsi in basso nella lista",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.enter": "per aprire lo status",
"keyboard_shortcuts.favourite": "per segnare come apprezzato", "keyboard_shortcuts.favourite": "per segnare come apprezzato",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.heading": "Tasti di scelta rapida",
"keyboard_shortcuts.hotkey": "Tasto di scelta rapida",
"keyboard_shortcuts.legend": "per mostrare questa spiegazione", "keyboard_shortcuts.legend": "per mostrare questa spiegazione",
"keyboard_shortcuts.mention": "per menzionare l'autore", "keyboard_shortcuts.mention": "per menzionare l'autore",
"keyboard_shortcuts.reply": "per rispondere", "keyboard_shortcuts.reply": "per rispondere",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Utenti bloccati", "navigation_bar.blocks": "Utenti bloccati",
"navigation_bar.community_timeline": "Timeline locale", "navigation_bar.community_timeline": "Timeline locale",
"navigation_bar.direct": "Messaggi diretti", "navigation_bar.direct": "Messaggi diretti",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Domini nascosti", "navigation_bar.domain_blocks": "Domini nascosti",
"navigation_bar.edit_profile": "Modifica profilo", "navigation_bar.edit_profile": "Modifica profilo",
"navigation_bar.favourites": "Apprezzati", "navigation_bar.favourites": "Apprezzati",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Liste", "navigation_bar.lists": "Liste",
"navigation_bar.logout": "Esci", "navigation_bar.logout": "Esci",
"navigation_bar.mutes": "Utenti silenziati", "navigation_bar.mutes": "Utenti silenziati",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Toot fissati in cima", "navigation_bar.pins": "Toot fissati in cima",
"navigation_bar.preferences": "Impostazioni", "navigation_bar.preferences": "Impostazioni",
"navigation_bar.public_timeline": "Timeline federata", "navigation_bar.public_timeline": "Timeline federata",
"navigation_bar.security": "Security",
"notification.favourite": "{name} ha apprezzato il tuo post", "notification.favourite": "{name} ha apprezzato il tuo post",
"notification.follow": "{name} ha iniziato a seguirti", "notification.follow": "{name} ha iniziato a seguirti",
"notification.mention": "{name} ti ha menzionato", "notification.mention": "{name} ti ha menzionato",
@@ -187,7 +190,7 @@
"notifications.column_settings.reblog": "Post condivisi:", "notifications.column_settings.reblog": "Post condivisi:",
"notifications.column_settings.show": "Mostra in colonna", "notifications.column_settings.show": "Mostra in colonna",
"notifications.column_settings.sound": "Riproduci suono", "notifications.column_settings.sound": "Riproduci suono",
"notifications.group": "{count} notifications",
"notifications.group": "{count} notifiche",
"onboarding.done": "Fatto", "onboarding.done": "Fatto",
"onboarding.next": "Prossimo", "onboarding.next": "Prossimo",
"onboarding.page_five.public_timelines": "La timeline locale mostra i post pubblici di tutti gli utenti di {domain}. La timeline federata mostra i post pubblici di tutti gli utenti seguiti da quelli di {domain}. Queste sono le timeline pubbliche, che vi danno grandi possibilità di scoprire nuovi utenti.", "onboarding.page_five.public_timelines": "La timeline locale mostra i post pubblici di tutti gli utenti di {domain}. La timeline federata mostra i post pubblici di tutti gli utenti seguiti da quelli di {domain}. Queste sono le timeline pubbliche, che vi danno grandi possibilità di scoprire nuovi utenti.",
@@ -228,18 +231,18 @@
"reply_indicator.cancel": "Annulla", "reply_indicator.cancel": "Annulla",
"report.forward": "Inoltra a {target}", "report.forward": "Inoltra a {target}",
"report.forward_hint": "Questo account appartiene a un altro server. Mandare anche là una copia anonima del rapporto?", "report.forward_hint": "Questo account appartiene a un altro server. Mandare anche là una copia anonima del rapporto?",
"report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
"report.hint": "La segnalazione sara' invata ai tuoi moderatori di istanza. Di seguito, puoi fornire il motivo per il quale stai segnalando questo account:",
"report.placeholder": "Commenti aggiuntivi", "report.placeholder": "Commenti aggiuntivi",
"report.submit": "Invia", "report.submit": "Invia",
"report.target": "Invio la segnalazione",
"report.target": "Invio la segnalazione {target}",
"search.placeholder": "Cerca", "search.placeholder": "Cerca",
"search_popout.search_format": "Advanced search format",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.search_format": "Formato di ricerca avanzato",
"search_popout.tips.full_text": "Testo semplice per trovare gli status che hai scritto, segnato come apprezzati, condiviso o in cui sei stato citato, e inoltre i nomi utente, nomi visualizzati e hashtag che lo contengono.",
"search_popout.tips.hashtag": "hashtag", "search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "status", "search_popout.tips.status": "status",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_popout.tips.text": "Testo semplice per trovare nomi visualizzati, nomi utente e hashtag che lo contengono",
"search_popout.tips.user": "utente",
"search_results.accounts": "Gente",
"search_results.hashtags": "Hashtag", "search_results.hashtags": "Hashtag",
"search_results.statuses": "Toot", "search_results.statuses": "Toot",
"search_results.total": "{count} {count, plural, one {risultato} other {risultati}}", "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}",
@@ -261,8 +264,9 @@
"status.pin": "Fissa in cima sul profilo", "status.pin": "Fissa in cima sul profilo",
"status.pinned": "Toot fissato in cima", "status.pinned": "Toot fissato in cima",
"status.reblog": "Condividi", "status.reblog": "Condividi",
"status.reblog_private": "Boost to original audience",
"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}",
@@ -282,6 +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",
"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",


+ 16
- 11
app/javascript/mastodon/locales/ja.json View File

@@ -58,13 +58,12 @@
"column_header.pin": "ピン留めする", "column_header.pin": "ピン留めする",
"column_header.show_settings": "設定を表示", "column_header.show_settings": "設定を表示",
"column_header.unpin": "ピン留めを外す", "column_header.unpin": "ピン留めを外す",
"column_subheading.navigation": "ナビゲーション",
"column_subheading.settings": "設定", "column_subheading.settings": "設定",
"compose_form.direct_message_warning": "このトゥートはメンションされた人にのみ送信されます。ただし送受信したインスタンスの管理者が検査するかもしれません。",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.direct_message_warning": "このトゥートはメンションされた人にのみ送信されます。",
"compose_form.direct_message_warning_learn_more": "もっと詳しく",
"compose_form.hashtag_warning": "このトゥートは未収載なのでハッシュタグの一覧に表示されません。公開トゥートだけがハッシュタグで検索できます。", "compose_form.hashtag_warning": "このトゥートは未収載なのでハッシュタグの一覧に表示されません。公開トゥートだけがハッシュタグで検索できます。",
"compose_form.lock_disclaimer": "あなたのアカウントは{locked}になっていません。誰でもあなたをフォローすることができ、フォロワー限定の投稿を見ることができます。", "compose_form.lock_disclaimer": "あなたのアカウントは{locked}になっていません。誰でもあなたをフォローすることができ、フォロワー限定の投稿を見ることができます。",
"compose_form.lock_disclaimer.lock": "非公開",
"compose_form.lock_disclaimer.lock": "承認制",
"compose_form.placeholder": "今なにしてる?", "compose_form.placeholder": "今なにしてる?",
"compose_form.publish": "トゥート", "compose_form.publish": "トゥート",
"compose_form.publish_loud": "{publish}!", "compose_form.publish_loud": "{publish}!",
@@ -84,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": "下記のコードをコピーしてウェブサイトに埋め込みます。",
@@ -112,11 +113,10 @@
"empty_column.public": "ここにはまだ何もありません! 公開で何かを投稿したり、他のインスタンスのユーザーをフォローしたりしていっぱいにしましょう", "empty_column.public": "ここにはまだ何もありません! 公開で何かを投稿したり、他のインスタンスのユーザーをフォローしたりしていっぱいにしましょう",
"follow_request.authorize": "許可", "follow_request.authorize": "許可",
"follow_request.reject": "拒否", "follow_request.reject": "拒否",
"getting_started.appsshort": "アプリ",
"getting_started.faq": "よくある質問",
"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.userguide": "ユーザーガイド",
"getting_started.terms": "プライバシーポリシー",
"home.column_settings.advanced": "高度な設定", "home.column_settings.advanced": "高度な設定",
"home.column_settings.basic": "基本設定", "home.column_settings.basic": "基本設定",
"home.column_settings.filter_regex": "正規表現でフィルター", "home.column_settings.filter_regex": "正規表現でフィルター",
@@ -160,18 +160,21 @@
"navigation_bar.blocks": "ブロックしたユーザー", "navigation_bar.blocks": "ブロックしたユーザー",
"navigation_bar.community_timeline": "ローカルタイムライン", "navigation_bar.community_timeline": "ローカルタイムライン",
"navigation_bar.direct": "ダイレクトメッセージ", "navigation_bar.direct": "ダイレクトメッセージ",
"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": "お気に入り",
"navigation_bar.follow_requests": "フォローリクエスト", "navigation_bar.follow_requests": "フォローリクエスト",
"navigation_bar.info": "このインスタンスについて", "navigation_bar.info": "このインスタンスについて",
"navigation_bar.keyboard_shortcuts": "キーボードショートカット",
"navigation_bar.keyboard_shortcuts": "ホットキー",
"navigation_bar.lists": "リスト", "navigation_bar.lists": "リスト",
"navigation_bar.logout": "ログアウト", "navigation_bar.logout": "ログアウト",
"navigation_bar.mutes": "ミュートしたユーザー", "navigation_bar.mutes": "ミュートしたユーザー",
"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": "セキュリティ",
"notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました", "notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました",
"notification.follow": "{name}さんにフォローされました", "notification.follow": "{name}さんにフォローされました",
"notification.mention": "{name}さんがあなたに返信しました", "notification.mention": "{name}さんがあなたに返信しました",
@@ -187,7 +190,7 @@
"notifications.column_settings.reblog": "ブースト:", "notifications.column_settings.reblog": "ブースト:",
"notifications.column_settings.show": "カラムに表示", "notifications.column_settings.show": "カラムに表示",
"notifications.column_settings.sound": "通知音を再生", "notifications.column_settings.sound": "通知音を再生",
"notifications.group": "{count} notifications",
"notifications.group": "{count} 件の通知",
"onboarding.done": "完了", "onboarding.done": "完了",
"onboarding.next": "次へ", "onboarding.next": "次へ",
"onboarding.page_five.public_timelines": "連合タイムラインでは{domain}の人がフォローしているMastodon全体での公開投稿を表示します。同じくローカルタイムラインでは{domain}のみの公開投稿を表示します。", "onboarding.page_five.public_timelines": "連合タイムラインでは{domain}の人がフォローしているMastodon全体での公開投稿を表示します。同じくローカルタイムラインでは{domain}のみの公開投稿を表示します。",
@@ -263,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}さんを通報",
@@ -280,8 +284,9 @@
"tabs_bar.local_timeline": "ローカル", "tabs_bar.local_timeline": "ローカル",
"tabs_bar.notifications": "通知", "tabs_bar.notifications": "通知",
"tabs_bar.search": "検索", "tabs_bar.search": "検索",
"timeline.media": "Media",
"timeline.posts": "Toots",
"timeline.media": "メディア",
"timeline.posts": "投稿",
"trends.count_by_accounts": "{count} {rawCount, plural, one {人} other {人}} がトゥート",
"ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。", "ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。",
"upload_area.title": "ドラッグ&ドロップでアップロード", "upload_area.title": "ドラッグ&ドロップでアップロード",
"upload_button.label": "メディアを追加", "upload_button.label": "メディアを追加",


+ 10
- 5
app/javascript/mastodon/locales/ko.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "고정하기", "column_header.pin": "고정하기",
"column_header.show_settings": "설정 보이기", "column_header.show_settings": "설정 보이기",
"column_header.unpin": "고정 해제", "column_header.unpin": "고정 해제",
"column_subheading.navigation": "내비게이션",
"column_subheading.settings": "설정", "column_subheading.settings": "설정",
"compose_form.direct_message_warning": "이 툿은 멘션 된 유저들에게만 보여집니다.", "compose_form.direct_message_warning": "이 툿은 멘션 된 유저들에게만 보여집니다.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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": "아래의 코드를 복사하여 대화를 원하는 곳으로 공유하세요.",
@@ -112,11 +113,10 @@
"empty_column.public": "여기엔 아직 아무 것도 없습니다! 공개적으로 무언가 포스팅하거나, 다른 인스턴스의 유저를 팔로우 해서 채워보세요", "empty_column.public": "여기엔 아직 아무 것도 없습니다! 공개적으로 무언가 포스팅하거나, 다른 인스턴스의 유저를 팔로우 해서 채워보세요",
"follow_request.authorize": "허가", "follow_request.authorize": "허가",
"follow_request.reject": "거부", "follow_request.reject": "거부",
"getting_started.appsshort": "애플리케이션",
"getting_started.faq": "자주 있는 질문",
"getting_started.documentation": "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.userguide": "사용자 가이드",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "고급 사용자용", "home.column_settings.advanced": "고급 사용자용",
"home.column_settings.basic": "기본 설정", "home.column_settings.basic": "기본 설정",
"home.column_settings.filter_regex": "정규 표현식으로 필터링", "home.column_settings.filter_regex": "정규 표현식으로 필터링",
@@ -160,18 +160,21 @@
"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.domain_blocks": "숨겨진 도메인", "navigation_bar.domain_blocks": "숨겨진 도메인",
"navigation_bar.edit_profile": "프로필 편집", "navigation_bar.edit_profile": "프로필 편집",
"navigation_bar.favourites": "즐겨찾기", "navigation_bar.favourites": "즐겨찾기",
"navigation_bar.follow_requests": "팔로우 요청", "navigation_bar.follow_requests": "팔로우 요청",
"navigation_bar.info": "이 인스턴스에 대해서", "navigation_bar.info": "이 인스턴스에 대해서",
"navigation_bar.keyboard_shortcuts": "키보드 단축키",
"navigation_bar.keyboard_shortcuts": "단축키",
"navigation_bar.lists": "리스트", "navigation_bar.lists": "리스트",
"navigation_bar.logout": "로그아웃", "navigation_bar.logout": "로그아웃",
"navigation_bar.mutes": "뮤트 중인 사용자", "navigation_bar.mutes": "뮤트 중인 사용자",
"navigation_bar.personal": "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",
"notification.favourite": "{name}님이 즐겨찾기 했습니다", "notification.favourite": "{name}님이 즐겨찾기 했습니다",
"notification.follow": "{name}님이 나를 팔로우 했습니다", "notification.follow": "{name}님이 나를 팔로우 했습니다",
"notification.mention": "{name}님이 답글을 보냈습니다", "notification.mention": "{name}님이 답글을 보냈습니다",
@@ -263,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": "신고",
@@ -282,6 +286,7 @@
"tabs_bar.search": "검색", "tabs_bar.search": "검색",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.", "ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.",
"upload_area.title": "드래그 & 드롭으로 업로드", "upload_area.title": "드래그 & 드롭으로 업로드",
"upload_button.label": "미디어 추가", "upload_button.label": "미디어 추가",


+ 11
- 6
app/javascript/mastodon/locales/nl.json View File

@@ -58,10 +58,9 @@
"column_header.pin": "Vastmaken", "column_header.pin": "Vastmaken",
"column_header.show_settings": "Instellingen tonen", "column_header.show_settings": "Instellingen tonen",
"column_header.unpin": "Losmaken", "column_header.unpin": "Losmaken",
"column_subheading.navigation": "Navigatie",
"column_subheading.settings": "Instellingen", "column_subheading.settings": "Instellingen",
"compose_form.direct_message_warning": "Deze toot wordt alleen naar vermelde gebruikers verstuurd. Echter, de beheerders en moderatoren van jouw en de ontvangende Mastodonserver(s) kunnen dit bericht mogelijk wel bekijken.", "compose_form.direct_message_warning": "Deze toot wordt alleen naar vermelde gebruikers verstuurd. Echter, de beheerders en moderatoren van jouw en de ontvangende Mastodonserver(s) kunnen dit bericht mogelijk wel bekijken.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.direct_message_warning_learn_more": "Meer leren",
"compose_form.hashtag_warning": "Deze toot valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare toots kunnen via hashtags gevonden worden.", "compose_form.hashtag_warning": "Deze toot valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare toots kunnen via hashtags gevonden worden.",
"compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de toots zien die je alleen aan jouw volgers hebt gericht.", "compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de toots zien die je alleen aan jouw volgers hebt gericht.",
"compose_form.lock_disclaimer.lock": "besloten", "compose_form.lock_disclaimer.lock": "besloten",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere servers om het te vullen", "empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere servers om het te vullen",
"follow_request.authorize": "Goedkeuren", "follow_request.authorize": "Goedkeuren",
"follow_request.reject": "Afkeuren", "follow_request.reject": "Afkeuren",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentatie",
"getting_started.heading": "Aan de slag", "getting_started.heading": "Aan de slag",
"getting_started.open_source_notice": "Mastodon is vrije software. Je kunt bijdragen of problemen melden op GitHub via {github}.", "getting_started.open_source_notice": "Mastodon is vrije software. Je kunt bijdragen of problemen melden op GitHub via {github}.",
"getting_started.userguide": "Gebruikersgids",
"getting_started.terms": "Voorwaarden",
"home.column_settings.advanced": "Geavanceerd", "home.column_settings.advanced": "Geavanceerd",
"home.column_settings.basic": "Algemeen", "home.column_settings.basic": "Algemeen",
"home.column_settings.filter_regex": "Wegfilteren met reguliere expressies", "home.column_settings.filter_regex": "Wegfilteren met reguliere expressies",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Geblokkeerde gebruikers", "navigation_bar.blocks": "Geblokkeerde gebruikers",
"navigation_bar.community_timeline": "Lokale tijdlijn", "navigation_bar.community_timeline": "Lokale tijdlijn",
"navigation_bar.direct": "Directe berichten", "navigation_bar.direct": "Directe berichten",
"navigation_bar.discover": "Ontdekken",
"navigation_bar.domain_blocks": "Verborgen domeinen", "navigation_bar.domain_blocks": "Verborgen domeinen",
"navigation_bar.edit_profile": "Profiel bewerken", "navigation_bar.edit_profile": "Profiel bewerken",
"navigation_bar.favourites": "Favorieten", "navigation_bar.favourites": "Favorieten",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lijsten", "navigation_bar.lists": "Lijsten",
"navigation_bar.logout": "Afmelden", "navigation_bar.logout": "Afmelden",
"navigation_bar.mutes": "Genegeerde gebruikers", "navigation_bar.mutes": "Genegeerde gebruikers",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Vastgezette toots", "navigation_bar.pins": "Vastgezette toots",
"navigation_bar.preferences": "Instellingen", "navigation_bar.preferences": "Instellingen",
"navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.public_timeline": "Globale tijdlijn",
"navigation_bar.security": "Beveiliging",
"notification.favourite": "{name} markeerde jouw toot als favoriet", "notification.favourite": "{name} markeerde jouw toot als favoriet",
"notification.follow": "{name} volgt jou nu", "notification.follow": "{name} volgt jou nu",
"notification.mention": "{name} vermeldde jou", "notification.mention": "{name} vermeldde jou",
@@ -187,7 +190,7 @@
"notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "In kolom tonen", "notifications.column_settings.show": "In kolom tonen",
"notifications.column_settings.sound": "Geluid afspelen", "notifications.column_settings.sound": "Geluid afspelen",
"notifications.group": "{count} notifications",
"notifications.group": "{count} meldingen",
"onboarding.done": "Klaar", "onboarding.done": "Klaar",
"onboarding.next": "Volgende", "onboarding.next": "Volgende",
"onboarding.page_five.public_timelines": "De lokale tijdlijn toont openbare toots van iedereen op {domain}. De globale tijdlijn toont openbare toots van iedereen die door gebruikers van {domain} worden gevolgd, dus ook mensen van andere Mastodonservers. Dit zijn de openbare tijdlijnen en vormen een uitstekende manier om nieuwe mensen te leren kennen.", "onboarding.page_five.public_timelines": "De lokale tijdlijn toont openbare toots van iedereen op {domain}. De globale tijdlijn toont openbare toots van iedereen die door gebruikers van {domain} worden gevolgd, dus ook mensen van andere Mastodonservers. Dit zijn de openbare tijdlijnen en vormen een uitstekende manier om nieuwe mensen te leren kennen.",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Zoeken", "tabs_bar.search": "Zoeken",
"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",
"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",


+ 9
- 4
app/javascript/mastodon/locales/no.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Fest", "column_header.pin": "Fest",
"column_header.show_settings": "Vis innstillinger", "column_header.show_settings": "Vis innstillinger",
"column_header.unpin": "Løsne", "column_header.unpin": "Løsne",
"column_subheading.navigation": "Navigasjon",
"column_subheading.settings": "Innstillinger", "column_subheading.settings": "Innstillinger",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp", "empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp",
"follow_request.authorize": "Autorisér", "follow_request.authorize": "Autorisér",
"follow_request.reject": "Avvis", "follow_request.reject": "Avvis",
"getting_started.appsshort": "Apper",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Kom i gang", "getting_started.heading": "Kom i gang",
"getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidra eller rapportere problemer på GitHub på {github}.", "getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidra eller rapportere problemer på GitHub på {github}.",
"getting_started.userguide": "Brukerguide",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Avansert", "home.column_settings.advanced": "Avansert",
"home.column_settings.basic": "Enkel", "home.column_settings.basic": "Enkel",
"home.column_settings.filter_regex": "Filtrér med regulære uttrykk", "home.column_settings.filter_regex": "Filtrér med regulære uttrykk",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blokkerte brukere", "navigation_bar.blocks": "Blokkerte brukere",
"navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.community_timeline": "Lokal tidslinje",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Rediger profil", "navigation_bar.edit_profile": "Rediger profil",
"navigation_bar.favourites": "Favoritter", "navigation_bar.favourites": "Favoritter",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lister", "navigation_bar.lists": "Lister",
"navigation_bar.logout": "Logg ut", "navigation_bar.logout": "Logg ut",
"navigation_bar.mutes": "Dempede brukere", "navigation_bar.mutes": "Dempede brukere",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Festa tuter", "navigation_bar.pins": "Festa tuter",
"navigation_bar.preferences": "Preferanser", "navigation_bar.preferences": "Preferanser",
"navigation_bar.public_timeline": "Felles tidslinje", "navigation_bar.public_timeline": "Felles tidslinje",
"navigation_bar.security": "Security",
"notification.favourite": "{name} likte din status", "notification.favourite": "{name} likte din status",
"notification.follow": "{name} fulgte deg", "notification.follow": "{name} fulgte deg",
"notification.mention": "{name} nevnte deg", "notification.mention": "{name} nevnte deg",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 12
- 7
app/javascript/mastodon/locales/oc.json View File

@@ -1,5 +1,5 @@
{ {
"account.badges.bot": "Bot",
"account.badges.bot": "Robòt",
"account.block": "Blocar @{name}", "account.block": "Blocar @{name}",
"account.block_domain": "Tot amagar del domeni {domain}", "account.block_domain": "Tot amagar del domeni {domain}",
"account.blocked": "Blocat", "account.blocked": "Blocat",
@@ -58,9 +58,8 @@
"column_header.pin": "Penjar", "column_header.pin": "Penjar",
"column_header.show_settings": "Mostrar los paramètres", "column_header.show_settings": "Mostrar los paramètres",
"column_header.unpin": "Despenjar", "column_header.unpin": "Despenjar",
"column_subheading.navigation": "Navigacion",
"column_subheading.settings": "Paramètres", "column_subheading.settings": "Paramètres",
"compose_form.direct_message_warning": "Aqueste tut serà pas que visibile pel monde mencionat.",
"compose_form.direct_message_warning": "Sols los mencionats poiràn veire aqueste tut.",
"compose_form.direct_message_warning_learn_more": "Ne saber mai", "compose_form.direct_message_warning_learn_more": "Ne saber mai",
"compose_form.hashtag_warning": "Aqueste tut serà pas ligat a cap d’etiqueta estant qu’es pas listat. Òm pas cercar que los tuts publics per etiqueta.", "compose_form.hashtag_warning": "Aqueste tut serà pas ligat a cap d’etiqueta estant qu’es pas listat. Òm pas cercar que los tuts publics per etiqueta.",
"compose_form.lock_disclaimer": "Vòstre compte es pas {locked}. Tot lo monde pòt vos sègre e veire los estatuts reservats als seguidors.", "compose_form.lock_disclaimer": "Vòstre compte es pas {locked}. Tot lo monde pòt vos sègre e veire los estatuts reservats als seguidors.",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "I a pas res aquí ! Escrivètz quicòm de public, o seguètz de personas d’autras instàncias per garnir lo flux public", "empty_column.public": "I a pas res aquí ! Escrivètz quicòm de public, o seguètz de personas d’autras instàncias per garnir lo flux public",
"follow_request.authorize": "Acceptar", "follow_request.authorize": "Acceptar",
"follow_request.reject": "Regetar", "follow_request.reject": "Regetar",
"getting_started.appsshort": "Aplicacions",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Per començar", "getting_started.heading": "Per començar",
"getting_started.open_source_notice": "Mastodon es un logicial liure. Podètz contribuir e mandar vòstres comentaris e rapòrt de bug via {github} sus GitHub.", "getting_started.open_source_notice": "Mastodon es un logicial liure. Podètz contribuir e mandar vòstres comentaris e rapòrt de bug via {github} sus GitHub.",
"getting_started.userguide": "Guida d’utilizacion",
"getting_started.terms": "Condicions d’utilizacion",
"home.column_settings.advanced": "Avançat", "home.column_settings.advanced": "Avançat",
"home.column_settings.basic": "Basic", "home.column_settings.basic": "Basic",
"home.column_settings.filter_regex": "Filtrar amb una expression racionala", "home.column_settings.filter_regex": "Filtrar amb una expression racionala",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Personas blocadas", "navigation_bar.blocks": "Personas blocadas",
"navigation_bar.community_timeline": "Flux public local", "navigation_bar.community_timeline": "Flux public local",
"navigation_bar.direct": "Messatges dirèctes", "navigation_bar.direct": "Messatges dirèctes",
"navigation_bar.discover": "Descobrir",
"navigation_bar.domain_blocks": "Domenis resconduts", "navigation_bar.domain_blocks": "Domenis resconduts",
"navigation_bar.edit_profile": "Modificar lo perfil", "navigation_bar.edit_profile": "Modificar lo perfil",
"navigation_bar.favourites": "Favorits", "navigation_bar.favourites": "Favorits",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listas", "navigation_bar.lists": "Listas",
"navigation_bar.logout": "Desconnexion", "navigation_bar.logout": "Desconnexion",
"navigation_bar.mutes": "Personas rescondudas", "navigation_bar.mutes": "Personas rescondudas",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Tuts penjats", "navigation_bar.pins": "Tuts penjats",
"navigation_bar.preferences": "Preferéncias", "navigation_bar.preferences": "Preferéncias",
"navigation_bar.public_timeline": "Flux public global", "navigation_bar.public_timeline": "Flux public global",
"navigation_bar.security": "Seguretat",
"notification.favourite": "{name} a ajustat a sos favorits", "notification.favourite": "{name} a ajustat a sos favorits",
"notification.follow": "{name} vos sèc", "notification.follow": "{name} vos sèc",
"notification.mention": "{name} vos a mencionat", "notification.mention": "{name} vos a mencionat",
@@ -263,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}",
@@ -281,7 +285,8 @@
"tabs_bar.notifications": "Notificacions", "tabs_bar.notifications": "Notificacions",
"tabs_bar.search": "Recèrcas", "tabs_bar.search": "Recèrcas",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots",
"timeline.posts": "Tuts",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} ne charra other {people}} ne charran",
"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",


+ 9
- 4
app/javascript/mastodon/locales/pl.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Przypnij", "column_header.pin": "Przypnij",
"column_header.show_settings": "Pokaż ustawienia", "column_header.show_settings": "Pokaż ustawienia",
"column_header.unpin": "Cofnij przypięcie", "column_header.unpin": "Cofnij przypięcie",
"column_subheading.navigation": "Nawigacja",
"column_subheading.settings": "Ustawienia", "column_subheading.settings": "Ustawienia",
"compose_form.direct_message_warning": "Ten wpis będzie widoczny tylko dla wszystkich wspomnianych użytkowników.", "compose_form.direct_message_warning": "Ten wpis będzie widoczny tylko dla wszystkich wspomnianych użytkowników.",
"compose_form.direct_message_warning_learn_more": "Dowiedz się więcej", "compose_form.direct_message_warning_learn_more": "Dowiedz się więcej",
@@ -84,6 +83,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Tu nic nie ma! Napisz coś publicznie, lub dodaj ludzi z innych instancji, aby to wyświetlić", "empty_column.public": "Tu nic nie ma! Napisz coś publicznie, lub dodaj ludzi z innych instancji, aby to wyświetlić",
"follow_request.authorize": "Autoryzuj", "follow_request.authorize": "Autoryzuj",
"follow_request.reject": "Odrzuć", "follow_request.reject": "Odrzuć",
"getting_started.appsshort": "Aplikacje",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Dokumentacja",
"getting_started.heading": "Rozpocznij", "getting_started.heading": "Rozpocznij",
"getting_started.open_source_notice": "Mastodon jest oprogramowaniem o otwartym źródle. Możesz pomóc w rozwoju lub zgłaszać błędy na GitHubie tutaj: {github}.", "getting_started.open_source_notice": "Mastodon jest oprogramowaniem o otwartym źródle. Możesz pomóc w rozwoju lub zgłaszać błędy na GitHubie tutaj: {github}.",
"getting_started.userguide": "Podręcznik użytkownika",
"getting_started.terms": "Zasady użytkowania",
"home.column_settings.advanced": "Zaawansowane", "home.column_settings.advanced": "Zaawansowane",
"home.column_settings.basic": "Podstawowe", "home.column_settings.basic": "Podstawowe",
"home.column_settings.filter_regex": "Filtruj z użyciem wyrażeń regularnych", "home.column_settings.filter_regex": "Filtruj z użyciem wyrażeń regularnych",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Zablokowani użytkownicy", "navigation_bar.blocks": "Zablokowani użytkownicy",
"navigation_bar.community_timeline": "Lokalna oś czasu", "navigation_bar.community_timeline": "Lokalna oś czasu",
"navigation_bar.direct": "Wiadomości bezpośrednie", "navigation_bar.direct": "Wiadomości bezpośrednie",
"navigation_bar.discover": "Odkrywaj",
"navigation_bar.domain_blocks": "Ukryte domeny", "navigation_bar.domain_blocks": "Ukryte domeny",
"navigation_bar.edit_profile": "Edytuj profil", "navigation_bar.edit_profile": "Edytuj profil",
"navigation_bar.favourites": "Ulubione", "navigation_bar.favourites": "Ulubione",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listy", "navigation_bar.lists": "Listy",
"navigation_bar.logout": "Wyloguj", "navigation_bar.logout": "Wyloguj",
"navigation_bar.mutes": "Wyciszeni użytkownicy", "navigation_bar.mutes": "Wyciszeni użytkownicy",
"navigation_bar.personal": "Osobiste",
"navigation_bar.pins": "Przypięte wpisy", "navigation_bar.pins": "Przypięte wpisy",
"navigation_bar.preferences": "Preferencje", "navigation_bar.preferences": "Preferencje",
"navigation_bar.public_timeline": "Globalna oś czasu", "navigation_bar.public_timeline": "Globalna oś czasu",
"navigation_bar.security": "Bezpieczeństwo",
"notification.favourite": "{name} dodał Twój wpis do ulubionych", "notification.favourite": "{name} dodał Twój wpis do ulubionych",
"notification.follow": "{name} zaczął Cię śledzić", "notification.follow": "{name} zaczął Cię śledzić",
"notification.mention": "{name} wspomniał o tobie", "notification.mention": "{name} wspomniał o tobie",
@@ -263,6 +266,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Szukaj", "tabs_bar.search": "Szukaj",
"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",
"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ą",


+ 14
- 9
app/javascript/mastodon/locales/pt-BR.json View File

@@ -58,10 +58,9 @@
"column_header.pin": "Fixar", "column_header.pin": "Fixar",
"column_header.show_settings": "Mostrar configurações", "column_header.show_settings": "Mostrar configurações",
"column_header.unpin": "Desafixar", "column_header.unpin": "Desafixar",
"column_subheading.navigation": "Navegação",
"column_subheading.settings": "Configurações", "column_subheading.settings": "Configurações",
"compose_form.direct_message_warning": "Este toot só será enviado aos usuários mencionados. No entanto, a administração da sua instância e das instâncias dos usuários mencionados podem inspecionar essa mensagem.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"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.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.",
"compose_form.lock_disclaimer.lock": "trancada", "compose_form.lock_disclaimer.lock": "trancada",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Não há nada aqui! Escreva algo publicamente ou siga manualmente usuários de outras instâncias", "empty_column.public": "Não há nada aqui! Escreva algo publicamente ou siga manualmente usuários de outras instâncias",
"follow_request.authorize": "Autorizar", "follow_request.authorize": "Autorizar",
"follow_request.reject": "Rejeitar", "follow_request.reject": "Rejeitar",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Primeiros passos", "getting_started.heading": "Primeiros passos",
"getting_started.open_source_notice": "Mastodon é um software de código aberto. Você pode contribuir ou reportar problemas na página do GitHub do projeto: {github}.", "getting_started.open_source_notice": "Mastodon é um software de código aberto. Você pode contribuir ou reportar problemas na página do GitHub do projeto: {github}.",
"getting_started.userguide": "Guia de usuário",
"getting_started.terms": "Termos de serviço",
"home.column_settings.advanced": "Avançado", "home.column_settings.advanced": "Avançado",
"home.column_settings.basic": "Básico", "home.column_settings.basic": "Básico",
"home.column_settings.filter_regex": "Filtrar com uma expressão regular", "home.column_settings.filter_regex": "Filtrar com uma expressão regular",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Usuários bloqueados", "navigation_bar.blocks": "Usuários bloqueados",
"navigation_bar.community_timeline": "Local", "navigation_bar.community_timeline": "Local",
"navigation_bar.direct": "Mensagens diretas", "navigation_bar.direct": "Mensagens diretas",
"navigation_bar.discover": "Descobrir",
"navigation_bar.domain_blocks": "Domínios escondidos", "navigation_bar.domain_blocks": "Domínios escondidos",
"navigation_bar.edit_profile": "Editar perfil", "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.favourites": "Favoritos", "navigation_bar.favourites": "Favoritos",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listas", "navigation_bar.lists": "Listas",
"navigation_bar.logout": "Sair", "navigation_bar.logout": "Sair",
"navigation_bar.mutes": "Usuários silenciados", "navigation_bar.mutes": "Usuários silenciados",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Postagens fixadas", "navigation_bar.pins": "Postagens fixadas",
"navigation_bar.preferences": "Preferências", "navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Global", "navigation_bar.public_timeline": "Global",
"navigation_bar.security": "Segurança",
"notification.favourite": "{name} adicionou a sua postagem aos favoritos", "notification.favourite": "{name} adicionou a sua postagem aos favoritos",
"notification.follow": "{name} te seguiu", "notification.follow": "{name} te seguiu",
"notification.mention": "{name} te mencionou", "notification.mention": "{name} te mencionou",
@@ -187,7 +190,7 @@
"notifications.column_settings.reblog": "Compartilhamento:", "notifications.column_settings.reblog": "Compartilhamento:",
"notifications.column_settings.show": "Mostrar nas colunas", "notifications.column_settings.show": "Mostrar nas colunas",
"notifications.column_settings.sound": "Reproduzir som", "notifications.column_settings.sound": "Reproduzir som",
"notifications.group": "{count} notifications",
"notifications.group": "{count} notificações",
"onboarding.done": "Pronto", "onboarding.done": "Pronto",
"onboarding.next": "Próximo", "onboarding.next": "Próximo",
"onboarding.page_five.public_timelines": "A timeline local mostra postagens públicas de todos os usuários no {domain}. A timeline federada mostra todas as postagens de todas as pessoas que pessoas no {domain} seguem. Estas são as timelines públicas, uma ótima maneira de conhecer novas pessoas.", "onboarding.page_five.public_timelines": "A timeline local mostra postagens públicas de todos os usuários no {domain}. A timeline federada mostra todas as postagens de todas as pessoas que pessoas no {domain} seguem. Estas são as timelines públicas, uma ótima maneira de conhecer novas pessoas.",
@@ -245,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",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"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",
"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",


+ 9
- 4
app/javascript/mastodon/locales/pt.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Fixar", "column_header.pin": "Fixar",
"column_header.show_settings": "Mostrar preferências", "column_header.show_settings": "Mostrar preferências",
"column_header.unpin": "Desafixar", "column_header.unpin": "Desafixar",
"column_subheading.navigation": "Navegação",
"column_subheading.settings": "Preferências", "column_subheading.settings": "Preferências",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para ver aqui os conteúdos públicos", "empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para ver aqui os conteúdos públicos",
"follow_request.authorize": "Autorizar", "follow_request.authorize": "Autorizar",
"follow_request.reject": "Rejeitar", "follow_request.reject": "Rejeitar",
"getting_started.appsshort": "Aplicações",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Primeiros passos", "getting_started.heading": "Primeiros passos",
"getting_started.open_source_notice": "Mastodon é software de fonte aberta. Podes contribuir ou repostar problemas no GitHub do projecto: {github}.", "getting_started.open_source_notice": "Mastodon é software de fonte aberta. Podes contribuir ou repostar problemas no GitHub do projecto: {github}.",
"getting_started.userguide": "Guia do utilizador",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Avançado", "home.column_settings.advanced": "Avançado",
"home.column_settings.basic": "Básico", "home.column_settings.basic": "Básico",
"home.column_settings.filter_regex": "Filtrar com uma expressão regular", "home.column_settings.filter_regex": "Filtrar com uma expressão regular",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Utilizadores bloqueados", "navigation_bar.blocks": "Utilizadores bloqueados",
"navigation_bar.community_timeline": "Local", "navigation_bar.community_timeline": "Local",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Editar perfil", "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.favourites": "Favoritos", "navigation_bar.favourites": "Favoritos",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listas", "navigation_bar.lists": "Listas",
"navigation_bar.logout": "Sair", "navigation_bar.logout": "Sair",
"navigation_bar.mutes": "Utilizadores silenciados", "navigation_bar.mutes": "Utilizadores silenciados",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Posts fixos", "navigation_bar.pins": "Posts fixos",
"navigation_bar.preferences": "Preferências", "navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Global", "navigation_bar.public_timeline": "Global",
"navigation_bar.security": "Security",
"notification.favourite": "{name} adicionou o teu post aos favoritos", "notification.favourite": "{name} adicionou o teu post aos favoritos",
"notification.follow": "{name} seguiu-te", "notification.follow": "{name} seguiu-te",
"notification.mention": "{name} mencionou-te", "notification.mention": "{name} mencionou-te",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/ru.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Закрепить", "column_header.pin": "Закрепить",
"column_header.show_settings": "Показать настройки", "column_header.show_settings": "Показать настройки",
"column_header.unpin": "Открепить", "column_header.unpin": "Открепить",
"column_subheading.navigation": "Навигация",
"column_subheading.settings": "Настройки", "column_subheading.settings": "Настройки",
"compose_form.direct_message_warning": "Этот статус будет виден только упомянутым пользователям.", "compose_form.direct_message_warning": "Этот статус будет виден только упомянутым пользователям.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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": "Встройте этот статус на Вашем сайте, скопировав код внизу.",
@@ -112,11 +113,10 @@
"empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других узлов, чтобы заполнить ленту.", "empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других узлов, чтобы заполнить ленту.",
"follow_request.authorize": "Авторизовать", "follow_request.authorize": "Авторизовать",
"follow_request.reject": "Отказать", "follow_request.reject": "Отказать",
"getting_started.appsshort": "Приложения",
"getting_started.faq": "FAQ",
"getting_started.documentation": "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.userguide": "Руководство",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Дополнительные", "home.column_settings.advanced": "Дополнительные",
"home.column_settings.basic": "Основные", "home.column_settings.basic": "Основные",
"home.column_settings.filter_regex": "Отфильтровать регулярным выражением", "home.column_settings.filter_regex": "Отфильтровать регулярным выражением",
@@ -160,6 +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.domain_blocks": "Скрытые домены", "navigation_bar.domain_blocks": "Скрытые домены",
"navigation_bar.edit_profile": "Изменить профиль", "navigation_bar.edit_profile": "Изменить профиль",
"navigation_bar.favourites": "Понравившееся", "navigation_bar.favourites": "Понравившееся",
@@ -169,9 +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.pins": "Закреплённые посты", "navigation_bar.pins": "Закреплённые посты",
"navigation_bar.preferences": "Опции", "navigation_bar.preferences": "Опции",
"navigation_bar.public_timeline": "Глобальная лента", "navigation_bar.public_timeline": "Глобальная лента",
"navigation_bar.security": "Security",
"notification.favourite": "{name} понравился Ваш статус", "notification.favourite": "{name} понравился Ваш статус",
"notification.follow": "{name} подписался(-лась) на Вас", "notification.follow": "{name} подписался(-лась) на Вас",
"notification.mention": "{name} упомянул(а) Вас", "notification.mention": "{name} упомянул(а) Вас",
@@ -263,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": "Пожаловаться",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Поиск", "tabs_bar.search": "Поиск",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.", "ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
"upload_area.title": "Перетащите сюда, чтобы загрузить", "upload_area.title": "Перетащите сюда, чтобы загрузить",
"upload_button.label": "Добавить медиаконтент", "upload_button.label": "Добавить медиаконтент",


+ 23
- 18
app/javascript/mastodon/locales/sk.json View File

@@ -1,7 +1,7 @@
{ {
"account.badges.bot": "Bot", "account.badges.bot": "Bot",
"account.block": "Blokovať @{name}",
"account.block_domain": "Ukryť všetko z {domain}",
"account.block": "Blokuj @{name}",
"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äť",
@@ -58,10 +58,9 @@
"column_header.pin": "Pripnúť", "column_header.pin": "Pripnúť",
"column_header.show_settings": "Ukáž nastavenia", "column_header.show_settings": "Ukáž nastavenia",
"column_header.unpin": "Odopnúť", "column_header.unpin": "Odopnúť",
"column_subheading.navigation": "Navigácia",
"column_subheading.settings": "Nastavenia", "column_subheading.settings": "Nastavenia",
"compose_form.direct_message_warning": "Tento príspevok bude videný výhradne iba spomenutými užívateľmi. Ber ale na vedomie že správci tvojej a všetkých iných zahrnutých instancií majú možnosť skontrolovať túto správu.", "compose_form.direct_message_warning": "Tento príspevok bude videný výhradne iba spomenutými užívateľmi. Ber ale na vedomie že správci tvojej a všetkých iných zahrnutých instancií majú možnosť skontrolovať túto správu.",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.direct_message_warning_learn_more": "Zistiť viac",
"compose_form.hashtag_warning": "Tento toot nebude zobrazený pod žiadným haštagom lebo nieje listovaný. Iba verejné tooty môžu byť nájdené podľa haštagu.", "compose_form.hashtag_warning": "Tento toot nebude zobrazený pod žiadným haštagom lebo nieje listovaný. Iba verejné tooty môžu byť nájdené podľa haštagu.",
"compose_form.lock_disclaimer": "Váš účet nie je zamknutý. Ktokoľvek ťa môže nasledovať a vidieť tvoje správy pre sledujúcich.", "compose_form.lock_disclaimer": "Váš účet nie je zamknutý. Ktokoľvek ťa môže nasledovať a vidieť tvoje správy pre sledujúcich.",
"compose_form.lock_disclaimer.lock": "zamknutý", "compose_form.lock_disclaimer.lock": "zamknutý",
@@ -84,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.",
@@ -108,15 +109,14 @@
"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.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.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íš 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.appsshort": "Aplikácie",
"getting_started.faq": "Časté otázky",
"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.userguide": "Používateľská príručka",
"getting_started.terms": "Podmienky prevozu",
"home.column_settings.advanced": "Pokročilé", "home.column_settings.advanced": "Pokročilé",
"home.column_settings.basic": "Základné", "home.column_settings.basic": "Základné",
"home.column_settings.filter_regex": "Filtrovať použitím regulárnych výrazov", "home.column_settings.filter_regex": "Filtrovať použitím regulárnych výrazov",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blokovaní užívatelia", "navigation_bar.blocks": "Blokovaní užívatelia",
"navigation_bar.community_timeline": "Lokálna časová os", "navigation_bar.community_timeline": "Lokálna časová os",
"navigation_bar.direct": "Súkromné správy", "navigation_bar.direct": "Súkromné správy",
"navigation_bar.discover": "Objavuj",
"navigation_bar.domain_blocks": "Skryté domény", "navigation_bar.domain_blocks": "Skryté domény",
"navigation_bar.edit_profile": "Upraviť profil", "navigation_bar.edit_profile": "Upraviť profil",
"navigation_bar.favourites": "Obľúbené", "navigation_bar.favourites": "Obľúbené",
@@ -167,11 +168,13 @@
"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ás",
"navigation_bar.logout": "Odhlás sa",
"navigation_bar.mutes": "Ignorovaní užívatelia", "navigation_bar.mutes": "Ignorovaní užívatelia",
"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",
"navigation_bar.security": "Zabezbečenie",
"notification.favourite": "{name} sa páči tvoj status", "notification.favourite": "{name} sa páči tvoj status",
"notification.follow": "{name} ťa začal/a následovať", "notification.follow": "{name} ťa začal/a následovať",
"notification.mention": "{name} ťa spomenul/a", "notification.mention": "{name} ťa spomenul/a",
@@ -187,7 +190,7 @@
"notifications.column_settings.reblog": "Boosty:", "notifications.column_settings.reblog": "Boosty:",
"notifications.column_settings.show": "Zobraziť v stĺpci", "notifications.column_settings.show": "Zobraziť v stĺpci",
"notifications.column_settings.sound": "Prehrať zvuk", "notifications.column_settings.sound": "Prehrať zvuk",
"notifications.group": "{count} notifications",
"notifications.group": "{count} oznámenia",
"onboarding.done": "Koniec", "onboarding.done": "Koniec",
"onboarding.next": "Ďalej", "onboarding.next": "Ďalej",
"onboarding.page_five.public_timelines": "Lokálna časová os zobrazuje verejné správy od všetkých na {domain}. Federovaná časová os zobrazuje verejné správy od všetkých tých, čo následujú užívatrľov {domain} z iných serverov. Tieto sú takzvané Verejné Časové Osi, výborná možnosť ako nájsť a spoznať nových ľudí.", "onboarding.page_five.public_timelines": "Lokálna časová os zobrazuje verejné správy od všetkých na {domain}. Federovaná časová os zobrazuje verejné správy od všetkých tých, čo následujú užívatrľov {domain} z iných serverov. Tieto sú takzvané Verejné Časové Osi, výborná možnosť ako nájsť a spoznať nových ľudí.",
@@ -245,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}",
@@ -263,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}",
@@ -280,10 +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.posts": "Toots",
"ui.beforeunload": "Čo máte rozpísané sa stratí, ak opustíte Mastodon.",
"upload_area.title": "Ťahaj a pusti pre nahratie",
"timeline.media": "Médiá",
"timeline.posts": "Príspevky",
"trends.count_by_accounts": "{count} {rawCount, viacerí, jeden {person} iní {people}} diskutujú",
"ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Mastodon.",
"upload_area.title": "Pretiahni a pusť 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",


+ 9
- 4
app/javascript/mastodon/locales/sl.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Pripni", "column_header.pin": "Pripni",
"column_header.show_settings": "Prikaži nastavitve", "column_header.show_settings": "Prikaži nastavitve",
"column_header.unpin": "Odpni", "column_header.unpin": "Odpni",
"column_subheading.navigation": "Navigacija",
"column_subheading.settings": "Nastavitve", "column_subheading.settings": "Nastavitve",
"compose_form.direct_message_warning": "Ta tut bo viden le vsem omenjenim uporabnikom.", "compose_form.direct_message_warning": "Ta tut bo viden le vsem omenjenim uporabnikom.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Tukaj ni ničesar! Da ga napolnite, napišite nekaj javnega ali pa ročno sledite uporabnikom iz drugih vozlišč", "empty_column.public": "Tukaj ni ničesar! Da ga napolnite, napišite nekaj javnega ali pa ročno sledite uporabnikom iz drugih vozlišč",
"follow_request.authorize": "Odobri", "follow_request.authorize": "Odobri",
"follow_request.reject": "Zavrni", "follow_request.reject": "Zavrni",
"getting_started.appsshort": "Aplikacije",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Prvi koraki", "getting_started.heading": "Prvi koraki",
"getting_started.open_source_notice": "Mastodon je odprtokodna programska oprema. V GitHubu na {github} lahko prispevate ali poročate o napakah.", "getting_started.open_source_notice": "Mastodon je odprtokodna programska oprema. V GitHubu na {github} lahko prispevate ali poročate o napakah.",
"getting_started.userguide": "Navodila za uporabo",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Napredno", "home.column_settings.advanced": "Napredno",
"home.column_settings.basic": "Osnovno", "home.column_settings.basic": "Osnovno",
"home.column_settings.filter_regex": "Filtrirajte z navadnimi izrazi", "home.column_settings.filter_regex": "Filtrirajte z navadnimi izrazi",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "Local timeline",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile", "navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favourites", "navigation_bar.favourites": "Favourites",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Logout", "navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "Muted users",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pripeti tuti", "navigation_bar.pins": "Pripeti tuti",
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status", "notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Poišči", "tabs_bar.search": "Poišči",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/sr-Latn.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Prikači", "column_header.pin": "Prikači",
"column_header.show_settings": "Prikaži postavke", "column_header.show_settings": "Prikaži postavke",
"column_header.unpin": "Otkači", "column_header.unpin": "Otkači",
"column_subheading.navigation": "Navigacija",
"column_subheading.settings": "Postavke", "column_subheading.settings": "Postavke",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Ovde nema ničega! Napišite nešto javno, ili nađite korisnike sa drugih instanci koje ćete zapratiti da popunite ovu prazninu", "empty_column.public": "Ovde nema ničega! Napišite nešto javno, ili nađite korisnike sa drugih instanci koje ćete zapratiti da popunite ovu prazninu",
"follow_request.authorize": "Odobri", "follow_request.authorize": "Odobri",
"follow_request.reject": "Odbij", "follow_request.reject": "Odbij",
"getting_started.appsshort": "Aplikacije",
"getting_started.faq": "ČPP",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Da počnete", "getting_started.heading": "Da počnete",
"getting_started.open_source_notice": "Mastodont je softver otvorenog koda. Možete mu doprineti ili prijaviti probleme preko GitHub-a na {github}.", "getting_started.open_source_notice": "Mastodont je softver otvorenog koda. Možete mu doprineti ili prijaviti probleme preko GitHub-a na {github}.",
"getting_started.userguide": "Korisničko uputstvo",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Napredno", "home.column_settings.advanced": "Napredno",
"home.column_settings.basic": "Osnovno", "home.column_settings.basic": "Osnovno",
"home.column_settings.filter_regex": "Filtriraj regularnim izrazima", "home.column_settings.filter_regex": "Filtriraj regularnim izrazima",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.blocks": "Blokirani korisnici",
"navigation_bar.community_timeline": "Lokalna lajna", "navigation_bar.community_timeline": "Lokalna lajna",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Izmeni profil", "navigation_bar.edit_profile": "Izmeni profil",
"navigation_bar.favourites": "Omiljeni", "navigation_bar.favourites": "Omiljeni",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Liste", "navigation_bar.lists": "Liste",
"navigation_bar.logout": "Odjava", "navigation_bar.logout": "Odjava",
"navigation_bar.mutes": "Ućutkani korisnici", "navigation_bar.mutes": "Ućutkani korisnici",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Prikačeni tutovi", "navigation_bar.pins": "Prikačeni tutovi",
"navigation_bar.preferences": "Podešavanja", "navigation_bar.preferences": "Podešavanja",
"navigation_bar.public_timeline": "Federisana lajna", "navigation_bar.public_timeline": "Federisana lajna",
"navigation_bar.security": "Security",
"notification.favourite": "{name} je stavio Vaš status kao omiljeni", "notification.favourite": "{name} je stavio Vaš status kao omiljeni",
"notification.follow": "{name} Vas je zapratio", "notification.follow": "{name} Vas je zapratio",
"notification.mention": "{name} Vas je pomenuo", "notification.mention": "{name} Vas je pomenuo",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/sr.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Прикачи", "column_header.pin": "Прикачи",
"column_header.show_settings": "Прикажи поставке", "column_header.show_settings": "Прикажи поставке",
"column_header.unpin": "Откачи", "column_header.unpin": "Откачи",
"column_subheading.navigation": "Навигација",
"column_subheading.settings": "Поставке", "column_subheading.settings": "Поставке",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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": "Угради овај статус на Ваш веб сајт копирањем кода испод.",
@@ -112,11 +113,10 @@
"empty_column.public": "Овде нема ничега! Напишите нешто јавно, или нађите кориснике са других инстанци које ћете запратити да попуните ову празнину", "empty_column.public": "Овде нема ничега! Напишите нешто јавно, или нађите кориснике са других инстанци које ћете запратити да попуните ову празнину",
"follow_request.authorize": "Одобри", "follow_request.authorize": "Одобри",
"follow_request.reject": "Одбиј", "follow_request.reject": "Одбиј",
"getting_started.appsshort": "Апликације",
"getting_started.faq": "ЧПП",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Да почнете", "getting_started.heading": "Да почнете",
"getting_started.open_source_notice": "Мастoдонт је софтвер отвореног кода. Можете му допринети или пријавити проблеме преко GitHub-а на {github}.", "getting_started.open_source_notice": "Мастoдонт је софтвер отвореног кода. Можете му допринети или пријавити проблеме преко GitHub-а на {github}.",
"getting_started.userguide": "Корисничко упутство",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Напредно", "home.column_settings.advanced": "Напредно",
"home.column_settings.basic": "Основно", "home.column_settings.basic": "Основно",
"home.column_settings.filter_regex": "Филтрирај регуларним изразима", "home.column_settings.filter_regex": "Филтрирај регуларним изразима",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Блокирани корисници", "navigation_bar.blocks": "Блокирани корисници",
"navigation_bar.community_timeline": "Локална лајна", "navigation_bar.community_timeline": "Локална лајна",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Измени профил", "navigation_bar.edit_profile": "Измени профил",
"navigation_bar.favourites": "Омиљени", "navigation_bar.favourites": "Омиљени",
@@ -169,9 +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.pins": "Прикачени тутови", "navigation_bar.pins": "Прикачени тутови",
"navigation_bar.preferences": "Подешавања", "navigation_bar.preferences": "Подешавања",
"navigation_bar.public_timeline": "Федерисана лајна", "navigation_bar.public_timeline": "Федерисана лајна",
"navigation_bar.security": "Security",
"notification.favourite": "{name} је ставио Ваш статус као омиљени", "notification.favourite": "{name} је ставио Ваш статус као омиљени",
"notification.follow": "{name} Вас је запратио", "notification.follow": "{name} Вас је запратио",
"notification.mention": "{name} Вас је поменуо", "notification.mention": "{name} Вас је поменуо",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"ui.beforeunload": "Ако напустите Мастодонт, изгубићете написани нацрт.", "ui.beforeunload": "Ако напустите Мастодонт, изгубићете написани нацрт.",
"upload_area.title": "Превуците овде да отпремите", "upload_area.title": "Превуците овде да отпремите",
"upload_button.label": "Додај мултимедију", "upload_button.label": "Додај мултимедију",


+ 12
- 7
app/javascript/mastodon/locales/sv.json View File

@@ -58,9 +58,8 @@
"column_header.pin": "Fäst", "column_header.pin": "Fäst",
"column_header.show_settings": "Visa inställningar", "column_header.show_settings": "Visa inställningar",
"column_header.unpin": "Ångra fäst", "column_header.unpin": "Ångra fäst",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Inställningar", "column_subheading.settings": "Inställningar",
"compose_form.direct_message_warning": "Denna toot kommer endast vara synlig för nämnda användare.",
"compose_form.direct_message_warning": "Denna toot kommer endast att skickas nämnda nämnda användare.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.hashtag_warning": "Denna toot kommer inte att listas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.", "compose_form.hashtag_warning": "Denna toot kommer inte att listas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.",
"compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vemsomhelst kan följa dig och även se dina inlägg skrivna för endast dina följare.", "compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vemsomhelst kan följa dig och även se dina inlägg skrivna för endast dina följare.",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Det finns inget här! Skriv något offentligt, eller följ manuellt användarna från andra instanser för att fylla på det", "empty_column.public": "Det finns inget här! Skriv något offentligt, eller följ manuellt användarna från andra instanser för att fylla på det",
"follow_request.authorize": "Godkänn", "follow_request.authorize": "Godkänn",
"follow_request.reject": "Avvisa", "follow_request.reject": "Avvisa",
"getting_started.appsshort": "Appar",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Kom igång", "getting_started.heading": "Kom igång",
"getting_started.open_source_notice": "Mastodon är programvara med öppen källkod. Du kan bidra eller rapportera problem via GitHub på {github}.", "getting_started.open_source_notice": "Mastodon är programvara med öppen källkod. Du kan bidra eller rapportera problem via GitHub på {github}.",
"getting_started.userguide": "Användarguide",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Avancerad", "home.column_settings.advanced": "Avancerad",
"home.column_settings.basic": "Grundläggande", "home.column_settings.basic": "Grundläggande",
"home.column_settings.filter_regex": "Filtrera ut med regelbundna uttryck", "home.column_settings.filter_regex": "Filtrera ut med regelbundna uttryck",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blockerade användare", "navigation_bar.blocks": "Blockerade användare",
"navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.community_timeline": "Lokal tidslinje",
"navigation_bar.direct": "Direktmeddelanden", "navigation_bar.direct": "Direktmeddelanden",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Dolda domäner", "navigation_bar.domain_blocks": "Dolda domäner",
"navigation_bar.edit_profile": "Redigera profil", "navigation_bar.edit_profile": "Redigera profil",
"navigation_bar.favourites": "Favoriter", "navigation_bar.favourites": "Favoriter",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Listor", "navigation_bar.lists": "Listor",
"navigation_bar.logout": "Logga ut", "navigation_bar.logout": "Logga ut",
"navigation_bar.mutes": "Tystade användare", "navigation_bar.mutes": "Tystade användare",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Nålade inlägg (toots)", "navigation_bar.pins": "Nålade inlägg (toots)",
"navigation_bar.preferences": "Inställningar", "navigation_bar.preferences": "Inställningar",
"navigation_bar.public_timeline": "Förenad tidslinje", "navigation_bar.public_timeline": "Förenad tidslinje",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favoriserade din status", "notification.favourite": "{name} favoriserade din status",
"notification.follow": "{name} följer dig", "notification.follow": "{name} följer dig",
"notification.mention": "{name} nämnde dig", "notification.mention": "{name} nämnde dig",
@@ -263,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}",
@@ -282,17 +286,18 @@
"tabs_bar.search": "Sök", "tabs_bar.search": "Sök",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",
"upload_form.description": "Beskriv för synskadade", "upload_form.description": "Beskriv för synskadade",
"upload_form.focus": "Beskär", "upload_form.focus": "Beskär",
"upload_form.undo": "Ångra",
"upload_form.undo": "Ta bort",
"upload_progress.label": "Laddar upp...", "upload_progress.label": "Laddar upp...",
"video.close": "Stäng video", "video.close": "Stäng video",
"video.exit_fullscreen": "Stäng helskärm", "video.exit_fullscreen": "Stäng helskärm",
"video.expand": "Expandera video", "video.expand": "Expandera video",
"video.fullscreen": "Helskärm",
"video.fullscreen": "Fullskärm",
"video.hide": "Dölj video", "video.hide": "Dölj video",
"video.mute": "Stäng av ljud", "video.mute": "Stäng av ljud",
"video.pause": "Pause", "video.pause": "Pause",


+ 9
- 4
app/javascript/mastodon/locales/te.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Pin", "column_header.pin": "Pin",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin", "column_header.unpin": "Unpin",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Settings", "column_subheading.settings": "Settings",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"follow_request.authorize": "Authorize", "follow_request.authorize": "Authorize",
"follow_request.reject": "Reject", "follow_request.reject": "Reject",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Getting started", "getting_started.heading": "Getting started",
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.userguide": "User Guide",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Advanced", "home.column_settings.advanced": "Advanced",
"home.column_settings.basic": "Basic", "home.column_settings.basic": "Basic",
"home.column_settings.filter_regex": "Filter out by regular expressions", "home.column_settings.filter_regex": "Filter out by regular expressions",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "Local timeline",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile", "navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favourites", "navigation_bar.favourites": "Favourites",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Logout", "navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "Muted users",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status", "notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/th.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Pin", "column_header.pin": "Pin",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin", "column_header.unpin": "Unpin",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Settings", "column_subheading.settings": "Settings",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"follow_request.authorize": "Authorize", "follow_request.authorize": "Authorize",
"follow_request.reject": "Reject", "follow_request.reject": "Reject",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Getting started", "getting_started.heading": "Getting started",
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.userguide": "User Guide",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Advanced", "home.column_settings.advanced": "Advanced",
"home.column_settings.basic": "Basic", "home.column_settings.basic": "Basic",
"home.column_settings.filter_regex": "Filter out by regular expressions", "home.column_settings.filter_regex": "Filter out by regular expressions",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "Local timeline",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile", "navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favourites", "navigation_bar.favourites": "Favourites",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Logout", "navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "Muted users",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status", "notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/tr.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Pin", "column_header.pin": "Pin",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin", "column_header.unpin": "Unpin",
"column_subheading.navigation": "Navigasyon",
"column_subheading.settings": "Ayarlar", "column_subheading.settings": "Ayarlar",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Burada hiçbir gönderi yok! Herkese açık bir şeyler yazın, veya diğer sunucudaki insanları takip ederek bu alanın dolmasını sağlayın", "empty_column.public": "Burada hiçbir gönderi yok! Herkese açık bir şeyler yazın, veya diğer sunucudaki insanları takip ederek bu alanın dolmasını sağlayın",
"follow_request.authorize": "Yetkilendir", "follow_request.authorize": "Yetkilendir",
"follow_request.reject": "Reddet", "follow_request.reject": "Reddet",
"getting_started.appsshort": "Apps",
"getting_started.faq": "FAQ",
"getting_started.documentation": "Documentation",
"getting_started.heading": "Başlangıç", "getting_started.heading": "Başlangıç",
"getting_started.open_source_notice": "Mastodon açık kaynaklı bir yazılımdır. Github {github}. {apps} üzerinden katkıda bulunabilir, hata raporlayabilirsiniz.", "getting_started.open_source_notice": "Mastodon açık kaynaklı bir yazılımdır. Github {github}. {apps} üzerinden katkıda bulunabilir, hata raporlayabilirsiniz.",
"getting_started.userguide": "User Guide",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Gelişmiş", "home.column_settings.advanced": "Gelişmiş",
"home.column_settings.basic": "Temel", "home.column_settings.basic": "Temel",
"home.column_settings.filter_regex": "Regex kullanarak filtrele", "home.column_settings.filter_regex": "Regex kullanarak filtrele",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Engellenen kullanıcılar", "navigation_bar.blocks": "Engellenen kullanıcılar",
"navigation_bar.community_timeline": "Yerel zaman tüneli", "navigation_bar.community_timeline": "Yerel zaman tüneli",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Profili düzenle", "navigation_bar.edit_profile": "Profili düzenle",
"navigation_bar.favourites": "Favoriler", "navigation_bar.favourites": "Favoriler",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Çıkış", "navigation_bar.logout": "Çıkış",
"navigation_bar.mutes": "Sessize alınmış kullanıcılar", "navigation_bar.mutes": "Sessize alınmış kullanıcılar",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Tercihler", "navigation_bar.preferences": "Tercihler",
"navigation_bar.public_timeline": "Federe zaman tüneli", "navigation_bar.public_timeline": "Federe zaman tüneli",
"navigation_bar.security": "Security",
"notification.favourite": "{name} senin durumunu favorilere ekledi", "notification.favourite": "{name} senin durumunu favorilere ekledi",
"notification.follow": "{name} seni takip ediyor", "notification.follow": "{name} seni takip ediyor",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
@@ -263,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",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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",


+ 9
- 4
app/javascript/mastodon/locales/uk.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "Pin", "column_header.pin": "Pin",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin", "column_header.unpin": "Unpin",
"column_subheading.navigation": "Навігація",
"column_subheading.settings": "Налаштування", "column_subheading.settings": "Налаштування",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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.",
@@ -112,11 +113,10 @@
"empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку.", "empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку.",
"follow_request.authorize": "Авторизувати", "follow_request.authorize": "Авторизувати",
"follow_request.reject": "Відмовити", "follow_request.reject": "Відмовити",
"getting_started.appsshort": "Додатки",
"getting_started.faq": "FAQ",
"getting_started.documentation": "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.userguide": "Посібник",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "Додаткові", "home.column_settings.advanced": "Додаткові",
"home.column_settings.basic": "Основні", "home.column_settings.basic": "Основні",
"home.column_settings.filter_regex": "Відфільтрувати регулярним виразом", "home.column_settings.filter_regex": "Відфільтрувати регулярним виразом",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "Заблоковані користувачі", "navigation_bar.blocks": "Заблоковані користувачі",
"navigation_bar.community_timeline": "Локальна стрічка", "navigation_bar.community_timeline": "Локальна стрічка",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Редагувати профіль", "navigation_bar.edit_profile": "Редагувати профіль",
"navigation_bar.favourites": "Вподобане", "navigation_bar.favourites": "Вподобане",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "Lists", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Вийти", "navigation_bar.logout": "Вийти",
"navigation_bar.mutes": "Заглушені користувачі", "navigation_bar.mutes": "Заглушені користувачі",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Налаштування", "navigation_bar.preferences": "Налаштування",
"navigation_bar.public_timeline": "Глобальна стрічка", "navigation_bar.public_timeline": "Глобальна стрічка",
"navigation_bar.security": "Security",
"notification.favourite": "{name} сподобався ваш допис", "notification.favourite": "{name} сподобався ваш допис",
"notification.follow": "{name} підписався(-лась) на Вас", "notification.follow": "{name} підписався(-лась) на Вас",
"notification.mention": "{name} згадав(-ла) Вас", "notification.mention": "{name} згадав(-ла) Вас",
@@ -263,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": "Поскаржитися",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"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": "Додати медіаконтент",


+ 9
- 4
app/javascript/mastodon/locales/zh-CN.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "固定", "column_header.pin": "固定",
"column_header.show_settings": "显示设置", "column_header.show_settings": "显示设置",
"column_header.unpin": "取消固定", "column_header.unpin": "取消固定",
"column_subheading.navigation": "导航",
"column_subheading.settings": "设置", "column_subheading.settings": "设置",
"compose_form.direct_message_warning": "这条嘟文仅对所有被提及的用户可见。", "compose_form.direct_message_warning": "这条嘟文仅对所有被提及的用户可见。",
"compose_form.direct_message_warning_learn_more": "了解详情", "compose_form.direct_message_warning_learn_more": "了解详情",
@@ -84,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": "要在你的网站上嵌入这条嘟文,请复制以下代码。",
@@ -112,11 +113,10 @@
"empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户后,这里就会有嘟文出现了哦!", "empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户后,这里就会有嘟文出现了哦!",
"follow_request.authorize": "同意", "follow_request.authorize": "同意",
"follow_request.reject": "拒绝", "follow_request.reject": "拒绝",
"getting_started.appsshort": "应用",
"getting_started.faq": "常见问题",
"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.userguide": "用户指南",
"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)过滤",
@@ -160,6 +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": "发现",
"navigation_bar.domain_blocks": "已屏蔽的网站", "navigation_bar.domain_blocks": "已屏蔽的网站",
"navigation_bar.edit_profile": "修改个人资料", "navigation_bar.edit_profile": "修改个人资料",
"navigation_bar.favourites": "收藏的内容", "navigation_bar.favourites": "收藏的内容",
@@ -169,9 +170,11 @@
"navigation_bar.lists": "列表", "navigation_bar.lists": "列表",
"navigation_bar.logout": "注销", "navigation_bar.logout": "注销",
"navigation_bar.mutes": "已隐藏的用户", "navigation_bar.mutes": "已隐藏的用户",
"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": "安全",
"notification.favourite": "{name} 收藏了你的嘟文", "notification.favourite": "{name} 收藏了你的嘟文",
"notification.follow": "{name} 开始关注你", "notification.follow": "{name} 开始关注你",
"notification.mention": "{name} 提及你", "notification.mention": "{name} 提及你",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "搜索", "tabs_bar.search": "搜索",
"timeline.media": "媒体", "timeline.media": "媒体",
"timeline.posts": "嘟文", "timeline.posts": "嘟文",
"trends.count_by_accounts": "{count} 人正在讨论",
"ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会被丢弃。", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会被丢弃。",
"upload_area.title": "将文件拖放到此处开始上传", "upload_area.title": "将文件拖放到此处开始上传",
"upload_button.label": "上传媒体文件", "upload_button.label": "上传媒体文件",


+ 20
- 15
app/javascript/mastodon/locales/zh-HK.json View File

@@ -58,10 +58,9 @@
"column_header.pin": "固定", "column_header.pin": "固定",
"column_header.show_settings": "顯示設定", "column_header.show_settings": "顯示設定",
"column_header.unpin": "取下", "column_header.unpin": "取下",
"column_subheading.navigation": "瀏覽",
"column_subheading.settings": "設定", "column_subheading.settings": "設定",
"compose_form.direct_message_warning": "這文章只有被提及的用戶才可以看到。", "compose_form.direct_message_warning": "這文章只有被提及的用戶才可以看到。",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.direct_message_warning_learn_more": "了解更多",
"compose_form.hashtag_warning": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。", "compose_form.hashtag_warning": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。",
"compose_form.lock_disclaimer": "你的用戶狀態為「{locked}」,任何人都能立即關注你,然後看到「只有關注者能看」的文章。", "compose_form.lock_disclaimer": "你的用戶狀態為「{locked}」,任何人都能立即關注你,然後看到「只有關注者能看」的文章。",
"compose_form.lock_disclaimer.lock": "公共", "compose_form.lock_disclaimer.lock": "公共",
@@ -84,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": "要內嵌此文章,請將以下代碼貼進你的網站。",
@@ -94,7 +95,7 @@
"emoji_button.food": "飲飲食食", "emoji_button.food": "飲飲食食",
"emoji_button.label": "加入表情符號", "emoji_button.label": "加入表情符號",
"emoji_button.nature": "自然", "emoji_button.nature": "自然",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.not_found": "沒有表情符號!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物品", "emoji_button.objects": "物品",
"emoji_button.people": "人物", "emoji_button.people": "人物",
"emoji_button.recent": "常用", "emoji_button.recent": "常用",
@@ -112,11 +113,10 @@
"empty_column.public": "跨站時間軸暫時沒有內容!快寫一些公共的文章,或者關注另一些服務站的用戶吧!你和本站、友站的交流,將決定這裏出現的內容。", "empty_column.public": "跨站時間軸暫時沒有內容!快寫一些公共的文章,或者關注另一些服務站的用戶吧!你和本站、友站的交流,將決定這裏出現的內容。",
"follow_request.authorize": "批准", "follow_request.authorize": "批准",
"follow_request.reject": "拒絕", "follow_request.reject": "拒絕",
"getting_started.appsshort": "手機應用",
"getting_started.faq": "常見問題",
"getting_started.documentation": "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.userguide": "使用指南",
"getting_started.terms": "服務條款",
"home.column_settings.advanced": "進階", "home.column_settings.advanced": "進階",
"home.column_settings.basic": "基本", "home.column_settings.basic": "基本",
"home.column_settings.filter_regex": "使用正規表達式 (regular expression) 過濾", "home.column_settings.filter_regex": "使用正規表達式 (regular expression) 過濾",
@@ -160,6 +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": "探索",
"navigation_bar.domain_blocks": "隱藏的服務站", "navigation_bar.domain_blocks": "隱藏的服務站",
"navigation_bar.edit_profile": "修改個人資料", "navigation_bar.edit_profile": "修改個人資料",
"navigation_bar.favourites": "最愛的內容", "navigation_bar.favourites": "最愛的內容",
@@ -169,9 +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.pins": "置頂文章", "navigation_bar.pins": "置頂文章",
"navigation_bar.preferences": "偏好設定", "navigation_bar.preferences": "偏好設定",
"navigation_bar.public_timeline": "跨站時間軸", "navigation_bar.public_timeline": "跨站時間軸",
"navigation_bar.security": "安全",
"notification.favourite": "{name} 收藏了你的文章", "notification.favourite": "{name} 收藏了你的文章",
"notification.follow": "{name} 開始關注你", "notification.follow": "{name} 開始關注你",
"notification.mention": "{name} 提及你", "notification.mention": "{name} 提及你",
@@ -187,20 +190,20 @@
"notifications.column_settings.reblog": "轉推你的文章:", "notifications.column_settings.reblog": "轉推你的文章:",
"notifications.column_settings.show": "在通知欄顯示", "notifications.column_settings.show": "在通知欄顯示",
"notifications.column_settings.sound": "播放音效", "notifications.column_settings.sound": "播放音效",
"notifications.group": "{count} notifications",
"notifications.group": "{count} 條通知",
"onboarding.done": "開始使用", "onboarding.done": "開始使用",
"onboarding.next": "繼續", "onboarding.next": "繼續",
"onboarding.page_five.public_timelines": "「本站時間軸」顯示在 {domain} 各用戶的公開文章。「跨站時間軸」顯示在 {domain} 各人關注的所有用戶(包括其他服務站)的公開文章。這些都是「公共時間軸」,是認識新朋友的好地方。", "onboarding.page_five.public_timelines": "「本站時間軸」顯示在 {domain} 各用戶的公開文章。「跨站時間軸」顯示在 {domain} 各人關注的所有用戶(包括其他服務站)的公開文章。這些都是「公共時間軸」,是認識新朋友的好地方。",
"onboarding.page_four.home": "「主頁」顯示你所關注用戶的文章",
"onboarding.page_four.home": "「主頁」顯示你所關注用戶的文章",
"onboarding.page_four.notifications": "「通知」欄顯示你和其他人的互動。", "onboarding.page_four.notifications": "「通知」欄顯示你和其他人的互動。",
"onboarding.page_one.federation": "Mastodon(萬象社交)是由一批獨立網站組成的龐大網絡,我們將這些獨立又互連網站稱為「服務站」(instance)",
"onboarding.page_one.federation": "Mastodon(萬象社交)是由一批獨立網站組成的龐大網絡,我們將這些獨立又互連網站稱為「服務站」(instance)",
"onboarding.page_one.full_handle": "你的帳號全名", "onboarding.page_one.full_handle": "你的帳號全名",
"onboarding.page_one.handle_hint": "朋友可以從這個帳號全名找到你",
"onboarding.page_one.welcome": "歡迎使用 Mastodon(萬象社交)",
"onboarding.page_six.admin": "你服務站的管理員是{admin}",
"onboarding.page_one.handle_hint": "朋友可以從這個帳號全名找到你",
"onboarding.page_one.welcome": "歡迎使用 Mastodon(萬象社交)",
"onboarding.page_six.admin": "你服務站的管理員是{admin}",
"onboarding.page_six.almost_done": "差不多了……", "onboarding.page_six.almost_done": "差不多了……",
"onboarding.page_six.appetoot": "手機,你好!", "onboarding.page_six.appetoot": "手機,你好!",
"onboarding.page_six.apps_available": "目前支援 Mastodon 的{apps}已經支援 iOS、Android 和其他系統平台",
"onboarding.page_six.apps_available": "目前支援 Mastodon 的{apps}已經支援 iOS、Android 和其他系統平台",
"onboarding.page_six.github": "Mastodon (萬象)是一個開源的程式,你可以在 {github} 上回報問題、提議新功能、或者參與開發貢獻。", "onboarding.page_six.github": "Mastodon (萬象)是一個開源的程式,你可以在 {github} 上回報問題、提議新功能、或者參與開發貢獻。",
"onboarding.page_six.guidelines": "社群守則", "onboarding.page_six.guidelines": "社群守則",
"onboarding.page_six.read_guidelines": "請留意閱讀 {domain} 的 {guidelines}!", "onboarding.page_six.read_guidelines": "請留意閱讀 {domain} 的 {guidelines}!",
@@ -237,7 +240,7 @@
"search_popout.tips.full_text": "輸入簡單的文字,搜索由你發放、收藏、轉推和提及你的文章,以及符合的用戶名稱,帳號名稱和標籤。", "search_popout.tips.full_text": "輸入簡單的文字,搜索由你發放、收藏、轉推和提及你的文章,以及符合的用戶名稱,帳號名稱和標籤。",
"search_popout.tips.hashtag": "標籤", "search_popout.tips.hashtag": "標籤",
"search_popout.tips.status": "文章", "search_popout.tips.status": "文章",
"search_popout.tips.text": "輸入簡單的文字,搜索符合的用戶名稱,帳號名稱和標籤",
"search_popout.tips.text": "輸入簡單的文字,搜索符合的用戶名稱,帳號名稱和標籤",
"search_popout.tips.user": "用戶", "search_popout.tips.user": "用戶",
"search_results.accounts": "使用者", "search_results.accounts": "使用者",
"search_results.hashtags": "標籤", "search_results.hashtags": "標籤",
@@ -263,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}",
@@ -281,7 +285,8 @@
"tabs_bar.notifications": "通知", "tabs_bar.notifications": "通知",
"tabs_bar.search": "搜尋", "tabs_bar.search": "搜尋",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots",
"timeline.posts": "文章",
"trends.count_by_accounts": "{count} 位用戶在討論",
"ui.beforeunload": "如果你現在離開 Mastodon,你的草稿內容將會被丟棄。", "ui.beforeunload": "如果你現在離開 Mastodon,你的草稿內容將會被丟棄。",
"upload_area.title": "將檔案拖放至此上載", "upload_area.title": "將檔案拖放至此上載",
"upload_button.label": "上載媒體檔案", "upload_button.label": "上載媒體檔案",


+ 9
- 4
app/javascript/mastodon/locales/zh-TW.json View File

@@ -58,7 +58,6 @@
"column_header.pin": "固定", "column_header.pin": "固定",
"column_header.show_settings": "顯示設定", "column_header.show_settings": "顯示設定",
"column_header.unpin": "取下", "column_header.unpin": "取下",
"column_subheading.navigation": "瀏覽",
"column_subheading.settings": "設定", "column_subheading.settings": "設定",
"compose_form.direct_message_warning": "此則推文只會被所有提到的使用者看見。", "compose_form.direct_message_warning": "此則推文只會被所有提到的使用者看見。",
"compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.direct_message_warning_learn_more": "Learn more",
@@ -84,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": "要內嵌此貼文,請將以下代碼貼進你的網站。",
@@ -112,11 +113,10 @@
"empty_column.public": "這裡什麼都沒有!公開寫些什麼,或是關注其他副本的使用者。", "empty_column.public": "這裡什麼都沒有!公開寫些什麼,或是關注其他副本的使用者。",
"follow_request.authorize": "授權", "follow_request.authorize": "授權",
"follow_request.reject": "拒絕", "follow_request.reject": "拒絕",
"getting_started.appsshort": "應用程式",
"getting_started.faq": "常見問答",
"getting_started.documentation": "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.userguide": "使用者指南",
"getting_started.terms": "Terms of service",
"home.column_settings.advanced": "進階", "home.column_settings.advanced": "進階",
"home.column_settings.basic": "基本", "home.column_settings.basic": "基本",
"home.column_settings.filter_regex": "以正規表示式過濾", "home.column_settings.filter_regex": "以正規表示式過濾",
@@ -160,6 +160,7 @@
"navigation_bar.blocks": "封鎖的使用者", "navigation_bar.blocks": "封鎖的使用者",
"navigation_bar.community_timeline": "本地時間軸", "navigation_bar.community_timeline": "本地時間軸",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "隱藏的域名", "navigation_bar.domain_blocks": "隱藏的域名",
"navigation_bar.edit_profile": "編輯用者資訊", "navigation_bar.edit_profile": "編輯用者資訊",
"navigation_bar.favourites": "最愛", "navigation_bar.favourites": "最愛",
@@ -169,9 +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.pins": "置頂貼文", "navigation_bar.pins": "置頂貼文",
"navigation_bar.preferences": "偏好設定", "navigation_bar.preferences": "偏好設定",
"navigation_bar.public_timeline": "聯盟時間軸", "navigation_bar.public_timeline": "聯盟時間軸",
"navigation_bar.security": "Security",
"notification.favourite": "{name}收藏了你的狀態", "notification.favourite": "{name}收藏了你的狀態",
"notification.follow": "{name}關注了你", "notification.follow": "{name}關注了你",
"notification.mention": "{name}提到了你", "notification.mention": "{name}提到了你",
@@ -263,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}",
@@ -282,6 +286,7 @@
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"timeline.media": "Media", "timeline.media": "Media",
"timeline.posts": "Toots", "timeline.posts": "Toots",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"ui.beforeunload": "如果離開 Mastodon,你的草稿將會不見。", "ui.beforeunload": "如果離開 Mastodon,你的草稿將會不見。",
"upload_area.title": "拖放來上傳", "upload_area.title": "拖放來上傳",
"upload_button.label": "增加媒體", "upload_button.label": "增加媒體",


+ 38
- 1
app/javascript/mastodon/reducers/compose.js View File

@@ -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,
@@ -44,6 +46,7 @@ const initialState = ImmutableMap({
privacy: null, privacy: null,
text: '', text: '',
focusDate: null, focusDate: null,
caretPosition: null,
preselectDate: null, preselectDate: null,
in_reply_to: null, in_reply_to: null,
is_composing: false, is_composing: false,
@@ -91,7 +94,6 @@ function appendMedia(state, media) {
map.update('media_attachments', list => list.push(media)); map.update('media_attachments', list => list.push(media));
map.set('is_uploading', false); map.set('is_uploading', false);
map.set('resetFileKey', Math.floor((Math.random() * 0x10000))); map.set('resetFileKey', Math.floor((Math.random() * 0x10000)));
map.set('focusDate', new Date());
map.set('idempotencyKey', uuid()); map.set('idempotencyKey', uuid());


if (prevSize === 0 && (state.get('default_sensitive') || state.get('spoiler'))) { if (prevSize === 0 && (state.get('default_sensitive') || state.get('spoiler'))) {
@@ -119,6 +121,7 @@ const insertSuggestion = (state, position, token, completion) => {
map.set('suggestion_token', null); map.set('suggestion_token', null);
map.update('suggestions', ImmutableList(), list => list.clear()); map.update('suggestions', ImmutableList(), list => list.clear());
map.set('focusDate', new Date()); map.set('focusDate', new Date());
map.set('caretPosition', position + completion.length + 1);
map.set('idempotencyKey', uuid()); map.set('idempotencyKey', uuid());
}); });
}; };
@@ -142,6 +145,7 @@ const insertEmoji = (state, position, emojiData, needsSpace) => {
return state.merge({ return state.merge({
text: `${oldText.slice(0, position)}${emoji} ${oldText.slice(position)}`, text: `${oldText.slice(0, position)}${emoji} ${oldText.slice(position)}`,
focusDate: new Date(), focusDate: new Date(),
caretPosition: position + emoji.length + 1,
idempotencyKey: uuid(), idempotencyKey: uuid(),
}); });
}; };
@@ -168,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:
@@ -216,6 +232,7 @@ export default function compose(state = initialState, action) {
map.set('text', statusToTextMentions(state, action.status)); map.set('text', statusToTextMentions(state, action.status));
map.set('privacy', privacyPreference(action.status.get('visibility'), state.get('default_privacy'))); map.set('privacy', privacyPreference(action.status.get('visibility'), state.get('default_privacy')));
map.set('focusDate', new Date()); map.set('focusDate', new Date());
map.set('caretPosition', null);
map.set('preselectDate', new Date()); map.set('preselectDate', new Date());
map.set('idempotencyKey', uuid()); map.set('idempotencyKey', uuid());


@@ -259,6 +276,7 @@ export default function compose(state = initialState, action) {
return state.withMutations(map => { return state.withMutations(map => {
map.update('text', text => [text.trim(), `@${action.account.get('acct')} `].filter((str) => str.length !== 0).join(' ')); map.update('text', text => [text.trim(), `@${action.account.get('acct')} `].filter((str) => str.length !== 0).join(' '));
map.set('focusDate', new Date()); map.set('focusDate', new Date());
map.set('caretPosition', null);
map.set('idempotencyKey', uuid()); map.set('idempotencyKey', uuid());
}); });
case COMPOSE_DIRECT: case COMPOSE_DIRECT:
@@ -266,6 +284,7 @@ export default function compose(state = initialState, action) {
map.update('text', text => [text.trim(), `@${action.account.get('acct')} `].filter((str) => str.length !== 0).join(' ')); map.update('text', text => [text.trim(), `@${action.account.get('acct')} `].filter((str) => str.length !== 0).join(' '));
map.set('privacy', 'direct'); map.set('privacy', 'direct');
map.set('focusDate', new Date()); map.set('focusDate', new Date());
map.set('caretPosition', null);
map.set('idempotencyKey', uuid()); map.set('idempotencyKey', uuid());
}); });
case COMPOSE_SUGGESTIONS_CLEAR: case COMPOSE_SUGGESTIONS_CLEAR:
@@ -296,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;
} }


+ 60
- 35
app/javascript/mastodon/reducers/contexts.js View File

@@ -3,38 +3,63 @@ import {
ACCOUNT_MUTE_SUCCESS, ACCOUNT_MUTE_SUCCESS,
} from '../actions/accounts'; } from '../actions/accounts';
import { CONTEXT_FETCH_SUCCESS } from '../actions/statuses'; import { CONTEXT_FETCH_SUCCESS } from '../actions/statuses';
import { TIMELINE_DELETE, TIMELINE_CONTEXT_UPDATE } from '../actions/timelines';
import { TIMELINE_DELETE, TIMELINE_UPDATE } from '../actions/timelines';
import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
import compareId from '../compare_id';


const initialState = ImmutableMap({ const initialState = ImmutableMap({
ancestors: ImmutableMap(),
descendants: ImmutableMap(),
inReplyTos: ImmutableMap(),
replies: ImmutableMap(),
}); });


const normalizeContext = (state, id, ancestors, descendants) => {
const ancestorsIds = ImmutableList(ancestors.map(ancestor => ancestor.id));
const descendantsIds = ImmutableList(descendants.map(descendant => descendant.id));
const normalizeContext = (immutableState, id, ancestors, descendants) => immutableState.withMutations(state => {
state.update('inReplyTos', immutableAncestors => immutableAncestors.withMutations(inReplyTos => {
state.update('replies', immutableDescendants => immutableDescendants.withMutations(replies => {
function addReply({ id, in_reply_to_id }) {
if (in_reply_to_id && !inReplyTos.has(id)) {


return state.withMutations(map => {
map.setIn(['ancestors', id], ancestorsIds);
map.setIn(['descendants', id], descendantsIds);
});
};
replies.update(in_reply_to_id, ImmutableList(), siblings => {
const index = siblings.findLastIndex(sibling => compareId(sibling, id) < 0);
return siblings.insert(index + 1, id);
});

inReplyTos.set(id, in_reply_to_id);
}
}

// We know in_reply_to_id of statuses but `id` itself.
// So we assume that the status of the id replies to last ancestors.

ancestors.forEach(addReply);

if (ancestors[0]) {
addReply({ id, in_reply_to_id: ancestors[ancestors.length - 1].id });
}

descendants.forEach(addReply);
}));
}));
});


const deleteFromContexts = (immutableState, ids) => immutableState.withMutations(state => { const deleteFromContexts = (immutableState, ids) => immutableState.withMutations(state => {
state.update('ancestors', immutableAncestors => immutableAncestors.withMutations(ancestors => {
state.update('descendants', immutableDescendants => immutableDescendants.withMutations(descendants => {
state.update('inReplyTos', immutableAncestors => immutableAncestors.withMutations(inReplyTos => {
state.update('replies', immutableDescendants => immutableDescendants.withMutations(replies => {
ids.forEach(id => { ids.forEach(id => {
descendants.get(id, ImmutableList()).forEach(descendantId => {
ancestors.update(descendantId, ImmutableList(), list => list.filterNot(itemId => itemId === id));
});
const inReplyToIdOfId = inReplyTos.get(id);
const repliesOfId = replies.get(id);
const siblings = replies.get(inReplyToIdOfId);

if (siblings) {
replies.set(inReplyToIdOfId, siblings.filterNot(sibling => sibling === id));
}


ancestors.get(id, ImmutableList()).forEach(ancestorId => {
descendants.update(ancestorId, ImmutableList(), list => list.filterNot(itemId => itemId === id));
});


descendants.delete(id);
ancestors.delete(id);
if (repliesOfId) {
repliesOfId.forEach(reply => inReplyTos.delete(reply));
}

inReplyTos.delete(id);
replies.delete(id);
}); });
})); }));
})); }));
@@ -48,23 +73,23 @@ const filterContexts = (state, relationship, statuses) => {
return deleteFromContexts(state, ownedStatusIds); return deleteFromContexts(state, ownedStatusIds);
}; };


const updateContext = (state, status, references) => {
return state.update('descendants', map => {
references.forEach(parentId => {
map = map.update(parentId, ImmutableList(), list => {
if (list.includes(status.id)) {
return list;
}
const updateContext = (state, status) => {
if (status.in_reply_to_id) {
return state.withMutations(mutable => {
const replies = mutable.getIn(['replies', status.in_reply_to_id], ImmutableList());


return list.push(status.id);
});
mutable.setIn(['inReplyTos', status.id], status.in_reply_to_id);

if (!replies.includes(status.id)) {
mutable.setIn(['replies', status.in_reply_to_id], replies.push(status.id));
}
}); });
}


return map;
});
return state;
}; };


export default function contexts(state = initialState, action) {
export default function replies(state = initialState, action) {
switch(action.type) { switch(action.type) {
case ACCOUNT_BLOCK_SUCCESS: case ACCOUNT_BLOCK_SUCCESS:
case ACCOUNT_MUTE_SUCCESS: case ACCOUNT_MUTE_SUCCESS:
@@ -73,8 +98,8 @@ export default function contexts(state = initialState, action) {
return normalizeContext(state, action.id, action.ancestors, action.descendants); return normalizeContext(state, action.id, action.ancestors, action.descendants);
case TIMELINE_DELETE: case TIMELINE_DELETE:
return deleteFromContexts(state, [action.id]); return deleteFromContexts(state, [action.id]);
case TIMELINE_CONTEXT_UPDATE:
return updateContext(state, action.status, action.references);
case TIMELINE_UPDATE:
return updateContext(state, action.status);
default: default:
return state; return state;
} }


+ 3
- 1
app/javascript/mastodon/reducers/domain_lists.js View File

@@ -6,7 +6,9 @@ import {
import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable'; import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable';


const initialState = ImmutableMap({ const initialState = ImmutableMap({
blocks: ImmutableMap(),
blocks: ImmutableMap({
items: ImmutableOrderedSet(),
}),
}); });


export default function domainLists(state = initialState, action) { export default function domainLists(state = initialState, action) {


+ 2
- 2
app/javascript/mastodon/reducers/search.js View File

@@ -9,7 +9,7 @@ import {
COMPOSE_REPLY, COMPOSE_REPLY,
COMPOSE_DIRECT, COMPOSE_DIRECT,
} from '../actions/compose'; } from '../actions/compose';
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';


const initialState = ImmutableMap({ const initialState = ImmutableMap({
value: '', value: '',
@@ -39,7 +39,7 @@ export default function search(state = initialState, action) {
return state.set('results', ImmutableMap({ return state.set('results', ImmutableMap({
accounts: ImmutableList(action.results.accounts.map(item => item.id)), accounts: ImmutableList(action.results.accounts.map(item => item.id)),
statuses: ImmutableList(action.results.statuses.map(item => item.id)), statuses: ImmutableList(action.results.statuses.map(item => item.id)),
hashtags: ImmutableList(action.results.hashtags),
hashtags: fromJS(action.results.hashtags),
})).set('submitted', true); })).set('submitted', true);
default: default:
return state; return state;


+ 4
- 0
app/javascript/mastodon/reducers/settings.js View File

@@ -64,6 +64,10 @@ const initialState = ImmutableMap({
body: '', body: '',
}), }),
}), }),

trends: ImmutableMap({
show: true,
}),
}); });


const defaultColumns = fromJS([ const defaultColumns = fromJS([


+ 2
- 2
app/javascript/mastodon/service_worker/entry.js View File

@@ -33,7 +33,7 @@ self.addEventListener('fetch', function(event) {


event.respondWith(asyncResponse.then( event.respondWith(asyncResponse.then(
response => asyncCache.then(cache => cache.put('/', response.clone())) response => asyncCache.then(cache => cache.put('/', response.clone()))
.then(() => response),
.then(() => response),
() => asyncCache.then(cache => cache.match('/')))); () => asyncCache.then(cache => cache.match('/'))));
} else if (url.pathname === '/auth/sign_out') { } else if (url.pathname === '/auth/sign_out') {
const asyncResponse = fetch(event.request); const asyncResponse = fetch(event.request);
@@ -49,7 +49,7 @@ self.addEventListener('fetch', function(event) {


return response; return response;
})); }));
} else if (storageFreeable && process.env.CDN_HOST ? url.host === process.env.CDN_HOST : url.pathname.startsWith('/system/')) {
} else if (storageFreeable && (ATTACHMENT_HOST ? url.host === ATTACHMENT_HOST : url.pathname.startsWith('/system/'))) {
event.respondWith(openSystemCache().then(cache => { event.respondWith(openSystemCache().then(cache => {
return cache.match(event.request.url).then(cached => { return cache.match(event.request.url).then(cached => {
if (cached === undefined) { if (cached === undefined) {


+ 16
- 4
app/javascript/mastodon/service_worker/web_push_notifications.js View File

@@ -25,7 +25,7 @@ const notify = options =>


return self.registration.showNotification(group.title, group); return self.registration.showNotification(group.title, group);
} else if (notifications.length === 1 && notifications[0].tag === GROUP_TAG) { // Already grouped, proceed with appending the notification to the group } else if (notifications.length === 1 && notifications[0].tag === GROUP_TAG) { // Already grouped, proceed with appending the notification to the group
const group = { ...notifications[0] };
const group = cloneNotification(notifications[0]);


group.title = formatMessage('notifications.group', options.data.preferred_locale, { count: group.data.count + 1 }); group.title = formatMessage('notifications.group', options.data.preferred_locale, { count: group.data.count + 1 });
group.body = `${options.title}\n${group.body}`; group.body = `${options.title}\n${group.body}`;
@@ -57,6 +57,18 @@ const fetchFromApi = (path, method, accessToken) => {
}).then(res => res.json()); }).then(res => res.json());
}; };


const cloneNotification = notification => {
const clone = {};
let k;

// Object.assign() does not work with notifications
for(k in notification) {
clone[k] = notification[k];
}

return clone;
};

const formatMessage = (messageId, locale, values = {}) => const formatMessage = (messageId, locale, values = {}) =>
(new IntlMessageFormat(locales[locale][messageId], locale)).format(values); (new IntlMessageFormat(locales[locale][messageId], locale)).format(values);


@@ -95,7 +107,7 @@ const handlePush = (event) => {
options.body = notification.status.spoiler_text; options.body = notification.status.spoiler_text;
options.image = undefined; options.image = undefined;
options.actions = [actionExpand(preferred_locale)]; options.actions = [actionExpand(preferred_locale)];
} else if (notification.status) {
} else if (notification.type === 'mention') {
options.actions = [actionReblog(preferred_locale), actionFavourite(preferred_locale)]; options.actions = [actionReblog(preferred_locale), actionFavourite(preferred_locale)];
} }


@@ -130,7 +142,7 @@ const findBestClient = clients => {
}; };


const expandNotification = notification => { const expandNotification = notification => {
const newNotification = { ...notification };
const newNotification = cloneNotification(notification);


newNotification.body = newNotification.data.hiddenBody; newNotification.body = newNotification.data.hiddenBody;
newNotification.image = newNotification.data.hiddenImage; newNotification.image = newNotification.data.hiddenImage;
@@ -140,7 +152,7 @@ const expandNotification = notification => {
}; };


const removeActionFromNotification = (notification, action) => { const removeActionFromNotification = (notification, action) => {
const newNotification = { ...notification };
const newNotification = cloneNotification(notification);


newNotification.actions = newNotification.actions.filter(item => item.action !== action); newNotification.actions = newNotification.actions.filter(item => item.action !== action);




+ 1
- 2
app/javascript/mastodon/utils/html.js View File

@@ -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;
wrapper.innerHTML = html.replace(/<br\s*\/?>/g, '\n').replace(/<\/p><p>/g, '\n\n').replace(/<[^>]*>/g, '');
return wrapper.textContent; return wrapper.textContent;
}; };

+ 10
- 0
app/javascript/mastodon/utils/numbers.js View 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>;
}
};

+ 2
- 226
app/javascript/styles/mastodon-light.scss
File diff suppressed because it is too large
View File


+ 265
- 0
app/javascript/styles/mastodon-light/diff.scss View File

@@ -0,0 +1,265 @@
// Notes!
// Sass color functions, "darken" and "lighten" are automatically replaced.

// Change the colors of button texts
.button {
color: $white;

&.button-alternative-2 {
color: $white;
}
}

// Change default background colors of columns
.column {
> .scrollable {
background: $white;
}
}

.drawer__inner {
background: $ui-base-color;
}

.drawer__inner__mastodon {
background: $ui-base-color url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 234.80078 31.757813" width="234.80078" height="31.757812"><path d="M19.599609 0c-1.05 0-2.10039.375-2.90039 1.125L0 16.925781v14.832031h234.80078V17.025391l-16.5-15.900391c-1.6-1.5-4.20078-1.5-5.80078 0l-13.80078 13.099609c-1.6 1.5-4.19883 1.5-5.79883 0L179.09961 1.125c-1.6-1.5-4.19883-1.5-5.79883 0L159.5 14.224609c-1.6 1.5-4.20078 1.5-5.80078 0L139.90039 1.125c-1.6-1.5-4.20078-1.5-5.80078 0l-13.79883 13.099609c-1.6 1.5-4.20078 1.5-5.80078 0L100.69922 1.125c-1.600001-1.5-4.198829-1.5-5.798829 0l-13.59961 13.099609c-1.6 1.5-4.200781 1.5-5.800781 0L61.699219 1.125c-1.6-1.5-4.198828-1.5-5.798828 0L42.099609 14.224609c-1.6 1.5-4.198828 1.5-5.798828 0L22.5 1.125C21.7.375 20.649609 0 19.599609 0z" fill="#{hex-color($white)}"/></svg>') no-repeat bottom / 100% auto;
}

.compose-form .compose-form__modifiers .compose-form__upload__actions .icon-button {
color: lighten($white, 7%);

&:active,
&:focus,
&:hover {
color: $white;
}
}

.compose-form .compose-form__modifiers .compose-form__upload-description input {
color: lighten($white, 7%);

&::placeholder {
color: lighten($white, 7%);
}
}

.compose-form .compose-form__buttons-wrapper {
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 {
background: $ui-base-color;
}

.status.status-direct {
background: lighten($ui-base-color, 4%);
}

.focusable:focus .status.status-direct {
background: lighten($ui-base-color, 8%);
}

.detailed-status,
.detailed-status__action-bar {
background: darken($ui-base-color, 6%);
}

// Change the background color of status__content__spoiler-link
.reply-indicator__content .status__content__spoiler-link,
.status__content .status__content__spoiler-link {
background: $ui-base-lighter-color;

&:hover {
background: lighten($ui-base-lighter-color, 6%);
}
}

// 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
.dropdown-menu {
background: $ui-base-color;
}

.dropdown-menu__arrow {
&.left {
border-left-color: $ui-base-color;
}

&.top {
border-top-color: $ui-base-color;
}

&.bottom {
border-bottom-color: $ui-base-color;
}

&.right {
border-right-color: $ui-base-color;
}
}

.dropdown-menu__item {
a {
background: $ui-base-color;
color: $darker-text-color;
}
}

// Change the text colors on inverted background
.privacy-dropdown__option.active .privacy-dropdown__option__content,
.privacy-dropdown__option.active .privacy-dropdown__option__content strong,
.privacy-dropdown__option:hover .privacy-dropdown__option__content,
.privacy-dropdown__option:hover .privacy-dropdown__option__content strong,
.dropdown-menu__item a:active,
.dropdown-menu__item a:focus,
.dropdown-menu__item a:hover,
.actions-modal ul li:not(:empty) a.active,
.actions-modal ul li:not(:empty) a.active button,
.actions-modal ul li:not(:empty) a:active,
.actions-modal ul li:not(:empty) a:active button,
.actions-modal ul li:not(:empty) a:focus,
.actions-modal ul li:not(:empty) a:focus button,
.actions-modal ul li:not(:empty) a:hover,
.actions-modal ul li:not(:empty) a:hover button,
.admin-wrapper .sidebar ul ul a.selected,
.simple_form .block-button,
.simple_form .button,
.simple_form button {
color: $white;
}

// Change the background colors of modals
.actions-modal,
.boost-modal,
.confirmation-modal,
.mute-modal,
.report-modal,
.embed-modal,
.error-modal,
.onboarding-modal {
background: $ui-base-color;
}

.boost-modal__action-bar,
.confirmation-modal__action-bar,
.mute-modal__action-bar,
.onboarding-modal__paginator,
.error-modal__footer {
background: darken($ui-base-color, 6%);

.onboarding-modal__nav,
.error-modal__nav {
&:hover,
&:focus,
&:active {
background-color: darken($ui-base-color, 12%);
}
}
}

.display-case__case {
background: $white;
}

.embed-modal .embed-modal__container .embed-modal__html {
background: $white;

&:focus {
background: darken($ui-base-color, 6%);
}
}

.react-toggle-track {
background: $ui-secondary-color;
}

.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
background: darken($ui-secondary-color, 10%);
}

.react-toggle.react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track {
background: lighten($ui-highlight-color, 10%);
}

// Change the default color used for the text in an empty column or on the error column
.empty-column-indicator,
.error-column {
color: $primary-text-color;
}

// Change the default colors used on some parts of the profile pages
.activity-stream-tabs {
background: $account-background-color;
border-bottom-color: lighten($ui-base-color, 8%);
}

.activity-stream {
.entry {
background: $account-background-color;

.detailed-status.light,
.more.light,
.status.light {
border-bottom-color: lighten($ui-base-color, 8%);
}
}

.status.light {
.status__content {
color: $primary-text-color;
}

.display-name {
strong {
color: $primary-text-color;
}
}
}
}

.accounts-grid {
.account-grid-card {
.controls {
.icon-button {
color: $darker-text-color;
}
}

.name {
a {
color: $primary-text-color;
}
}

.username {
color: $darker-text-color;
}

.account__header__content {
color: $primary-text-color;
}
}
}

+ 41
- 0
app/javascript/styles/mastodon-light/variables.scss View File

@@ -0,0 +1,41 @@
// Dependent colors
$black: #000000;
$white: #ffffff;

$classic-base-color: #282c37;
$classic-primary-color: #9baec8;
$classic-secondary-color: #d9e1e8;
$classic-highlight-color: #2b90d9;

// Differences
$success-green: #3c754d;

$base-overlay-background: $white !default;
$valid-value-color: $success-green !default;

$ui-base-color: $classic-secondary-color !default;
$ui-base-lighter-color: #b0c0cf;
$ui-primary-color: #9bcbed;
$ui-secondary-color: $classic-base-color !default;
$ui-highlight-color: #2b5fd9;

$primary-text-color: $black !default;
$darker-text-color: $classic-base-color !default;
$dark-text-color: #444b5d;
$action-button-color: #606984;

$inverted-text-color: $black !default;
$lighter-text-color: $classic-base-color !default;
$light-text-color: #444b5d;

//Newly added colors
$account-background-color: $white !default;

//Invert darkened and lightened colors
@function darken($color, $amount) {
@return hsl(hue($color), saturation($color), lightness($color) + $amount);
}

@function lighten($color, $amount) {
@return hsl(hue($color), saturation($color), lightness($color) - $amount);
}

+ 1
- 1
app/javascript/styles/mastodon/about.scss View File

@@ -396,7 +396,7 @@ $small-breakpoint: 960px;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
color: $ui-primary-color;
color: $darker-text-color;
text-decoration: none; text-decoration: none;
padding: 12px 16px; padding: 12px 16px;
line-height: 32px; line-height: 32px;


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save