From 25f9ead041a3087993059a1398f37dfa21a62610 Mon Sep 17 00:00:00 2001 From: kedama Date: Sun, 21 Oct 2018 14:35:25 +0900 Subject: [PATCH 001/124] Fix domain label position and color (#9033) * Fix position of the domain label * Fix position of the domain label for RTL - Fix color mismatch of linear gradient which assigned to "::after" pseudo class --- app/javascript/styles/mastodon/forms.scss | 2 +- app/javascript/styles/mastodon/rtl.scss | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 337941a08..8c4c934ea 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -427,7 +427,7 @@ code { &__append { position: absolute; - right: 1px; + right: 3px; top: 1px; padding: 10px; padding-bottom: 9px; diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index 448534b3c..e3f4af825 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -246,12 +246,12 @@ body.rtl { .simple_form .label_input__append { right: auto; - left: 0; + left: 3px; &::after { right: auto; left: 0; - background-image: linear-gradient(to left, rgba($ui-base-color, 0), $ui-base-color); + background-image: linear-gradient(to left, rgba(darken($ui-base-color, 10%), 0), darken($ui-base-color, 10%)); } } From bf58461d365b5cee0d8a80a019a64e84c841f32f Mon Sep 17 00:00:00 2001 From: Masoud Abkenar Date: Sun, 21 Oct 2018 13:31:40 +0200 Subject: [PATCH 002/124] RTL: fix column settings toggle label (#9037) --- app/javascript/styles/mastodon/rtl.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index e3f4af825..a2dfbf74b 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -73,7 +73,7 @@ body.rtl { float: left; } - .setting-toggle { + .setting-toggle__label { margin-left: 0; margin-right: 8px; } From 8d70d3de3842cd079484b8e683516ff291de7e24 Mon Sep 17 00:00:00 2001 From: Gomasy Date: Sun, 21 Oct 2018 23:41:33 +0900 Subject: [PATCH 003/124] Fix crash when using UNIX socket (#9036) --- streaming/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/streaming/index.js b/streaming/index.js index dd1a8d546..b4d09d0ad 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -642,9 +642,8 @@ const startWorker = (workerId) => { const attachServerWithConfig = (server, onSuccess) => { if (process.env.SOCKET || process.env.PORT && isNaN(+process.env.PORT)) { server.listen(process.env.SOCKET || process.env.PORT, () => { - fs.chmodSync(server.address(), 0o666); - if (onSuccess) { + fs.chmodSync(server.address(), 0o666); onSuccess(server.address()); } }); From 68f0e4d54e452fd71fee1f1eeeb09a6cc0f56a67 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Sun, 21 Oct 2018 23:42:22 +0900 Subject: [PATCH 004/124] Handle if username is not found on tootctl feeds build (#9040) --- lib/mastodon/feeds_cli.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/mastodon/feeds_cli.rb b/lib/mastodon/feeds_cli.rb index c3fca723e..cca65cf87 100644 --- a/lib/mastodon/feeds_cli.rb +++ b/lib/mastodon/feeds_cli.rb @@ -54,6 +54,11 @@ module Mastodon elsif username.present? account = Account.find_local(username) + if account.nil? + say("Account #{username} is not found", :red) + exit(1) + end + if options[:background] RegenerationWorker.perform_async(account.id) unless options[:dry_run] else From 3a157210c87e6fe034f70d922cf7fc70fb533ad1 Mon Sep 17 00:00:00 2001 From: Masoud Abkenar Date: Sun, 21 Oct 2018 16:45:08 +0200 Subject: [PATCH 005/124] RTL: fix admin account avatar margin in about page (#9039) * RTL: fix admin account avatar margin in about page * fix code style --- app/javascript/styles/mastodon/rtl.scss | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index a2dfbf74b..e5213b555 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -341,14 +341,16 @@ body.rtl { margin-right: 20px; } } -} -.landing-page__information { - .account__display-name { - margin-right: 0; - } + .landing-page__information { + .account__display-name { + margin-right: 0; + margin-left: 5px; + } - .account__avatar-wrapper { - margin-left: 0; + .account__avatar-wrapper { + margin-left: 12px; + margin-right: 0; + } } } From c73864c1373330f2ef75006d639f90a1debcce6d Mon Sep 17 00:00:00 2001 From: Masoud Abkenar Date: Sun, 21 Oct 2018 18:37:57 +0200 Subject: [PATCH 006/124] RTL: fix cardbar margins and alignment (#9044) --- app/javascript/styles/mastodon/rtl.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index e5213b555..a86e3e632 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -353,4 +353,10 @@ body.rtl { margin-right: 0; } } + + .card__bar .display-name { + margin-left: 0; + margin-right: 15px; + text-align: right; + } } From 84cf78da8ad80d8a4128451d8d96ae74acbac318 Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 21 Oct 2018 22:52:10 +0200 Subject: [PATCH 007/124] Fix og:url on toots' public view (#9047) Fixes #9045 --- app/views/stream_entries/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/stream_entries/show.html.haml b/app/views/stream_entries/show.html.haml index 2edc155bf..0e81c4f68 100644 --- a/app/views/stream_entries/show.html.haml +++ b/app/views/stream_entries/show.html.haml @@ -12,7 +12,7 @@ = opengraph 'og:site_name', site_title = opengraph 'og:type', 'article' = opengraph 'og:title', "#{display_name(@account)} (@#{@account.local_username_and_domain})" - = opengraph 'og:url', short_account_status_url(@account, @stream_entry) + = opengraph 'og:url', short_account_status_url(@account, @stream_entry.activity) = render 'stream_entries/og_description', activity: @stream_entry.activity = render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account From 2e18ad74dcffb2e1aeec9f265becd3308c110a67 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Mon, 22 Oct 2018 05:52:27 +0900 Subject: [PATCH 008/124] Fix tootctl cull on dead servers (#9041) * Delete first 9 accounts on dead servers * Clean up code by moving dead server culling to the end --- lib/mastodon/accounts_cli.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 704cf474b..829fab19e 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -239,7 +239,7 @@ module Mastodon end end - if [404, 410].include?(code) || dead_servers.include?(account.domain) + if [404, 410].include?(code) unless options[:dry_run] SuspendAccountService.new.call(account) account.destroy @@ -252,6 +252,18 @@ module Mastodon end end + # Remove dead servers + unless dead_servers.empty? || options[:dry_run] + dead_servers.each do |domain| + Account.where(domain: domain).find_each do |account| + SuspendAccountService.new.call(account) + account.destroy + culled += 1 + say('.', :green, false) + end + end + end + say say("Removed #{culled} accounts (#{dead_servers.size} dead servers)#{dry_run}", :green) From c7e9f9ff1ed1def7f14f6ca4ac2836005eeefa47 Mon Sep 17 00:00:00 2001 From: Masoud Abkenar Date: Mon, 22 Oct 2018 01:04:32 +0200 Subject: [PATCH 009/124] RTL: remove blank character inside bdi (#9038) * RTL: remove blank character inside bdi * Update app/javascript/mastodon/components/display_name.js Co-Authored-By: mabkenar --- app/javascript/mastodon/components/display_name.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/display_name.js b/app/javascript/mastodon/components/display_name.js index c2c40cb3f..31efab80a 100644 --- a/app/javascript/mastodon/components/display_name.js +++ b/app/javascript/mastodon/components/display_name.js @@ -22,7 +22,8 @@ export default class DisplayName extends React.PureComponent { return ( - {suffix} + + {suffix} ); } From f5b8bd4392d7955c84de187e56def191dcf7de51 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 22 Oct 2018 16:58:08 +0200 Subject: [PATCH 010/124] Fix cull tripping on nil in last_webfingered_at (#9051) Fix #8741 --- lib/mastodon/accounts_cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 829fab19e..a32bc9533 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -223,7 +223,7 @@ module Mastodon dry_run = options[:dry_run] ? ' (DRY RUN)' : '' Account.remote.where(protocol: :activitypub).partitioned.find_each do |account| - next if account.updated_at >= skip_threshold || account.last_webfingered_at >= skip_threshold + next if account.updated_at >= skip_threshold || (account.last_webfingered_at.present? && account.last_webfingered_at >= skip_threshold) unless dead_servers.include?(account.domain) begin From 4f0bdbaaaf6828d7ee6fd6e6023375b727c0afe5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 22 Oct 2018 16:58:36 +0200 Subject: [PATCH 011/124] Downgrade fog-openstack to 0.3.7 and fog-core to 2.1.0 (#9049) Fix #8889 --- Gemfile | 4 ++-- Gemfile.lock | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index c5e825335..6a0d33198 100644 --- a/Gemfile +++ b/Gemfile @@ -16,8 +16,8 @@ gem 'pghero', '~> 2.2' gem 'dotenv-rails', '~> 2.5' gem 'aws-sdk-s3', '~> 1.21', require: false -gem 'fog-core', '~> 2.1' -gem 'fog-openstack', '~> 1.0', require: false +gem 'fog-core', '<= 2.1.0' +gem 'fog-openstack', '~> 0.3', require: false gem 'paperclip', '~> 6.0' gem 'paperclip-av-transcoder', '~> 0.6' gem 'streamio-ffmpeg', '~> 3.0' diff --git a/Gemfile.lock b/Gemfile.lock index fa36d4cbe..373ebbaf7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -211,7 +211,7 @@ GEM fast_blank (1.0.0) fastimage (2.1.4) ffi (1.9.25) - fog-core (2.1.2) + fog-core (2.1.0) builder excon (~> 0.58) formatador (~> 0.2) @@ -219,8 +219,8 @@ GEM fog-json (1.2.0) fog-core multi_json (~> 1.10) - fog-openstack (1.0.3) - fog-core (~> 2.1) + fog-openstack (0.3.7) + fog-core (>= 1.45, <= 2.1.0) fog-json (>= 1.0) ipaddress (>= 0.8) formatador (0.2.5) @@ -678,8 +678,8 @@ DEPENDENCIES faker (~> 1.9) fast_blank (~> 1.0) fastimage - fog-core (~> 2.1) - fog-openstack (~> 1.0) + fog-core (<= 2.1.0) + fog-openstack (~> 0.3) fuubar (~> 2.3) goldfinger (~> 2.1) hamlit-rails (~> 0.2) @@ -766,4 +766,4 @@ RUBY VERSION ruby 2.5.3p105 BUNDLED WITH - 1.16.5 + 1.16.6 From 81017eaea7ce08a951274a6a8dbc11dca38bc27e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 22 Oct 2018 23:23:00 +0200 Subject: [PATCH 012/124] Revert "RTL: remove blank character inside bdi (#9038)" (#9056) This reverts commit c7e9f9ff1ed1def7f14f6ca4ac2836005eeefa47. --- app/javascript/mastodon/components/display_name.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/javascript/mastodon/components/display_name.js b/app/javascript/mastodon/components/display_name.js index 31efab80a..c2c40cb3f 100644 --- a/app/javascript/mastodon/components/display_name.js +++ b/app/javascript/mastodon/components/display_name.js @@ -22,8 +22,7 @@ export default class DisplayName extends React.PureComponent { return ( - - {suffix} + {suffix} ); } From 969a10a5d1c0c8354acf133947460be7bee31d7f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 23 Oct 2018 00:08:25 +0200 Subject: [PATCH 013/124] Persist volumes by default in docker-compose (#9055) Too many databases were lost to this --- docker-compose.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 064d5a260..d9f80a38a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,18 +6,16 @@ services: image: postgres:9.6-alpine networks: - internal_network -### Uncomment to enable DB persistence -# volumes: -# - ./postgres:/var/lib/postgresql/data + volumes: + - ./postgres:/var/lib/postgresql/data redis: restart: always image: redis:4.0-alpine networks: - internal_network -### Uncomment to enable REDIS persistence -# volumes: -# - ./redis:/data + volumes: + - ./redis:/data # es: # restart: always @@ -26,9 +24,8 @@ services: # - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # networks: # - internal_network -#### Uncomment to enable ES persistence -## volumes: -## - ./elasticsearch:/usr/share/elasticsearch/data +# volumes: +# - ./elasticsearch:/usr/share/elasticsearch/data web: build: . @@ -68,7 +65,7 @@ services: image: tootsuite/mastodon restart: always env_file: .env.production - command: bundle exec sidekiq -q default -q push -q mailers -q pull + command: bundle exec sidekiq depends_on: - db - redis From ad510db3a19640267f94062756d558a45472af14 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 23 Oct 2018 00:08:39 +0200 Subject: [PATCH 014/124] Show suggested follows on search screen in mobile layout (#9010) Reminder: Suggestions were added in #7918 and are based on who you interact with who you do not follow. E.g. if you boost someone a lot from seeing other people's boosts of that person, it makes sense you might be interested in following the original source; or if you reply to someone a lot, maybe you'd want to follow them Each suggestion can be dismissed --- .../mastodon/actions/suggestions.js | 52 +++++++++++++++++++ app/javascript/mastodon/components/account.js | 13 ++++- .../compose/components/search_results.js | 43 +++++++++++++-- .../containers/search_results_container.js | 9 +++- app/javascript/mastodon/reducers/index.js | 2 + .../mastodon/reducers/suggestions.js | 30 +++++++++++ 6 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 app/javascript/mastodon/actions/suggestions.js create mode 100644 app/javascript/mastodon/reducers/suggestions.js diff --git a/app/javascript/mastodon/actions/suggestions.js b/app/javascript/mastodon/actions/suggestions.js new file mode 100644 index 000000000..b15bd916b --- /dev/null +++ b/app/javascript/mastodon/actions/suggestions.js @@ -0,0 +1,52 @@ +import api from '../api'; +import { importFetchedAccounts } from './importer'; + +export const SUGGESTIONS_FETCH_REQUEST = 'SUGGESTIONS_FETCH_REQUEST'; +export const SUGGESTIONS_FETCH_SUCCESS = 'SUGGESTIONS_FETCH_SUCCESS'; +export const SUGGESTIONS_FETCH_FAIL = 'SUGGESTIONS_FETCH_FAIL'; + +export const SUGGESTIONS_DISMISS = 'SUGGESTIONS_DISMISS'; + +export function fetchSuggestions() { + return (dispatch, getState) => { + dispatch(fetchSuggestionsRequest()); + + api(getState).get('/api/v1/suggestions').then(response => { + dispatch(importFetchedAccounts(response.data)); + dispatch(fetchSuggestionsSuccess(response.data)); + }).catch(error => dispatch(fetchSuggestionsFail(error))); + }; +}; + +export function fetchSuggestionsRequest() { + return { + type: SUGGESTIONS_FETCH_REQUEST, + skipLoading: true, + }; +}; + +export function fetchSuggestionsSuccess(accounts) { + return { + type: SUGGESTIONS_FETCH_SUCCESS, + accounts, + skipLoading: true, + }; +}; + +export function fetchSuggestionsFail(error) { + return { + type: SUGGESTIONS_FETCH_FAIL, + error, + skipLoading: true, + skipAlert: true, + }; +}; + +export const dismissSuggestion = accountId => (dispatch, getState) => { + dispatch({ + type: SUGGESTIONS_DISMISS, + id: accountId, + }); + + api(getState).delete(`/api/v1/suggestions/${accountId}`); +}; diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index c021e3267..2bcea8b67 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -30,6 +30,9 @@ class Account extends ImmutablePureComponent { onMuteNotifications: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, hidden: PropTypes.bool, + actionIcon: PropTypes.string, + actionTitle: PropTypes.string, + onActionClick: PropTypes.func, }; handleFollow = () => { @@ -52,8 +55,12 @@ class Account extends ImmutablePureComponent { this.props.onMuteNotifications(this.props.account, false); } + handleAction = () => { + this.props.onActionClick(this.props.account); + } + render () { - const { account, intl, hidden } = this.props; + const { account, intl, hidden, onActionClick, actionIcon, actionTitle } = this.props; if (!account) { return
; @@ -70,7 +77,9 @@ class Account extends ImmutablePureComponent { let buttons; - if (account.get('id') !== me && account.get('relationship', null) !== null) { + if (onActionClick && actionIcon) { + buttons = ; + } else if (account.get('id') !== me && account.get('relationship', null) !== null) { const following = account.getIn(['relationship', 'following']); const requested = account.getIn(['relationship', 'requested']); const blocking = account.getIn(['relationship', 'blocking']); diff --git a/app/javascript/mastodon/features/compose/components/search_results.js b/app/javascript/mastodon/features/compose/components/search_results.js index c351b84bb..f0ddf6d71 100644 --- a/app/javascript/mastodon/features/compose/components/search_results.js +++ b/app/javascript/mastodon/features/compose/components/search_results.js @@ -1,19 +1,56 @@ import React from 'react'; +import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { FormattedMessage } from 'react-intl'; +import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import AccountContainer from '../../../containers/account_container'; import StatusContainer from '../../../containers/status_container'; import ImmutablePureComponent from 'react-immutable-pure-component'; import Hashtag from '../../../components/hashtag'; -export default class SearchResults extends ImmutablePureComponent { +const messages = defineMessages({ + dismissSuggestion: { id: 'suggestions.dismiss', defaultMessage: 'Dismiss suggestion' }, +}); + +export default @injectIntl +class SearchResults extends ImmutablePureComponent { static propTypes = { results: ImmutablePropTypes.map.isRequired, + suggestions: ImmutablePropTypes.list.isRequired, + fetchSuggestions: PropTypes.func.isRequired, + dismissSuggestion: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, }; + componentDidMount () { + this.props.fetchSuggestions(); + } + render () { - const { results } = this.props; + const { intl, results, suggestions, dismissSuggestion } = this.props; + + if (results.isEmpty() && !suggestions.isEmpty()) { + return ( +
+
+
+ + +
+ + {suggestions && suggestions.map(accountId => ( + + ))} +
+
+ ); + } let accounts, statuses, hashtags; let count = 0; diff --git a/app/javascript/mastodon/features/compose/containers/search_results_container.js b/app/javascript/mastodon/features/compose/containers/search_results_container.js index 16d95d417..f9637861a 100644 --- a/app/javascript/mastodon/features/compose/containers/search_results_container.js +++ b/app/javascript/mastodon/features/compose/containers/search_results_container.js @@ -1,8 +1,15 @@ import { connect } from 'react-redux'; import SearchResults from '../components/search_results'; +import { fetchSuggestions, dismissSuggestion } from '../../../actions/suggestions'; const mapStateToProps = state => ({ results: state.getIn(['search', 'results']), + suggestions: state.getIn(['suggestions', 'items']), }); -export default connect(mapStateToProps)(SearchResults); +const mapDispatchToProps = dispatch => ({ + fetchSuggestions: () => dispatch(fetchSuggestions()), + dismissSuggestion: account => dispatch(dismissSuggestion(account.get('id'))), +}); + +export default connect(mapStateToProps, mapDispatchToProps)(SearchResults); diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js index d3b98d4f6..e98566e26 100644 --- a/app/javascript/mastodon/reducers/index.js +++ b/app/javascript/mastodon/reducers/index.js @@ -28,6 +28,7 @@ import lists from './lists'; import listEditor from './list_editor'; import filters from './filters'; import conversations from './conversations'; +import suggestions from './suggestions'; const reducers = { dropdown_menu, @@ -59,6 +60,7 @@ const reducers = { listEditor, filters, conversations, + suggestions, }; export default combineReducers(reducers); diff --git a/app/javascript/mastodon/reducers/suggestions.js b/app/javascript/mastodon/reducers/suggestions.js new file mode 100644 index 000000000..9f4b89d58 --- /dev/null +++ b/app/javascript/mastodon/reducers/suggestions.js @@ -0,0 +1,30 @@ +import { + SUGGESTIONS_FETCH_REQUEST, + SUGGESTIONS_FETCH_SUCCESS, + SUGGESTIONS_FETCH_FAIL, + SUGGESTIONS_DISMISS, +} from '../actions/suggestions'; +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + +const initialState = ImmutableMap({ + items: ImmutableList(), + isLoading: false, +}); + +export default function suggestionsReducer(state = initialState, action) { + switch(action.type) { + case SUGGESTIONS_FETCH_REQUEST: + return state.set('isLoading', true); + case SUGGESTIONS_FETCH_SUCCESS: + return state.withMutations(map => { + map.set('items', fromJS(action.accounts.map(x => x.id))); + map.set('isLoading', false); + }); + case SUGGESTIONS_FETCH_FAIL: + return state.set('isLoading', false); + case SUGGESTIONS_DISMISS: + return state.update('items', list => list.filterNot(id => id === action.id)); + default: + return state; + } +}; From 39abec4d25db02e7d1e6a2d137d96d07dffac02c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 23 Oct 2018 00:43:18 +0200 Subject: [PATCH 015/124] Fix public timelines not instantly updating on compose (#9050) Fix #9034 --- app/javascript/mastodon/actions/compose.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index f72671228..fac8d32a1 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -146,7 +146,9 @@ export function submitCompose(routerHistory) { routerHistory.push('/timelines/direct'); } else if (response.data.visibility !== 'direct') { insertIfOnline('home'); - } else if (response.data.in_reply_to_id === null && response.data.visibility === 'public') { + } + + if (response.data.in_reply_to_id === null && response.data.visibility === 'public') { insertIfOnline('community'); insertIfOnline('public'); } From 51677ff070e8738c190e712e45229d0e2190472f Mon Sep 17 00:00:00 2001 From: ashleyhull-versent Date: Tue, 23 Oct 2018 14:21:28 +1100 Subject: [PATCH 016/124] Update Dockerfile (#9026) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6a1e8776c..9c53b4145 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM node:8.12.0-alpine as node -FROM ruby:2.4.4-alpine3.7 +FROM ruby:2.4.5-alpine3.8 LABEL maintainer="https://github.com/tootsuite/mastodon" \ description="Your self-hosted, globally interconnected microblogging community" From 65867b6e6170ab6bc4db6d94b46cd3ddd6b82113 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 23 Oct 2018 08:17:26 +0200 Subject: [PATCH 017/124] Bump parallel_tests from 2.23.0 to 2.24.0 (#9064) Bumps [parallel_tests](https://github.com/grosser/parallel_tests) from 2.23.0 to 2.24.0. - [Release notes](https://github.com/grosser/parallel_tests/releases) - [Commits](https://github.com/grosser/parallel_tests/compare/v2.23.0...v2.24.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 6a0d33198..ca38f033a 100644 --- a/Gemfile +++ b/Gemfile @@ -114,7 +114,7 @@ group :test do gem 'rspec-sidekiq', '~> 3.0' gem 'simplecov', '~> 0.16', require: false gem 'webmock', '~> 3.4' - gem 'parallel_tests', '~> 2.23' + gem 'parallel_tests', '~> 2.24' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 373ebbaf7..c43f3673f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -385,7 +385,7 @@ GEM av (~> 0.9.0) paperclip (>= 2.5.2) parallel (1.12.1) - parallel_tests (2.23.0) + parallel_tests (2.24.0) parallel parser (2.5.1.2) ast (~> 2.4.0) @@ -714,7 +714,7 @@ DEPENDENCIES ox (~> 2.10) paperclip (~> 6.0) paperclip-av-transcoder (~> 0.6) - parallel_tests (~> 2.23) + parallel_tests (~> 2.24) pg (~> 1.1) pghero (~> 2.2) pkg-config (~> 1.3) From e3a1955276cb12e8eb57ede30bd1376f5a875310 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 23 Oct 2018 23:11:37 +0200 Subject: [PATCH 018/124] Bump i18n-tasks from 0.9.25 to 0.9.26 (#9071) Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 0.9.25 to 0.9.26. - [Release notes](https://github.com/glebm/i18n-tasks/releases) - [Changelog](https://github.com/glebm/i18n-tasks/blob/master/CHANGES.md) - [Commits](https://github.com/glebm/i18n-tasks/compare/v0.9.25...v0.9.26) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c43f3673f..960ef2083 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -271,7 +271,7 @@ GEM rainbow (>= 2.0.0) i18n (1.1.1) concurrent-ruby (~> 1.0) - i18n-tasks (0.9.25) + i18n-tasks (0.9.26) activesupport (>= 4.0.2) ast (>= 2.1.0) erubi From 01c169e796c4d8dd47526fcb07cb6cee1f034d9f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 24 Oct 2018 01:31:31 +0200 Subject: [PATCH 019/124] Fix JS error when posting from page without router context (#9073) Fix #9057 --- app/javascript/mastodon/actions/compose.js | 2 +- .../mastodon/features/compose/components/compose_form.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index fac8d32a1..86d83122f 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -142,7 +142,7 @@ export function submitCompose(routerHistory) { } }; - if (response.data.visibility === 'direct' && getState().getIn(['conversations', 'mounted']) <= 0) { + if (response.data.visibility === 'direct' && getState().getIn(['conversations', 'mounted']) <= 0 && routerHistory) { routerHistory.push('/timelines/direct'); } else if (response.data.visibility !== 'direct') { insertIfOnline('home'); diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index 27178fe19..0625ab223 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -88,7 +88,7 @@ class ComposeForm extends ImmutablePureComponent { return; } - this.props.onSubmit(this.context.router.history); + this.props.onSubmit(this.context.router ? this.context.router.history : null); } onSuggestionsClearRequested = () => { From c61af83de07aef48ce01df2ed2916c6b15e5ea6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 24 Oct 2018 07:50:34 +0200 Subject: [PATCH 020/124] Bump i18n-tasks from 0.9.26 to 0.9.27 (#9079) Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 0.9.26 to 0.9.27. - [Release notes](https://github.com/glebm/i18n-tasks/releases) - [Changelog](https://github.com/glebm/i18n-tasks/blob/master/CHANGES.md) - [Commits](https://github.com/glebm/i18n-tasks/compare/v0.9.26...v0.9.27) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 960ef2083..75e00446d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -271,7 +271,7 @@ GEM rainbow (>= 2.0.0) i18n (1.1.1) concurrent-ruby (~> 1.0) - i18n-tasks (0.9.26) + i18n-tasks (0.9.27) activesupport (>= 4.0.2) ast (>= 2.1.0) erubi From c64234c31fde3f9936b53c4eb491e48ada7b622f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 24 Oct 2018 07:51:04 +0200 Subject: [PATCH 021/124] Bump rspec-rails from 3.8.0 to 3.8.1 (#9078) Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 3.8.0 to 3.8.1. - [Release notes](https://github.com/rspec/rspec-rails/releases) - [Changelog](https://github.com/rspec/rspec-rails/blob/master/Changelog.md) - [Commits](https://github.com/rspec/rspec-rails/compare/v3.8.0...v3.8.1) Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 75e00446d..c5584da29 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -501,13 +501,13 @@ GEM chunky_png (~> 1.0) rspec-core (3.8.0) rspec-support (~> 3.8.0) - rspec-expectations (3.8.1) + rspec-expectations (3.8.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.8.0) rspec-mocks (3.8.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.8.0) - rspec-rails (3.8.0) + rspec-rails (3.8.1) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) From 9f3283086fd0b1591ca657070cae73ff29881adb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 24 Oct 2018 23:22:18 +0900 Subject: [PATCH 022/124] Bump capybara from 3.9.0 to 3.10.0 (#9077) Bumps [capybara](https://github.com/teamcapybara/capybara) from 3.9.0 to 3.10.0. - [Release notes](https://github.com/teamcapybara/capybara/releases) - [Changelog](https://github.com/teamcapybara/capybara/blob/master/History.md) - [Commits](https://github.com/teamcapybara/capybara/compare/3.9.0...3.10.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index ca38f033a..cfd88f323 100644 --- a/Gemfile +++ b/Gemfile @@ -106,7 +106,7 @@ group :production, :test do end group :test do - gem 'capybara', '~> 3.9' + gem 'capybara', '~> 3.10' gem 'climate_control', '~> 0.2' gem 'faker', '~> 1.9' gem 'microformats', '~> 4.0' diff --git a/Gemfile.lock b/Gemfile.lock index c5584da29..9fac173cc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -126,13 +126,14 @@ GEM sshkit (~> 1.3) capistrano-yarn (2.0.2) capistrano (~> 3.0) - capybara (3.9.0) + capybara (3.10.0) addressable mini_mime (>= 0.1.3) nokogiri (~> 1.8) rack (>= 1.6.0) rack-test (>= 0.6.3) - xpath (~> 3.1) + regexp_parser (~> 1.2) + xpath (~> 3.2) case_transform (0.2) activesupport charlock_holmes (0.7.6) @@ -490,6 +491,7 @@ GEM redis-store (>= 1.2, < 2) redis-store (1.5.0) redis (>= 2.2, < 5) + regexp_parser (1.2.0) request_store (1.4.1) rack (>= 1.4) responders (2.4.0) @@ -640,7 +642,7 @@ GEM websocket-extensions (>= 0.1.0) websocket-extensions (0.1.3) wisper (2.0.0) - xpath (3.1.0) + xpath (3.2.0) nokogiri (~> 1.8) PLATFORMS @@ -663,7 +665,7 @@ DEPENDENCIES capistrano-rails (~> 1.4) capistrano-rbenv (~> 2.1) capistrano-yarn (~> 2.0) - capybara (~> 3.9) + capybara (~> 3.10) charlock_holmes (~> 0.7.6) chewy (~> 5.0) cld3 (~> 3.2.0) From 288e435fe536dc42fe7a13b8c965f21f8d68fb9e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 24 Oct 2018 18:17:15 +0200 Subject: [PATCH 023/124] Show upload options on click as well as hover (#9074) Fix #8918 --- .../mastodon/features/compose/components/upload.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.js index 66c93452c..a1e99dcbb 100644 --- a/app/javascript/mastodon/features/compose/components/upload.js +++ b/app/javascript/mastodon/features/compose/components/upload.js @@ -44,11 +44,13 @@ class Upload extends ImmutablePureComponent { this.props.onSubmit(this.context.router.history); } - handleUndoClick = () => { + handleUndoClick = e => { + e.stopPropagation(); this.props.onUndo(this.props.media.get('id')); } - handleFocalPointClick = () => { + handleFocalPointClick = e => { + e.stopPropagation(); this.props.onOpenFocalPoint(this.props.media.get('id')); } @@ -68,6 +70,10 @@ class Upload extends ImmutablePureComponent { this.setState({ focused: true }); } + handleClick = () => { + this.setState({ focused: true }); + } + handleInputBlur = () => { const { dirtyDescription } = this.state; @@ -88,7 +94,7 @@ class Upload extends ImmutablePureComponent { const y = ((focusY / -2) + .5) * 100; return ( -
+
{({ scale }) => (
From d723f2a0a88d4ac106638733b7ba17f8d205850a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 24 Oct 2018 18:18:08 +0200 Subject: [PATCH 024/124] Fix RTL layout of status display names (#9075) Fix #2350 --- app/javascript/styles/mastodon/rtl.scss | 15 ++++----------- app/views/stream_entries/_simple_status.html.haml | 1 + 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index a86e3e632..ccb53a090 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -130,17 +130,6 @@ body.rtl { float: left; } - .activity-stream .detailed-status.light .detailed-status__display-name > div { - float: right; - margin-right: 0; - margin-left: 10px; - } - - .activity-stream .detailed-status.light .detailed-status__meta span > span { - margin-left: 0; - margin-right: 6px; - } - .status__action-bar { &__counter { @@ -174,6 +163,10 @@ body.rtl { margin-right: 0; } + .detailed-status__display-name .display-name { + text-align: right; + } + .detailed-status__display-avatar { margin-right: 0; margin-left: 10px; diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml index 1b00388b1..1a1dc37eb 100644 --- a/app/views/stream_entries/_simple_status.html.haml +++ b/app/views/stream_entries/_simple_status.html.haml @@ -15,6 +15,7 @@ %span.display-name %bdi %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true, autoplay: autoplay) +   %span.display-name__account = acct(status.account) = fa_icon('lock') if status.account.locked? From df3a7e724dc72146a09fd72efd95d7e206b4b881 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Oct 2018 00:09:45 +0200 Subject: [PATCH 025/124] Fix missing plural keys (#9084) * Update i18n-tasks to feature-missing-plural-keys * Fix pluralizations with missing keys in Arabic Fix #8554 * Add i18n-tasks missing-plural-keys to CircleCI --- .circleci/config.yml | 1 + Gemfile | 2 +- Gemfile.lock | 27 ++++++++++++-------- config/locales/ar.yml | 48 +++++++++--------------------------- config/locales/devise.ar.yml | 4 +-- 5 files changed, 32 insertions(+), 50 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 674d1b02d..add73d677 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -175,6 +175,7 @@ jobs: - *attach_workspace - run: bundle exec i18n-tasks check-normalized - run: bundle exec i18n-tasks unused + - run: bundle exec i18n-tasks missing-plural-keys workflows: version: 2 diff --git a/Gemfile b/Gemfile index cfd88f323..c9a16ee14 100644 --- a/Gemfile +++ b/Gemfile @@ -95,7 +95,7 @@ gem 'rdf-normalize', '~> 0.3' group :development, :test do gem 'fabrication', '~> 2.20' gem 'fuubar', '~> 2.3' - gem 'i18n-tasks', '~> 0.9', require: false + gem 'i18n-tasks', '~> 0.9', require: false, git: 'https://github.com/Gargron/i18n-tasks.git', ref: '7a57fbe7000f4f8120e250a757ab345c28c6885c' gem 'pry-byebug', '~> 3.6' gem 'pry-rails', '~> 0.3' gem 'rspec-rails', '~> 3.8' diff --git a/Gemfile.lock b/Gemfile.lock index 9fac173cc..edb552abb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,19 @@ +GIT + remote: https://github.com/Gargron/i18n-tasks.git + revision: 7a57fbe7000f4f8120e250a757ab345c28c6885c + ref: 7a57fbe7000f4f8120e250a757ab345c28c6885c + specs: + i18n-tasks (0.9.27) + activesupport (>= 4.0.2) + ast (>= 2.1.0) + erubi + highline (>= 2.0.0) + i18n + parser (>= 2.2.3.0) + rails-i18n + rainbow (>= 2.2.2, < 4.0) + terminal-table (>= 1.5.1) + GIT remote: https://github.com/rtomayko/posix-spawn revision: 58465d2e213991f8afb13b984854a49fcdcc980c @@ -272,15 +288,6 @@ GEM rainbow (>= 2.0.0) i18n (1.1.1) concurrent-ruby (~> 1.0) - i18n-tasks (0.9.27) - activesupport (>= 4.0.2) - ast (>= 2.1.0) - erubi - highline (>= 2.0.0) - i18n - parser (>= 2.2.3.0) - rainbow (>= 2.2.2, < 4.0) - terminal-table (>= 1.5.1) idn-ruby (0.1.0) ipaddress (0.8.3) iso-639 (0.2.8) @@ -691,7 +698,7 @@ DEPENDENCIES http_accept_language (~> 2.1) http_parser.rb (~> 0.6)! httplog (~> 1.1) - i18n-tasks (~> 0.9) + i18n-tasks (~> 0.9)! idn-ruby iso-639 json-ld (~> 2.2) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 4499830f9..36922f1f8 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -30,22 +30,16 @@ ar: other_instances: خوادم أخرى privacy_policy: سياسة الخصوصية source_code: الشفرة المصدرية - status_count_after: - one: منشور - other: منشورات + status_count_after: منشورات status_count_before: نشروا terms: شروط الخدمة - user_count_after: - one: مستخدِم - other: مستخدِمين + user_count_after: مستخدِمين user_count_before: يستضيف what_is_mastodon: ما هو ماستدون ؟ accounts: choices_html: 'توصيات %{name} :' follow: إتبع - followers: - one: مُتابِع - other: مُتابِعون + followers: مُتابِعون following: مُتابَع joined: انضم·ت في %{date} link_verified_on: تم التحقق مِن مالك هذا الرابط بتاريخ %{date} @@ -57,9 +51,7 @@ ar: people_who_follow: الأشخاص الذين يتبعون %{name} pin_errors: following: يجب أن تكون مِن متابعي حساب الشخص الذي تريد إبرازه - posts: - one: تبويق - other: تبويقات + posts: تبويقات posts_tab_heading: تبويقات posts_with_replies: التبويقات و الردود reserved_username: إسم المستخدم محجوز @@ -268,9 +260,7 @@ ar: suspend: تعليق severity: الشدة show: - affected_accounts: - one: حساب واحد معني في قاعدة البيانات - other: "%{count} حسابات معنية في قاعدة البيانات" + affected_accounts: "%{count} حسابات معنية في قاعدة البيانات" retroactive: silence: إلغاء الكتم عن كافة الحسابات المتواجدة على هذا النطاق suspend: إلغاء التعليق المفروض على كافة حسابات هذا النطاق @@ -570,9 +560,7 @@ ar: generic: changes_saved_msg: تم حفظ التعديلات بنجاح ! save_changes: حفظ التغييرات - validation_errors: - one: هناك شيء ما لا يبدو أنه على ما يُرام بعدُ. يُرجى الإطلاع على الخطأ أدناه - other: هناك شيء ليس على ما يُرام! يُرجى معاينة الأخطاء الـ %{count} التالية + validation_errors: هناك شيء ليس على ما يُرام! يُرجى معاينة الأخطاء الـ %{count} التالية imports: preface: بإمكانك استيراد بيانات قد قُمتَ بتصديرها مِن مثيل خادوم آخَر، كقوائم المستخدِمين الذين كنتَ تتابِعهم أو قُمتَ بحظرهم. success: تم تحميل بياناتك بنجاح وسيتم معالجتها في الوقت المناسب @@ -595,9 +583,7 @@ ar: expires_in_prompt: أبدا generate: توليد invited_by: 'تمت دعوتك من طرف :' - max_uses: - one: استعمال واحد - other: "%{count} استخدامات" + max_uses: "%{count} استخدامات" max_uses_prompt: بلا حدود prompt: توليد و مشاركة روابط للسماح للآخَرين بالنفاذ إلى مثيل الخادوم هذا table: @@ -623,12 +609,8 @@ ar: action: معاينة كافة الإشعارات body: هذا هو مُلَخَّص الرسائل التي فاتتك وذلك منذ آخر زيارة لك في %{since} mention: "%{name} أشار إليك في :" - new_followers_summary: - one: و لقد تحصّلت أيضا على متابِع جديد أثناء فترة غيابك! يا للروعة! - other: رائع، لقد قام بمتابعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون ! - subject: - one: "إشعار جديد واحد منذ آخر زيارة لك لـ \U0001F418" - other: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418" + new_followers_summary: رائع، لقد قام بمتابعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون ! + subject: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418" title: أثناء فترة غيابك … favourite: body: 'أُعجب %{name} بمنشورك :' @@ -746,17 +728,11 @@ ar: statuses: attached: description: 'مُرفَق : %{attached}' - image: - one: "%{count} صورة" - other: "%{count} صُوَر" - video: - one: "%{count} فيديو" - other: "%{count} فيديوهات" + image: "%{count} صُوَر" + video: "%{count} فيديوهات" boosted_from_html: تم إعادة ترقيته مِن %{acct_link} content_warning: 'تحذير عن المحتوى : %{warning}' - disallowed_hashtags: - one: 'يحتوي على وسم ممنوع: %{tags}' - other: 'يحتوي على أحد الوسوم الممنوعة: %{tags}' + disallowed_hashtags: 'يحتوي على أحد الوسوم الممنوعة: %{tags}' language_detection: اكتشاف اللغة تلقائيا open_in_web: إفتح في الويب over_character_limit: تم تجاوز حد الـ %{max} حرف المسموح بها diff --git a/config/locales/devise.ar.yml b/config/locales/devise.ar.yml index cadc4daa8..4d80176c6 100644 --- a/config/locales/devise.ar.yml +++ b/config/locales/devise.ar.yml @@ -77,6 +77,4 @@ ar: expired: إنتهت مدة صلاحيته، الرجاء طلب واحد جديد not_found: لا يوجد not_locked: ليس مقفلاً - not_saved: - one: 'خطأ واحد منَعَ %{resource} مِن القيام بالإحتفاظ :' - other: "%{count} أخطاء منعت %{resource} مِن القيام بالإحتفاظ :" + not_saved: "%{count} أخطاء منعت %{resource} مِن القيام بالإحتفاظ :" From e8ffecbd3606a1558563e0cb5f8ea296a6ab2ede Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 25 Oct 2018 07:10:01 +0900 Subject: [PATCH 026/124] Set @body_classes to admin layout (#9081) --- app/controllers/admin/base_controller.rb | 11 +++++++++-- app/controllers/filters_controller.rb | 5 +++++ app/controllers/invites_controller.rb | 5 +++++ app/controllers/settings/applications_controller.rb | 5 +++++ app/controllers/settings/deletes_controller.rb | 5 +++++ app/controllers/settings/exports_controller.rb | 7 +++++++ .../settings/follower_domains_controller.rb | 5 +++++ app/controllers/settings/imports_controller.rb | 5 +++++ app/controllers/settings/migrations_controller.rb | 5 +++++ app/controllers/settings/notifications_controller.rb | 5 +++++ app/controllers/settings/preferences_controller.rb | 5 +++++ app/controllers/settings/profiles_controller.rb | 5 +++++ app/controllers/settings/sessions_controller.rb | 5 +++++ .../confirmations_controller.rb | 5 +++++ .../recovery_codes_controller.rb | 7 +++++++ .../settings/two_factor_authentications_controller.rb | 5 +++++ app/views/layouts/admin.html.haml | 2 +- 17 files changed, 89 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/base_controller.rb b/app/controllers/admin/base_controller.rb index 7fb69d578..8593b582a 100644 --- a/app/controllers/admin/base_controller.rb +++ b/app/controllers/admin/base_controller.rb @@ -5,8 +5,15 @@ module Admin include Authorization include AccountableConcern - before_action :require_staff! - layout 'admin' + + before_action :require_staff! + before_action :set_body_classes + + private + + def set_body_classes + @body_classes = 'admin' + end end end diff --git a/app/controllers/filters_controller.rb b/app/controllers/filters_controller.rb index 175dbab07..d2e0fb739 100644 --- a/app/controllers/filters_controller.rb +++ b/app/controllers/filters_controller.rb @@ -7,6 +7,7 @@ class FiltersController < ApplicationController before_action :set_filters, only: :index before_action :set_filter, only: [:edit, :update, :destroy] + before_action :set_body_classes def index @filters = current_account.custom_filters @@ -54,4 +55,8 @@ class FiltersController < ApplicationController def resource_params params.require(:custom_filter).permit(:phrase, :expires_in, :irreversible, :whole_word, context: []) end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb index 3aaa2776f..fdb3a0962 100644 --- a/app/controllers/invites_controller.rb +++ b/app/controllers/invites_controller.rb @@ -6,6 +6,7 @@ class InvitesController < ApplicationController layout 'admin' before_action :authenticate_user! + before_action :set_body_classes def index authorize :invite, :create? @@ -44,4 +45,8 @@ class InvitesController < ApplicationController def resource_params params.require(:invite).permit(:max_uses, :expires_in, :autofollow) end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/applications_controller.rb b/app/controllers/settings/applications_controller.rb index 2a4962311..a1a2c57fa 100644 --- a/app/controllers/settings/applications_controller.rb +++ b/app/controllers/settings/applications_controller.rb @@ -6,6 +6,7 @@ class Settings::ApplicationsController < ApplicationController before_action :authenticate_user! before_action :set_application, only: [:show, :update, :destroy, :regenerate] before_action :prepare_scopes, only: [:create, :update] + before_action :set_body_classes def index @applications = current_user.applications.order(id: :desc).page(params[:page]) @@ -69,4 +70,8 @@ class Settings::ApplicationsController < ApplicationController scopes = params.fetch(:doorkeeper_application, {}).fetch(:scopes, nil) params[:doorkeeper_application][:scopes] = scopes.join(' ') if scopes.is_a? Array end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/deletes_controller.rb b/app/controllers/settings/deletes_controller.rb index 80002b995..97f3946c8 100644 --- a/app/controllers/settings/deletes_controller.rb +++ b/app/controllers/settings/deletes_controller.rb @@ -5,6 +5,7 @@ class Settings::DeletesController < ApplicationController before_action :check_enabled_deletion before_action :authenticate_user! + before_action :set_body_classes def show @confirmation = Form::DeleteConfirmation.new @@ -29,4 +30,8 @@ class Settings::DeletesController < ApplicationController def delete_params params.require(:form_delete_confirmation).permit(:password) end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb index 869e11d3b..3a2334ef0 100644 --- a/app/controllers/settings/exports_controller.rb +++ b/app/controllers/settings/exports_controller.rb @@ -6,6 +6,7 @@ class Settings::ExportsController < ApplicationController layout 'admin' before_action :authenticate_user! + before_action :set_body_classes def show @export = Export.new(current_account) @@ -20,4 +21,10 @@ class Settings::ExportsController < ApplicationController redirect_to settings_export_path end + + private + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/follower_domains_controller.rb b/app/controllers/settings/follower_domains_controller.rb index a128bd136..9c39e66bb 100644 --- a/app/controllers/settings/follower_domains_controller.rb +++ b/app/controllers/settings/follower_domains_controller.rb @@ -4,6 +4,7 @@ class Settings::FollowerDomainsController < ApplicationController layout 'admin' before_action :authenticate_user! + before_action :set_body_classes def show @account = current_account @@ -25,4 +26,8 @@ class Settings::FollowerDomainsController < ApplicationController def bulk_params params.permit(select: []) end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/imports_controller.rb b/app/controllers/settings/imports_controller.rb index 0db13d1ca..e9548ce62 100644 --- a/app/controllers/settings/imports_controller.rb +++ b/app/controllers/settings/imports_controller.rb @@ -5,6 +5,7 @@ class Settings::ImportsController < ApplicationController before_action :authenticate_user! before_action :set_account + before_action :set_body_classes def show @import = Import.new @@ -31,4 +32,8 @@ class Settings::ImportsController < ApplicationController def import_params params.require(:import).permit(:data, :type) end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/migrations_controller.rb b/app/controllers/settings/migrations_controller.rb index bc6436b87..bd4f9c87a 100644 --- a/app/controllers/settings/migrations_controller.rb +++ b/app/controllers/settings/migrations_controller.rb @@ -4,6 +4,7 @@ class Settings::MigrationsController < ApplicationController layout 'admin' before_action :authenticate_user! + before_action :set_body_classes def show @migration = Form::Migration.new(account: current_account.moved_to_account) @@ -31,4 +32,8 @@ class Settings::MigrationsController < ApplicationController current_account.moved_to_account_id != @migration.account&.id && current_account.id != @migration.account&.id end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/notifications_controller.rb b/app/controllers/settings/notifications_controller.rb index fe45c17b2..d0754296c 100644 --- a/app/controllers/settings/notifications_controller.rb +++ b/app/controllers/settings/notifications_controller.rb @@ -4,6 +4,7 @@ class Settings::NotificationsController < ApplicationController layout 'admin' before_action :authenticate_user! + before_action :set_body_classes def show; end @@ -29,4 +30,8 @@ class Settings::NotificationsController < ApplicationController interactions: %i(must_be_follower must_be_following must_be_following_dm) ) end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index b83900f07..7bb5fb112 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -4,6 +4,7 @@ class Settings::PreferencesController < ApplicationController layout 'admin' before_action :authenticate_user! + before_action :set_body_classes def show; end @@ -51,4 +52,8 @@ class Settings::PreferencesController < ApplicationController interactions: %i(must_be_follower must_be_following) ) end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/profiles_controller.rb b/app/controllers/settings/profiles_controller.rb index fe265c81d..5b3bfd71f 100644 --- a/app/controllers/settings/profiles_controller.rb +++ b/app/controllers/settings/profiles_controller.rb @@ -7,6 +7,7 @@ class Settings::ProfilesController < ApplicationController before_action :authenticate_user! before_action :set_account + before_action :set_body_classes obfuscate_filename [:account, :avatar] obfuscate_filename [:account, :header] @@ -34,4 +35,8 @@ class Settings::ProfilesController < ApplicationController def set_account @account = current_user.account end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/sessions_controller.rb b/app/controllers/settings/sessions_controller.rb index 0da1b027b..74cebc07b 100644 --- a/app/controllers/settings/sessions_controller.rb +++ b/app/controllers/settings/sessions_controller.rb @@ -2,6 +2,7 @@ class Settings::SessionsController < ApplicationController before_action :set_session, only: :destroy + before_action :set_body_classes def destroy @session.destroy! @@ -14,4 +15,8 @@ class Settings::SessionsController < ApplicationController def set_session @session = current_user.session_activations.find(params[:id]) end + + def set_body_classes + @body_classes = 'admin' + end end diff --git a/app/controllers/settings/two_factor_authentication/confirmations_controller.rb b/app/controllers/settings/two_factor_authentication/confirmations_controller.rb index 8d534960d..ee567c2a7 100644 --- a/app/controllers/settings/two_factor_authentication/confirmations_controller.rb +++ b/app/controllers/settings/two_factor_authentication/confirmations_controller.rb @@ -7,6 +7,7 @@ module Settings before_action :authenticate_user! before_action :ensure_otp_secret + before_action :set_body_classes def new prepare_two_factor_form @@ -43,6 +44,10 @@ module Settings def ensure_otp_secret redirect_to settings_two_factor_authentication_path unless current_user.otp_secret end + + def set_body_classes + @body_classes = 'admin' + end end end end diff --git a/app/controllers/settings/two_factor_authentication/recovery_codes_controller.rb b/app/controllers/settings/two_factor_authentication/recovery_codes_controller.rb index e591e9502..bfb103620 100644 --- a/app/controllers/settings/two_factor_authentication/recovery_codes_controller.rb +++ b/app/controllers/settings/two_factor_authentication/recovery_codes_controller.rb @@ -6,6 +6,7 @@ module Settings layout 'admin' before_action :authenticate_user! + before_action :set_body_classes def create @recovery_codes = current_user.generate_otp_backup_codes! @@ -13,6 +14,12 @@ module Settings flash[:notice] = I18n.t('two_factor_authentication.recovery_codes_regenerated') render :index end + + private + + def set_body_classes + @body_classes = 'admin' + end end end end diff --git a/app/controllers/settings/two_factor_authentications_controller.rb b/app/controllers/settings/two_factor_authentications_controller.rb index 863cc7351..e4d8aed41 100644 --- a/app/controllers/settings/two_factor_authentications_controller.rb +++ b/app/controllers/settings/two_factor_authentications_controller.rb @@ -6,6 +6,7 @@ module Settings before_action :authenticate_user! before_action :verify_otp_required, only: [:create] + before_action :set_body_classes def show @confirmation = Form::TwoFactorConfirmation.new @@ -43,5 +44,9 @@ module Settings current_user.validate_and_consume_otp!(confirmation_params[:code]) || current_user.invalidate_otp_backup_code!(confirmation_params[:code]) end + + def set_body_classes + @body_classes = 'admin' + end end end diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index c98d85f7b..6ce67d91e 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -17,4 +17,4 @@ = yield -= render template: 'layouts/application', locals: { body_classes: 'admin' } += render template: 'layouts/application' From 9b5348240eb78814690691288c655ede7d7f9415 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Oct 2018 01:17:01 +0200 Subject: [PATCH 027/124] Add consistent interpolations check to CircleCI (#9072) * Add consistent interpolations check to CircleCI * Fix locale strings using wrong variables --- .circleci/config.yml | 5 +++-- config/locales/ar.yml | 12 ++++++------ config/locales/bg.yml | 6 ++---- config/locales/ca.yml | 2 +- config/locales/devise.bg.yml | 6 +++--- config/locales/devise.ca.yml | 2 +- config/locales/devise.fr.yml | 4 ++-- config/locales/devise.he.yml | 2 +- config/locales/devise.hr.yml | 2 +- config/locales/devise.hu.yml | 2 +- config/locales/devise.io.yml | 6 +++--- config/locales/devise.ja.yml | 2 +- config/locales/devise.nl.yml | 4 ++-- config/locales/devise.no.yml | 2 +- config/locales/devise.oc.yml | 4 ++-- config/locales/devise.pl.yml | 4 ++-- config/locales/devise.pt-BR.yml | 2 +- config/locales/devise.uk.yml | 2 +- config/locales/devise.zh-HK.yml | 2 +- config/locales/devise.zh-TW.yml | 2 +- config/locales/he.yml | 2 +- config/locales/hr.yml | 2 +- config/locales/id.yml | 6 ++---- config/locales/io.yml | 2 +- config/locales/pt.yml | 2 +- config/locales/simple_form.co.yml | 4 ++-- config/locales/simple_form.de.yml | 4 ++-- config/locales/simple_form.fi.yml | 4 ++-- config/locales/simple_form.fr.yml | 4 ++-- config/locales/simple_form.io.yml | 4 ++-- config/locales/simple_form.oc.yml | 4 ++-- config/locales/simple_form.uk.yml | 4 ++-- config/locales/simple_form.zh-CN.yml | 4 ++-- config/locales/sk.yml | 2 +- config/locales/sr-Latn.yml | 2 +- config/locales/sv.yml | 2 +- config/locales/th.yml | 1 - config/locales/tr.yml | 2 +- config/locales/zh-HK.yml | 6 ++---- 39 files changed, 64 insertions(+), 70 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index add73d677..c1b963472 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -13,8 +13,8 @@ aliases: ALLOW_NOPAM: true CONTINUOUS_INTEGRATION: true DISABLE_SIMPLECOV: true - PAM_ENABLED: true - PAM_DEFAULT_SERVICE: pam_test + PAM_ENABLED: true + PAM_DEFAULT_SERVICE: pam_test PAM_CONTROLLED_SERVICE: pam_test_controlled working_directory: ~/projects/mastodon/ @@ -176,6 +176,7 @@ jobs: - run: bundle exec i18n-tasks check-normalized - run: bundle exec i18n-tasks unused - run: bundle exec i18n-tasks missing-plural-keys + - run: bundle exec i18n-tasks check-consistent-interpolations workflows: version: 2 diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 36922f1f8..afbb32088 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -162,8 +162,8 @@ ar: web: الويب action_logs: actions: - assigned_to_self_report: قام {name} بتعيين التقرير٪ {target} لأنفسهم - change_email_user: غيّر٪ {name} عنوان البريد الإلكتروني للمستخدم٪ {target} + assigned_to_self_report: قام %{name} بتعيين التقرير %{target} لأنفسهم + change_email_user: غيّر %{name} عنوان البريد الإلكتروني للمستخدم %{target} confirm_user: "%{name} قد قام بتأكيد عنوان البريد الإلكتروني لـ %{target}" create_custom_emoji: "%{name} قام برفع إيموجي جديد %{target}" create_domain_block: "%{name} قام بحجب نطاق %{target}" @@ -179,13 +179,13 @@ ar: enable_user: لقد قام %{name} بتنشيط تسجيل الدخول للمستخدِم %{target} memorialize_account: لقد قام %{name} بتحويل حساب %{target} إلى صفحة تذكارية promote_user: "%{name} قام بترقية المستخدم %{target}" - remove_avatar_user: تمت إزالة٪ {name} الصورة الرمزية٪ {target} - reopen_report: تمت إعادة فتح التقرير {name}٪ {target} + remove_avatar_user: تمت إزالة %{name} الصورة الرمزية %{target} + reopen_report: تمت إعادة فتح التقرير %{name} %{target} reset_password_user: "%{name} لقد قام بإعادة تعيين الكلمة السرية الخاصة بـ %{target}" resolve_report: قام %{name} بحل التقرير %{target} silence_account: لقد قام %{name} بكتم حساب %{target} suspend_account: لقد قام %{name} بتعليق حساب %{target} - unassigned_report: "٪ {name} تقرير غير معتمد٪ {target}" + unassigned_report: "%{name} تقرير غير معتمد %{target}" unsilence_account: لقد قام %{name} بإلغاء الكتم عن حساب %{target} unsuspend_account: لقد قام %{name} بإلغاء التعليق المفروض على حساب %{target} update_custom_emoji: "%{name} قام بتحديث الإيموجي %{target}" @@ -431,7 +431,7 @@ ar: admin_mailer: new_report: body: قام %{reporter} بالإبلاغ عن %{target} - body_remote: أبلغ شخص ما من٪ {domain} عن٪ {target} + body_remote: أبلغ شخص ما من %{domain} عن %{target} subject: تقرير جديد ل%{instance} (#%{id}) application_mailer: notification_preferences: تعديل خيارات البريد الإلكتروني diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 8c11ac7b7..9813aea6f 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -61,9 +61,7 @@ bg: generic: changes_saved_msg: Успешно запазване на промените! save_changes: Запази промените - validation_errors: - one: Нещо все още не е наред! Моля, прегледай грешката по-долу - other: Нещо все още не е наред! Моля, прегледай грешките по-долу + validation_errors: Нещо все още не е наред! Моля, прегледай грешките по-долу imports: preface: Можеш да импортираш някои данни, като например всички хора, които следваш или блокираш в акаунта си на тази инстанция, от файлове, създадени чрез експорт в друга инстанция. success: Твоите данни бяха успешно качени и ще бъдат обработени впоследствие. @@ -77,7 +75,7 @@ bg: too_many: Не мога да прикача повече от 4 файла notification_mailer: digest: - body: 'Ето кратко резюме на нещата, които се случиха от последното ти посещение в %{instance} на %{since}:' + body: 'Ето кратко резюме на нещата, които се случиха от последното ти посещение на %{since}:' mention: "%{name} те спомена в:" new_followers_summary: one: Имаш един нов последовател! Ура! diff --git a/config/locales/ca.yml b/config/locales/ca.yml index d7211f654..74f76163c 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -617,7 +617,7 @@ ca: notification_mailer: digest: action: Veure totes les notificacions - body: Un resum del que et vas perdre en %{instance} desde la darrera visita el %{since} + body: Un resum del que et vas perdre desde la darrera visita el %{since} mention: "%{name} t'ha mencionat en:" new_followers_summary: one: A més, has adquirit un nou seguidor durant la teva absència! Visca! diff --git a/config/locales/devise.bg.yml b/config/locales/devise.bg.yml index 8e1ba6eb4..3c04af81b 100644 --- a/config/locales/devise.bg.yml +++ b/config/locales/devise.bg.yml @@ -8,16 +8,16 @@ bg: failure: already_authenticated: Вече си вътре в профила си. inactive: Профилът ти все още не е активиран. - invalid: Невалиден имейл адрес или парола. + invalid: Невалиден %{authentication_keys}. last_attempt: Разполагаш с още един опит преди профилът ти да бъде заключен. locked: Профилът ти е заключен. - not_found_in_database: Невалидни стойности за %{authentication_keys} или парола. + not_found_in_database: Невалиден %{authentication_keys}. timeout: Сесията ти изтече, моля влез отново, за да продължиш. unauthenticated: Преди да продължиш, трябва да влезеш в профила си или да се регистрираш. unconfirmed: Преди да продължиш, трябва да потвърдиш регистрацията си. mailer: confirmation_instructions: - subject: 'Mastodon: Инструкции за потвърждаване' + subject: 'Mastodon: Инструкции за потвърждаване %{instance}' password_change: subject: 'Mastodon: Паролата е променена' reset_password_instructions: diff --git a/config/locales/devise.ca.yml b/config/locales/devise.ca.yml index 808a5dd0a..4c17f3378 100644 --- a/config/locales/devise.ca.yml +++ b/config/locales/devise.ca.yml @@ -20,7 +20,7 @@ ca: action: Verifica l'adreça de correu explanation: Has creat un compte a %{host} amb aquesta adreça de correu electrònic. Estàs a un sol clic de l'activació. Si no fos així, ignora aquest correu electrònic. extra_html: Si us plau consulta també les regles de la instància i les nostres condicions de servei. - subject: 'Mastodon: Instruccions de confirmació' + subject: 'Mastodon: Instruccions de confirmació %{instance}' title: Verifica l'adreça de correu email_changed: explanation: 'L''adreça de correu del teu compte s''està canviant a:' diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml index e9c98a63f..b6c9e5bd8 100644 --- a/config/locales/devise.fr.yml +++ b/config/locales/devise.fr.yml @@ -8,10 +8,10 @@ fr: failure: already_authenticated: Vous êtes déjà connecté⋅e. inactive: Votre compte n’est pas encore activé. - invalid: Courriel ou mot de passe incorrect. + invalid: "%{authentication_keys} incorrect." last_attempt: Vous avez droit à une tentative avant que votre compte ne soit verrouillé. locked: Votre compte est verrouillé. - not_found_in_database: Courriel ou mot de passe invalide. + not_found_in_database: "%{authentication_keys} invalide." timeout: Votre session a expiré. Veuillez vous reconnecter pour continuer. unauthenticated: Vous devez vous connecter ou vous inscrire pour continuer. unconfirmed: Vous devez valider votre compte pour continuer. diff --git a/config/locales/devise.he.yml b/config/locales/devise.he.yml index 4a2811b1f..3d8f7fa59 100644 --- a/config/locales/devise.he.yml +++ b/config/locales/devise.he.yml @@ -17,7 +17,7 @@ he: unconfirmed: יש לאמת את כתובת הדוא"ל על מנת להמשיך. mailer: confirmation_instructions: - subject: 'מסטודון: הוראות אימות' + subject: 'מסטודון: הוראות אימות %{instance}' password_change: subject: 'מסטודון: הסיסמא שונתה' reset_password_instructions: diff --git a/config/locales/devise.hr.yml b/config/locales/devise.hr.yml index d578e404f..07c0079ab 100644 --- a/config/locales/devise.hr.yml +++ b/config/locales/devise.hr.yml @@ -16,7 +16,7 @@ hr: unconfirmed: Moraš potvrditi svoju email adresu prije no što nastaviš. mailer: confirmation_instructions: - subject: 'Mastodon: Upute za potvrđivanje' + subject: 'Mastodon: Upute za potvrđivanje %{instance}' email_changed: subject: 'Mastodon: Email adresa je promijenjena' title: Nova email adresa diff --git a/config/locales/devise.hu.yml b/config/locales/devise.hu.yml index 79ee3b194..67baca016 100644 --- a/config/locales/devise.hu.yml +++ b/config/locales/devise.hu.yml @@ -20,7 +20,7 @@ hu: action: Erősítsd meg az e-mail címedet explanation: Ezzel az e-mail címmel kezdeményeztek regisztrációt a(z) %{host} oldalon. Csak egy kattintás, és a felhasználói fiókdat aktiváljuk. Ha a regisztrációt nem te kezdeményezted, kérjük tekintsd ezt az e-mailt tárgytalannak. extra_html: Kérjük tekintsd át a az instancia szabályzatát és a felhasználási feltételeket. - subject: 'Mastodon: Megerősítési lépések' + subject: 'Mastodon: Megerősítési lépések %{instance}' title: E-mail cím megerősítése email_changed: explanation: 'A fiókodhoz tartozó e-mail címet az alábbira módosítod:' diff --git a/config/locales/devise.io.yml b/config/locales/devise.io.yml index 6ba3038bd..fce061a65 100644 --- a/config/locales/devise.io.yml +++ b/config/locales/devise.io.yml @@ -8,16 +8,16 @@ io: failure: already_authenticated: Tu ya esas enirinta. inactive: Tua konto ankore ne konfirmesas. - invalid: Nejusta retpost-adreso o pasvorto. + invalid: Nejusta %{authentication_keys}. last_attempt: Tu ankore povas probar unfoye ante ke tua konto esos extingita. locked: Tua konto esas extingita. - not_found_in_database: Nejusta retpost-adreso o pasvorto. + not_found_in_database: Nejusta %{authentication_keys}. timeout: Tua kunsido expiris. Voluntez rienirar por durar. unauthenticated: Tu devas enirar o membreskar por durar. unconfirmed: Tu devas konfirmar tua konto por durar. mailer: confirmation_instructions: - subject: Instrucioni por konfirmar + subject: Instrucioni por konfirmar %{instance} password_change: subject: Tua pasvorto chanjesis senprobleme. reset_password_instructions: diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml index 1f6395479..9df0c7332 100644 --- a/config/locales/devise.ja.yml +++ b/config/locales/devise.ja.yml @@ -20,7 +20,7 @@ ja: action: メールアドレスの確認 explanation: このメールアドレスで%{host}にアカウントを作成しました。有効にするまであと一歩です。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。 extra_html: また インスタンスのルール利用規約 もお読みください。 - subject: 'Mastodon: メールアドレスの確認' + subject: 'Mastodon: メールアドレスの確認 %{instance}' title: メールアドレスの確認 email_changed: explanation: 'アカウントのメールアドレスは以下のように変更されます:' diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml index b21798deb..637b1e731 100644 --- a/config/locales/devise.nl.yml +++ b/config/locales/devise.nl.yml @@ -8,11 +8,11 @@ nl: failure: already_authenticated: Je bent al ingelogd. inactive: Jouw account is nog niet geactiveerd. - invalid: Ongeldig e-mailadres of wachtwoord. + invalid: Ongeldig %{authentication_keys}. invalid_token: Ongeldige bevestigingscode. last_attempt: Je hebt nog één poging over voordat jouw account wordt opgeschort. locked: Jouw account is opgeschort. - not_found_in_database: Ongeldig e-mailadres of wachtwoord. + not_found_in_database: Ongeldig %{authentication_keys}. timeout: Jouw sessie is verlopen, log opnieuw in. unauthenticated: Je dient in te loggen of te registreren. unconfirmed: Je dient eerst jouw account te bevestigen. diff --git a/config/locales/devise.no.yml b/config/locales/devise.no.yml index ca16c6ba5..222a91aa3 100644 --- a/config/locales/devise.no.yml +++ b/config/locales/devise.no.yml @@ -20,7 +20,7 @@ action: Bekreft e-postadresse explanation: Du har laget en konto på %{host} med denne e-postadressen. Du er ett klikk unna å aktivere den. Hvis dette ikke var deg, vennligst se bort fra denne e-posten. extra_html: Vennligst også sjekk ut instansens regler og våre bruksvilkår. - subject: 'Mastodon: Instruksjoner for å bekrefte e-postadresse' + subject: 'Mastodon: Instruksjoner for å bekrefte e-postadresse %{instance}' title: Bekreft e-postadresse email_changed: explanation: 'E-postadressen til din konto endres til:' diff --git a/config/locales/devise.oc.yml b/config/locales/devise.oc.yml index 06617af34..beecbb426 100644 --- a/config/locales/devise.oc.yml +++ b/config/locales/devise.oc.yml @@ -8,10 +8,10 @@ oc: failure: already_authenticated: Sètz ja connectat. inactive: Vòstre compte es pas encara activat. - invalid: Corrièl o senhal invalid. + invalid: "%{authentication_keys} invalid." last_attempt: Vos demòra un ensag abans que vòstre compte siasque blocat. locked: Vòstre compte es blocat. - not_found_in_database: Corrièl o senhal invalid. + not_found_in_database: "%{authentication_keys} invalid." timeout: Vòstra session a expirat. Mercés de vos tornar connectar per contunhar. unauthenticated: Vos cal vos connectar o marcar abans de contunhar. unconfirmed: Vos cal confirmar vòstra adreça de corrièl abans de contunhar. diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml index 49fcca024..77afc4bf5 100644 --- a/config/locales/devise.pl.yml +++ b/config/locales/devise.pl.yml @@ -20,7 +20,7 @@ pl: action: Zweryfikuj adres e-mail explanation: Utworzyłeś(-aś) konto na %{host} podając ten adres e-mail. Jedno kliknięcie dzieli Cię od aktywacji tego konta. Jeżeli to nie Ty, zignoruj ten e-mail. extra_html: Przeczytaj też regulamin instancji i nasze zasady użytkowania. - subject: 'Mastodon: Instrukcje weryfikacji adresu e-mail' + subject: 'Mastodon: Instrukcje weryfikacji adresu e-mail na %{instance}' title: Zweryfikuj adres e-mail email_changed: explanation: 'Adres e-mail dla Twojego konta zostanie zmieniony na:' @@ -35,7 +35,7 @@ pl: reconfirmation_instructions: explanation: Potwierdź nowy adres aby zmienić e-mail. extra: Jeżeli nie próbowałeś(-aś) zmienić e-maila, zignoruj tą wiadomość. Adres e-mail przypisany do konta Mastodona nie ulegnie zmianie, jeżeli nie użyjesz powyższego odnośniku. - subject: 'Mastodon: Potwierdź adres e-mail na &{instance}' + subject: 'Mastodon: Potwierdź adres e-mail na %{instance}' title: Zweryfikuj adres e-mail reset_password_instructions: action: Zmień hasło diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml index 5f47bc901..051329c20 100644 --- a/config/locales/devise.pt-BR.yml +++ b/config/locales/devise.pt-BR.yml @@ -20,7 +20,7 @@ pt-BR: action: Verificar endereço de e-mail explanation: Você criou uma conta em %{host} com esse endereço de e-mail. Você está a um clique de ativá-la. Se não foi você, por favor ignore esse e-mail. extra_html: Por favor confira também as regras da instância e nossos termos de serviço. - subject: 'Mastodon: Instruções de confirmação' + subject: 'Mastodon: Instruções de confirmação para %{instance}' title: Verifique o endereço de e-mail email_changed: explanation: 'O e-mail associado à sua conta será mudado para:' diff --git a/config/locales/devise.uk.yml b/config/locales/devise.uk.yml index 70ac6e4b2..149fc6ce5 100644 --- a/config/locales/devise.uk.yml +++ b/config/locales/devise.uk.yml @@ -17,7 +17,7 @@ uk: unconfirmed: Для продовження Вам потрібно підтвердити Вашу поштову скриньку. mailer: confirmation_instructions: - subject: 'Mastodon: Інструкції для підтвердження' + subject: 'Mastodon: Інструкції для підтвердження %{instance}' password_change: subject: 'Mastodon: Ваш пароль змінений' reset_password_instructions: diff --git a/config/locales/devise.zh-HK.yml b/config/locales/devise.zh-HK.yml index 79e5a3d25..b7d88ef94 100644 --- a/config/locales/devise.zh-HK.yml +++ b/config/locales/devise.zh-HK.yml @@ -20,7 +20,7 @@ zh-HK: action: 驗證電子郵件地址 explanation: 你在 %{host} 上使用這個電子郵件地址建立了一個帳戶。只需點擊下面的連結,即可啟用帳戶。如果你並沒有建立過帳戶,請忽略此郵件。 extra_html: 請記得閱讀本服務站的相關規定使用條款。 - subject: 'Mastodon: 確認電郵地址' + subject: 'Mastodon: 確認電郵地址 %{instance}' title: 驗證電子郵件地址 email_changed: explanation: 你的帳戶的電子郵件地址即將變更為: diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml index 571429429..195f167a0 100644 --- a/config/locales/devise.zh-TW.yml +++ b/config/locales/devise.zh-TW.yml @@ -20,7 +20,7 @@ zh-TW: action: 驗證 E-mail 地址 explanation: 您已經在 %{host} 上以此 E-mail 地址建立了一個帳號。您距離啟用它只剩一次點擊之遙了。如果這不是你,請忽略此 E-mail 。 extra_html: 同時也請看看該站點的規則我們的服務條款。 - subject: 'Mastodon: 信箱驗證' + subject: 'Mastodon: 信箱驗證 %{instance}' title: 驗證 E-mail 地址 email_changed: explanation: 您帳號的 E-mail 地址被變更為: diff --git a/config/locales/he.yml b/config/locales/he.yml index 09d57da3b..79b1ed822 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -297,7 +297,7 @@ he: too_many: לא ניתן להוסיף יותר מארבעה קבצים notification_mailer: digest: - body: 'להלן סיכום זריז של הדברים שקרו על %{instance} מאז ביקורך האחרון ב-%{since}:' + body: 'להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since}:' mention: "%{name} פנה אליך ב:" new_followers_summary: one: נוסף לך עוקב! סחתיין! diff --git a/config/locales/hr.yml b/config/locales/hr.yml index a6e7649f2..851b3623b 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -74,7 +74,7 @@ hr: upload: Upload notification_mailer: digest: - body: 'Ovo je kratak sažetak propuštenog %{instance} od tvog prošlog posjeta %{since}:' + body: 'Ovo je kratak sažetak propuštenog od tvog prošlog posjeta %{since}:' mention: "%{name} te je spomenuo:" new_followers_summary: one: Imaš novog sljedbenika! Yay! diff --git a/config/locales/id.yml b/config/locales/id.yml index 3da3583f6..8595fad99 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -204,9 +204,7 @@ id: generic: changes_saved_msg: Perubahan berhasil disimpan! save_changes: Simpan perubahan - validation_errors: - one: Ada yang tidak beres! Mohon tinjau error dibawah ini - other: Ada yang tidak beres! Mohon tinjau error dibawah ini + validation_errors: Ada yang tidak beres! Mohon tinjau error dibawah ini imports: preface: Anda bisa mengimpor data tertentu seperti orang-orang yang anda ikuti atau anda blokir di server ini, dari file yang dibuat oleh fitur expor di server lain. success: Data anda berhasil diupload dan akan diproses sesegera mungkin @@ -221,7 +219,7 @@ id: too_many: Tidak dapat melampirkan lebih dari 4 file notification_mailer: digest: - body: 'Ini adalah ringkasan singkat yang anda lewatkan pada %{instance} sejak kunjungan terakhir anda pada %{since}:' + body: 'Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since}:' mention: "%{name} menyebut anda di:" new_followers_summary: one: Anda mendapatkan satu pengikut baru! Hore! diff --git a/config/locales/io.yml b/config/locales/io.yml index b739df3af..d07997663 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -201,7 +201,7 @@ io: too_many: Cannot attach more than 4 files notification_mailer: digest: - body: 'Yen mikra rezumo di to, quo eventis en %{instance}, depos ke tu laste vizitis en %{since}:' + body: 'Yen mikra rezumo di to, depos ke tu laste vizitis en %{since}:' mention: "%{name} mencionis tu en:" new_followers_summary: one: Tu obtenis nova sequanto! Yey! diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 5f532ea37..b68ffbd7f 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -150,7 +150,7 @@ pt: enable_user: "%{name} ativou o acesso para o utilizador %{target}" memorialize_account: "%{name} transformou a conta de %{target} em um memorial" promote_user: "%{name} promoveu o utilizador %{target}" - reset_password_user: "%{name} restabeleceu a palavra-passe do utilizador %{target" + reset_password_user: "%{name} restabeleceu a palavra-passe do utilizador %{target}" resolve_report: "%{name} recusou o relatório %{target}" silence_account: "%{name} silenciou a conta de %{target}" suspend_account: "%{name} suspendeu a conta de %{target}" diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml index c4a6bd169..fc0795a0b 100644 --- a/config/locales/simple_form.co.yml +++ b/config/locales/simple_form.co.yml @@ -4,7 +4,7 @@ co: hints: defaults: autofollow: Quelli·e chì s'arregistranu cù l'invitazione saranu autumaticamente abbunati·e à voi - avatar: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à %{dimensions}px + avatar: Furmatu PNG, GIF o JPG. %{size} o menu. Sarà ridottu à %{dimensions}px bot: Stu contu hè autumatizatu è ùn hè forse micca survegliatu context: Cuntestu·i induve u filtru deve esse applicatu digest: Solu mandatu dopu à una longa perioda d’inattività, è solu s’elli ci sò novi missaghji diretti @@ -13,7 +13,7 @@ co: other: Ci fermanu %{count} caratteri email: Avete da riceve un'e-mail di cunfirmazione fields: Pudete avè fin’à 4 elementi mustrati cum’un tavulone nant’à u vostru prufile - header: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à %{dimensions}px + header: Furmatu PNG, GIF o JPG. %{size} o menu. Sarà ridottu à %{dimensions}px inbox_url: Cupiate l'URL di a pagina d'accolta di u ripetitore chì vulete utilizà irreversible: I statuti filtrati saranu sguassati di manera irreversibile, ancu s'ellu hè toltu u filtru locale: A lingua di l'interfaccia utilizatore, di l'e-mail è di e nutificazione push diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index cca9361e4..340cd5ee7 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -4,7 +4,7 @@ de: hints: defaults: autofollow: Leute die sich über deine Einladung registrieren werden dir automatisch folgen - avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf 400×400 px herunterskaliert + avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert bot: Dieses Konto führt lediglich automatisierte Aktionen durch und wird möglicherweise nicht überwacht context: Ein oder mehrere Aspekte, wo der Filter greifen soll digest: Wenn du lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen in deiner Abwesenheit zugeschickt @@ -13,7 +13,7 @@ de: other: %{count} Zeichen verbleiben email: Du wirst ein Bestätigungs-E-Mail erhalten fields: Du kannst bis zu 4 Elemente als Tabelle dargestellt auf deinem Profil anzeigen lassen - header: PNG, GIF oder JPG. Maximal %{size}. Wird auf 700×335 px herunterskaliert + header: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert inbox_url: Kopiere die URL von der Startseite des gewünschten Relays irreversible: Gefilterte Beiträge werden unwiderruflich gefiltert, selbst wenn der Filter später entfernt wurde locale: Die Sprache der Oberfläche, E-Mails und Push-Benachrichtigungen diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index e90bd2e0b..e78ba9cc7 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -3,13 +3,13 @@ fi: simple_form: hints: defaults: - avatar: PNG, GIF tai JPG. Enintään 2 Mt. Skaalataan kokoon 400 x 400 px + avatar: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana display_name: one: 1 merkki jäljellä other: %{count} merkkiä jäljellä fields: Sinulla voi olla korkeintaan 4 asiaa profiilissasi taulukossa - header: PNG, GIF tai JPG. Enintään 2 Mt. Skaalataan kokoon 700 x 335 px + header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px locked: Sinun täytyy hyväksyä seuraajat manuaalisesti note: one: 1 merkki jäljellä diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 6403bced3..40ae0400f 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -4,7 +4,7 @@ fr: hints: defaults: autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement - avatar: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à %{dimensions}px + avatar: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px bot: Ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé context: Un ou plusieurs contextes où le filtre devrait s’appliquer digest: Uniquement envoyé après une longue période d’inactivité et uniquement si vous avez reçu des messages personnels pendant votre absence @@ -13,7 +13,7 @@ fr: other: %{count} caractères restants email: Vous recevrez un courriel de confirmation fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil - header: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à %{dimensions}px + header: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px inbox_url: Copiez l’URL depuis la page d’accueil du relais que vous souhaitez utiliser irreversible: Les pouets filtrés disparaîtront irrémédiablement, même si le filtre est supprimé plus tard locale: La langue de l’interface, des courriels et des notifications diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index cf87aa6d9..c4fc702fe 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -3,9 +3,9 @@ io: simple_form: hints: defaults: - avatar: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a %{dimensions}px + avatar: En la formato PNG, GIF o JPG. Til %{size}. Esos mikrigita a %{dimensions}px display_name: 30 signi maxime - header: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a %{dimensions}px + header: En la formato PNG, GIF o JPG. Til %{size}. Esos mikrigita a %{dimensions}px locked: Tu devos aprobar omna demandi di sequado, e tua mesaji esos senchanje nur por tua sequanti. note: 160 signi maxime imports: diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index 5363aa02a..d46befdc1 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -4,7 +4,7 @@ oc: hints: defaults: autofollow: Lo monde que se marcan gràcia a l’invitacion vos segràn automaticament - avatar: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhat en %{dimensions}px + avatar: PNG, GIF o JPG. Maximum %{size}. Serà retalhat en %{dimensions}px bot: Avisar lo monde qu’aqueste compte es pas d’una persona context: Un o mai de contèxtes ont lo filtre deuriá s’aplicar digest: Solament enviat aprèp un long moment d’inactivitat e solament s’avètz recebut de messatges personals pendent vòstra abséncia @@ -12,7 +12,7 @@ oc: one: Demòra encara 1 caractèr other: Demòran encara %{count} caractèrs fields: Podètz far veire cap a 4 elements sus vòstre perfil - header: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhada en %{dimensions}px + header: PNG, GIF o JPG. Maximum %{size}. Serà retalhada en %{dimensions}px inbox_url: Copiatz l’URL de la pagina màger del relai que volètz utilizar irreversible: Los tuts filtrats desapareisseràn irreversiblament, encara que lo filtre siá suprimit mai tard locale: La lenga de l’interfàcia d’utilizacion, los messatges e las notificacions diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 834631fdf..ba25f53e2 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -3,10 +3,10 @@ uk: simple_form: hints: defaults: - avatar: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до %{dimensions}px + avatar: PNG, GIF, або JPG. Максимум - %{size}. Буде зменшено до %{dimensions}px bot: Цей аккаунт в основному виконує автоматичні дії та може не відстежуватіся display_name: 'Залишилося символів: %{count}' - header: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до %{dimensions}px + header: PNG, GIF, або JPG. Максимум - %{size}. Буде зменшено до %{dimensions}px locked: Буде вимагати від Вас самостійного підтверждення підписників, змінить приватність постів за замовчуванням на "тільки для підписників" note: 'Осталось символов: %{count}' imports: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 36b5a3f66..60a2548d2 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -4,12 +4,12 @@ zh-CN: hints: defaults: autofollow: 通过邀请链接注册的用户将会自动关注你 - avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 400×400px + avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px bot: 来自这个帐户的绝大多数操作都是自动进行的,并且可能无人监控 digest: 仅在你长时间未登录,且收到了私信时发送 display_name: 还能输入 %{count} 个字符 fields: 这将会在个人资料页上以表格的形式展示,最多 4 个项目 - header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 700×335px + header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px locale: 用户界面、电子邮件和推送通知中使用的语言 locked: 你需要手动审核所有关注请求 note: 还能输入 %{count} 个字符 diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 2bdd3afa6..6b18d31de 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -332,7 +332,7 @@ sk: delete: Vymaž placeholder: Opíš aké opatrenia boli urobené, alebo akékoľvek iné súvisiace aktualizácie… reopen: Znovu otvor report - report: Nahlásiť + report: 'Nahlásiť #%{id}' reported_account: Nahlásený účet reported_by: Nahlásené užívateľom resolved: Vyriešené diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index ff31203c8..12867f4eb 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -465,7 +465,7 @@ sr-Latn: title: Moderacija notification_mailer: digest: - body: 'Evo kratak pregled šta ste propustili na instanci %{instance} od poslednje posete od %{since}:' + body: 'Evo kratak pregled šta ste propustili od poslednje posete od %{since}:' mention: "%{name} Vas je pomenuo u:" new_followers_summary: few: Dobili ste %{count} nova pratioca! Sjajno! diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 4f80a46f1..465a9b127 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -808,7 +808,7 @@ sv: tip_bridge_html: Om du kommer från Twitter kan du hitta dina vänner på Mastodon genom att använda bridge-appen. Det fungerar dock bara om de också har använt bridge-appen! tip_federated_timeline: Den förenade tidslinjen är en störtflodsvy av Mastodon-nätverket. Men det inkluderar bara människor som dina grannar följer, så det är inte komplett. tip_following: Du följer din servers administratör(er) som standard. För att hitta fler intressanta personer, kolla de lokala och förenade tidslinjerna. - tip_local_timeline: Den lokala tidslinjen är en störtflodsvy av personer på% {instance}. Det här är dina närmaste grannar! + tip_local_timeline: Den lokala tidslinjen är en störtflodsvy av personer på %{instance}. Det här är dina närmaste grannar! tip_mobile_webapp: Om din mobila webbläsare erbjuder dig att lägga till Mastodon till ditt hemskärm kan du få push-meddelanden. Det fungerar som en inbyggd app på många sätt! tips: Tips title: Välkommen ombord, %{name}! diff --git a/config/locales/th.yml b/config/locales/th.yml index 3ed73c7f5..44ed5b99e 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -224,7 +224,6 @@ th: too_many: แนบมากกว่า 4 ไฟล์ไม่ได้ notification_mailer: digest: - body: 'Here is a brief summary of what you missed on %{instance} since your last visit on %{since}:' mention: "%{name} ส่งข้อความถึงคุณ:" new_followers_summary: one: ยินดีด้วยคุณได้ผู้ติดตามคนใหม่! Yay! diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 99ba89397..3a7c2e68e 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -222,7 +222,7 @@ tr: too_many: 4'ten fazla dosya ekleyemezsiniz notification_mailer: digest: - body: 'Son ziyaretiniz olan %{since}''den beri %{instance}''da kaçırdığınız şeylerin özeti:' + body: 'Son ziyaretiniz olan %{since}''den beri''da kaçırdığınız şeylerin özeti:' mention: "%{name} senden bahsetti:" new_followers_summary: one: Yeni bir takipçiniz var! diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index db7c0c47c..939093595 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -224,9 +224,7 @@ zh-HK: suspend: 自動刪除 severity: 阻隔分級 show: - affected_accounts: - one: 資料庫中有 %{count} 個用戶受影響 - other: 資料庫中有%{count}個用戶受影響 + affected_accounts: 資料庫中有%{count}個用戶受影響 retroactive: silence: 對此域名的所有用戶取消靜音 suspend: 對此域名的所有用戶取消除名 @@ -530,7 +528,7 @@ zh-HK: notification_mailer: digest: action: 查看所有通知 - body: 這是自從你在%{since}使用%{instance}以後,你錯失了的訊息︰ + body: 這是自從你在%{since}使用以後,你錯失了的訊息︰ mention: "%{name} 在此提及了你︰" new_followers_summary: one: 你新獲得了 1 位關注者了!恭喜! From 4ea718ef18c2171edf8ed0089fd0d28bdfb78ba1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Oct 2018 01:44:02 +0200 Subject: [PATCH 028/124] Migrate all old direct messages to new conversations schema (#9085) --- app/models/account_conversation.rb | 3 ++ ...024224956_migrate_account_conversations.rb | 43 +++++++++++++++++++ db/schema.rb | 2 +- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20181024224956_migrate_account_conversations.rb diff --git a/app/models/account_conversation.rb b/app/models/account_conversation.rb index b7447d805..cc6b39279 100644 --- a/app/models/account_conversation.rb +++ b/app/models/account_conversation.rb @@ -58,6 +58,9 @@ class AccountConversation < ApplicationRecord def add_status(recipient, status) conversation = find_or_initialize_by(account: recipient, conversation_id: status.conversation_id, participant_account_ids: participants_from_status(recipient, status)) + + return conversation if conversation.status_ids.include?(status.id) + conversation.status_ids << status.id conversation.unread = status.account_id != recipient.id conversation.save diff --git a/db/migrate/20181024224956_migrate_account_conversations.rb b/db/migrate/20181024224956_migrate_account_conversations.rb new file mode 100644 index 000000000..1821e8c27 --- /dev/null +++ b/db/migrate/20181024224956_migrate_account_conversations.rb @@ -0,0 +1,43 @@ +class MigrateAccountConversations < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def up + say '' + say 'WARNING: This migration may take a *long* time for large instances' + say 'It will *not* lock tables for any significant time, but it may run' + say 'for a very long time. We will pause for 10 seconds to allow you to' + say 'interrupt this migration if you are not ready.' + say '' + + 10.downto(1) do |i| + say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true + sleep 1 + end + + local_direct_statuses.find_each do |status| + AccountConversation.add_status(status.account, status) + end + + notifications_about_direct_statuses.find_each do |notification| + AccountConversation.add_status(notification.account, notification.target_status) + end + end + + def down + end + + private + + def local_direct_statuses + Status.unscoped + .local + .where(visibility: :direct) + .includes(:account, mentions: :account) + end + + def notifications_about_direct_statuses + Notification.joins(mention: :status) + .where(activity_type: 'Mention', statuses: { visibility: :direct }) + .includes(:account, mention: { status: [:account, mentions: :account] }) + end +end diff --git a/db/schema.rb b/db/schema.rb index 8facfa259..3c4f41648 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2018_10_18_205649) do +ActiveRecord::Schema.define(version: 2018_10_24_224956) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" From 13e049d7729425ade92a6800357bfd6224a722b8 Mon Sep 17 00:00:00 2001 From: Ben Lubar Date: Wed, 24 Oct 2018 20:13:35 -0500 Subject: [PATCH 029/124] Allow cross-origin requests to /.well-known/* URLs. (#9083) Right now, this includes three endpoints: host-meta, webfinger, and change-password. host-meta and webfinger are publicly available and do not use any authentication. Nothing bad can be done by accessing them in a user's browser. change-password being CORS-enabled will only reveal the URL it redirects to (which is /auth/edit) but not anything about the actual /auth/edit page, because it does not have CORS enabled. The documentation for hosting an instance on a different domain should also be updated to point out that Access-Control-Allow-Origin: * should be set at a minimum for the /.well-known/host-meta redirect to allow browser-based non-proxied instance discovery. --- config/initializers/cors.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/initializers/cors.rb b/config/initializers/cors.rb index 681a7498f..36d3663cb 100644 --- a/config/initializers/cors.rb +++ b/config/initializers/cors.rb @@ -9,6 +9,10 @@ Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins '*' + resource '/.well-known/*', + headers: :any, + methods: [:get], + credentials: false resource '/@:username', headers: :any, methods: [:get], From 2f0797bdbd7c25b0df3adfaa91d7b4e7bf4d513c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Oct 2018 04:42:25 +0200 Subject: [PATCH 030/124] Bump version to 2.6.0rc2 (#9087) * Bump version to 2.6.0rc2 * Update CHANGELOG.md --- CHANGELOG.md | 5 +++++ lib/mastodon/version.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 666ccd14b..f989f111e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,8 @@ All notable changes to this project will be documented in this file. - Add `description` meta tag (#8941) - Add `Content-Security-Policy` header (#8957) - Add cache for the instance info API (#8765) +- Add suggested follows to search screen in mobile layout (#9010) +- Add CORS header to `/.well-known/*` routes (#9083) ### Changed @@ -57,6 +59,7 @@ All notable changes to this project will be documented in this file. - Change style of success and failure messages (#8973) - Change DM filtering to always allow DMs from staff (#8993) - Change recommended Ruby version to 2.5.3 (#9003) +- Change docker-compose default to persist volumes in current directory (#9055) ### Deprecated @@ -85,6 +88,8 @@ All notable changes to this project will be documented in this file. - Fix crash in streaming API when tag param missing (#8955) - Fix hotkeys not working when no element is focused (#8998) - Fix some hotkeys not working on detailed status view (#9006) +- Fix og:url on status pages (#9047) +- Fix upload option buttons only being visible on hover (#9074) ## [2.5.2] - 2018-10-12 ### Security diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index d0a1542dd..8b26f4ce6 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -21,7 +21,7 @@ module Mastodon end def flags - 'rc1' + 'rc2' end def to_a From 4e6cffe00c5d42576fe37771d71b87e1dee60e6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 25 Oct 2018 08:29:12 +0200 Subject: [PATCH 031/124] Bump aws-sdk-s3 from 1.21.0 to 1.23.0 (#9089) Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.21.0 to 1.23.0. - [Release notes](https://github.com/aws/aws-sdk-ruby/releases) - [Changelog](https://github.com/aws/aws-sdk-ruby/blob/master/gems/aws-sdk-s3/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-ruby/commits) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index c9a16ee14..b68dc54d8 100644 --- a/Gemfile +++ b/Gemfile @@ -15,7 +15,7 @@ gem 'makara', '~> 0.4' gem 'pghero', '~> 2.2' gem 'dotenv-rails', '~> 2.5' -gem 'aws-sdk-s3', '~> 1.21', require: false +gem 'aws-sdk-s3', '~> 1.23', require: false gem 'fog-core', '<= 2.1.0' gem 'fog-openstack', '~> 0.3', require: false gem 'paperclip', '~> 6.0' diff --git a/Gemfile.lock b/Gemfile.lock index edb552abb..d4599590f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -92,16 +92,16 @@ GEM av (0.9.0) cocaine (~> 0.5.3) aws-eventstream (1.0.1) - aws-partitions (1.105.0) - aws-sdk-core (3.30.0) + aws-partitions (1.106.0) + aws-sdk-core (3.35.0) aws-eventstream (~> 1.0) aws-partitions (~> 1.0) aws-sigv4 (~> 1.0) jmespath (~> 1.0) - aws-sdk-kms (1.9.0) + aws-sdk-kms (1.11.0) aws-sdk-core (~> 3, >= 3.26.0) aws-sigv4 (~> 1.0) - aws-sdk-s3 (1.21.0) + aws-sdk-s3 (1.23.0) aws-sdk-core (~> 3, >= 3.26.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.0) @@ -660,7 +660,7 @@ DEPENDENCIES active_record_query_trace (~> 1.5) addressable (~> 2.5) annotate (~> 2.7) - aws-sdk-s3 (~> 1.21) + aws-sdk-s3 (~> 1.23) better_errors (~> 2.5) binding_of_caller (~> 0.7) bootsnap (~> 1.3) From 98b4cdf198d9499a2e51d984ed3eb188ed584c9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 25 Oct 2018 08:29:25 +0200 Subject: [PATCH 032/124] Bump parallel_tests from 2.24.0 to 2.25.0 (#9090) Bumps [parallel_tests](https://github.com/grosser/parallel_tests) from 2.24.0 to 2.25.0. - [Release notes](https://github.com/grosser/parallel_tests/releases) - [Commits](https://github.com/grosser/parallel_tests/compare/v2.24.0...v2.25.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index b68dc54d8..1e48b500a 100644 --- a/Gemfile +++ b/Gemfile @@ -114,7 +114,7 @@ group :test do gem 'rspec-sidekiq', '~> 3.0' gem 'simplecov', '~> 0.16', require: false gem 'webmock', '~> 3.4' - gem 'parallel_tests', '~> 2.24' + gem 'parallel_tests', '~> 2.25' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index d4599590f..d7ccb59b8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -393,7 +393,7 @@ GEM av (~> 0.9.0) paperclip (>= 2.5.2) parallel (1.12.1) - parallel_tests (2.24.0) + parallel_tests (2.25.0) parallel parser (2.5.1.2) ast (~> 2.4.0) @@ -723,7 +723,7 @@ DEPENDENCIES ox (~> 2.10) paperclip (~> 6.0) paperclip-av-transcoder (~> 0.6) - parallel_tests (~> 2.24) + parallel_tests (~> 2.25) pg (~> 1.1) pghero (~> 2.2) pkg-config (~> 1.3) From 8445f77a5b9b7c1c16216422f04c44783ffbd2db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= Date: Thu, 25 Oct 2018 12:45:18 +0200 Subject: [PATCH 033/124] i18n: Update Polish translation (#9070) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * i18n: Update Polish translation Signed-off-by: Marcin Mikołajczak * kruci Signed-off-by: Marcin Mikołajczak * Update config/locales/pl.yml Co-Authored-By: m4sk1n --- config/locales/pl.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 4921055e3..eb102cdec 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -136,7 +136,7 @@ pl: most_recent: Najnowsze title: Kolejność outbox_url: Adres skrzynki nadawczej - perform_full_suspension: Całkowicie zawieś + perform_full_suspension: Zawieś profile_url: Adres profilu promote: Podnieś uprawnienia protocol: Protokół @@ -185,6 +185,7 @@ pl: create_domain_block: "%{name} zablokował(a) domenę %{target}" create_email_domain_block: "%{name} dodał(a) domenę e-mail %{target} na czarną listę" demote_user: "%{name} zdegradował(a) użytkownika %{target}" + destroy_custom_emoji: "%{name} usunął(-ęła) emoji %{target}" destroy_domain_block: "%{name} odblokował(a) domenę %{target}" destroy_email_domain_block: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy" destroy_status: "%{name} usunął(-ęła) wpis użytkownika %{target}" @@ -270,6 +271,8 @@ pl: title: Nowa blokada domen reject_media: Odrzucaj pliki multimedialne reject_media_hint: Usuwa przechowywane lokalnie pliki multimedialne i nie pozwala na ich pobieranie. Nieprzydatne przy zawieszeniu + reject_reports: Odrzucaj zgłoszenia + reject_reports_hint: Zgłoszenia z tej instancji będą ignorowane. Nieprzydatne przy zawieszeniu severities: noop: Nic nie rób silence: Wycisz @@ -375,6 +378,9 @@ pl: hero: desc_html: Wyświetlany na stronie głównej. Zalecany jest rozmiar przynajmniej 600x100 pikseli. Jeżeli nie ustawiony, zostanie użyta miniatura instancji. title: Obraz bohatera + mascot: + desc_html: Wyświetlany na wielu stronach. Zalecany jest rozmiar przynajmniej 293px × 205px. Jeżeli nie ustawiono, zostanie użyta domyślna. + title: Obraz maskotki peers_api_enabled: desc_html: Nazwy domen, z którymi ta instancja wchodziła w interakcje title: Publikuj listę znanych instancji From b9d7021c1ba9abdfceeffb36cb7c67885b1fb9fc Mon Sep 17 00:00:00 2001 From: Sascha Date: Thu, 25 Oct 2018 16:05:33 +0200 Subject: [PATCH 034/124] cli: set exit_on_failure for all CLI classes (#9094) --- lib/cli.rb | 4 ++++ lib/mastodon/accounts_cli.rb | 3 +++ lib/mastodon/emoji_cli.rb | 3 +++ lib/mastodon/feeds_cli.rb | 3 +++ lib/mastodon/media_cli.rb | 3 +++ lib/mastodon/settings_cli.rb | 3 +++ 6 files changed, 19 insertions(+) diff --git a/lib/cli.rb b/lib/cli.rb index 208df660f..bff6d5809 100644 --- a/lib/cli.rb +++ b/lib/cli.rb @@ -9,6 +9,10 @@ require_relative 'mastodon/settings_cli' module Mastodon class CLI < Thor + def self.exit_on_failure? + true + end + desc 'media SUBCOMMAND ...ARGS', 'Manage media files' subcommand 'media', Mastodon::MediaCLI diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index a32bc9533..055333080 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -7,6 +7,9 @@ require_relative 'cli_helper' module Mastodon class AccountsCLI < Thor + def self.exit_on_failure? + true + end option :all, type: :boolean desc 'rotate [USERNAME]', 'Generate and broadcast new keys' long_desc <<-LONG_DESC diff --git a/lib/mastodon/emoji_cli.rb b/lib/mastodon/emoji_cli.rb index 5bc51d034..1987c6394 100644 --- a/lib/mastodon/emoji_cli.rb +++ b/lib/mastodon/emoji_cli.rb @@ -7,6 +7,9 @@ require_relative 'cli_helper' module Mastodon class EmojiCLI < Thor + def self.exit_on_failure? + true + end option :prefix option :suffix option :overwrite, type: :boolean diff --git a/lib/mastodon/feeds_cli.rb b/lib/mastodon/feeds_cli.rb index cca65cf87..817ed4e79 100644 --- a/lib/mastodon/feeds_cli.rb +++ b/lib/mastodon/feeds_cli.rb @@ -6,6 +6,9 @@ require_relative 'cli_helper' module Mastodon class FeedsCLI < Thor + def self.exit_on_failure? + true + end option :all, type: :boolean, default: false option :background, type: :boolean, default: false option :dry_run, type: :boolean, default: false diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index 8aa9f7903..95d2a8d64 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -6,6 +6,9 @@ require_relative 'cli_helper' module Mastodon class MediaCLI < Thor + def self.exit_on_failure? + true + end option :days, type: :numeric, default: 7 option :background, type: :boolean, default: false option :verbose, type: :boolean, default: false diff --git a/lib/mastodon/settings_cli.rb b/lib/mastodon/settings_cli.rb index 87c321013..69485600a 100644 --- a/lib/mastodon/settings_cli.rb +++ b/lib/mastodon/settings_cli.rb @@ -6,6 +6,9 @@ require_relative 'cli_helper' module Mastodon class RegistrationsCLI < Thor + def self.exit_on_failure? + true + end desc 'open', 'Open registrations' def open Setting.open_registrations = true From d4cf963749d2f6bb8e47a670e8cc4819ff659f49 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Oct 2018 18:12:22 +0200 Subject: [PATCH 035/124] Allow inbox owner to view implicitly targeted ActivityPub payload (#9093) Fix #9091 --- app/controllers/activitypub/inboxes_controller.rb | 2 +- app/lib/activitypub/activity/create.rb | 13 ++++++++++++- app/workers/activitypub/processing_worker.rb | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/controllers/activitypub/inboxes_controller.rb b/app/controllers/activitypub/inboxes_controller.rb index af51e32d5..8f5e1887e 100644 --- a/app/controllers/activitypub/inboxes_controller.rb +++ b/app/controllers/activitypub/inboxes_controller.rb @@ -36,6 +36,6 @@ class ActivityPub::InboxesController < Api::BaseController end def process_payload - ActivityPub::ProcessingWorker.perform_async(signed_request_account.id, body.force_encoding('UTF-8')) + ActivityPub::ProcessingWorker.perform_async(signed_request_account.id, body.force_encoding('UTF-8'), @account&.id) end end diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 7e6702a63..92cdf4578 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -81,11 +81,22 @@ class ActivityPub::Activity::Create < ActivityPub::Activity @mentions << Mention.new(account: account, silent: true) # If there is at least one silent mention, then the status can be considered - # as a limited-audience status, and not strictly a direct message + # as a limited-audience status, and not strictly a direct message, but only + # if we considered a direct message in the first place next unless @params[:visibility] == :direct @params[:visibility] = :limited end + + # If the payload was delivered to a specific inbox, the inbox owner must have + # access to it, unless they already have access to it anyway + return if @options[:delivered_to_account_id].nil? || @mentions.any? { mention.account_id == @options[:delivered_to_account_id] } + + @mentions << Mention.new(account_id: @options[:delivered_to_account_id], silent: true) + + return unless @param[:visibility] == :direct + + @params[:visibility] = :limited end def attach_tags(status) diff --git a/app/workers/activitypub/processing_worker.rb b/app/workers/activitypub/processing_worker.rb index 0e2e0eddd..a8a3ebf0f 100644 --- a/app/workers/activitypub/processing_worker.rb +++ b/app/workers/activitypub/processing_worker.rb @@ -5,7 +5,7 @@ class ActivityPub::ProcessingWorker sidekiq_options backtrace: true - def perform(account_id, body) - ActivityPub::ProcessCollectionService.new.call(body, Account.find(account_id), override_timestamps: true) + def perform(account_id, body, delivered_to_account_id = nil) + ActivityPub::ProcessCollectionService.new.call(body, Account.find(account_id), override_timestamps: true, delivered_to_account_id: delivered_to_account_id) end end From 7fee968e9fb75d0f6d381009d5c4403c5a027174 Mon Sep 17 00:00:00 2001 From: ThibG Date: Thu, 25 Oct 2018 18:13:19 +0200 Subject: [PATCH 036/124] Do not fetch preview card for mentioned users (#6934) --- app/services/fetch_link_card_service.rb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index 4169c685b..4551aa7e0 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -17,7 +17,8 @@ class FetchLinkCardService < BaseService return if @url.nil? || @status.preview_cards.any? - @url = @url.to_s + @mentions = status.mentions + @url = @url.to_s RedisLock.acquire(lock_options) do |lock| if lock.acquired? @@ -81,9 +82,16 @@ class FetchLinkCardService < BaseService uri.host.blank? || TagManager.instance.local_url?(uri.to_s) || !%w(http https).include?(uri.scheme) end + def mention_link?(a) + return false if @mentions.nil? + @mentions.any? do |mention| + a['href'] == TagManager.instance.url_for(mention.target) + end + end + def skip_link?(a) # Avoid links for hashtags and mentions (microformats) - a['rel']&.include?('tag') || a['class']&.include?('u-url') + a['rel']&.include?('tag') || a['class']&.include?('u-url') || mention_link?(a) end def attempt_oembed From a2e3401e48a211f8feba85fb29435ee9100077fc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 26 Oct 2018 01:54:58 +0200 Subject: [PATCH 037/124] Fix conversations not being marked read on click (#9103) Fix #9096 --- .../mastodon/features/direct_timeline/components/conversation.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversation.js b/app/javascript/mastodon/features/direct_timeline/components/conversation.js index 7277b7f0f..ffcd6d281 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversation.js +++ b/app/javascript/mastodon/features/direct_timeline/components/conversation.js @@ -56,6 +56,7 @@ export default class Conversation extends ImmutablePureComponent { otherAccounts={accounts} onMoveUp={this.handleHotkeyMoveUp} onMoveDown={this.handleHotkeyMoveDown} + onClick={this.handleClick} /> ); } From 768b0f132d8680563cce34e9abd8f3f3ba8a9bb9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 26 Oct 2018 01:55:08 +0200 Subject: [PATCH 038/124] Fix direct messages column not loading more items on scroll (#9102) Fix #9097 --- .../components/conversations_list.js | 18 +++++++++--------- .../containers/conversations_list_container.js | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversations_list.js b/app/javascript/mastodon/features/direct_timeline/components/conversations_list.js index 4684548e0..635c03c1d 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversations_list.js +++ b/app/javascript/mastodon/features/direct_timeline/components/conversations_list.js @@ -9,14 +9,14 @@ import { debounce } from 'lodash'; export default class ConversationsList extends ImmutablePureComponent { static propTypes = { - conversationIds: ImmutablePropTypes.list.isRequired, + conversations: ImmutablePropTypes.list.isRequired, hasMore: PropTypes.bool, isLoading: PropTypes.bool, onLoadMore: PropTypes.func, shouldUpdateScroll: PropTypes.func, }; - getCurrentIndex = id => this.props.conversationIds.indexOf(id) + getCurrentIndex = id => this.props.conversations.findIndex(x => x.get('id') === id) handleMoveUp = id => { const elementIndex = this.getCurrentIndex(id) - 1; @@ -41,22 +41,22 @@ export default class ConversationsList extends ImmutablePureComponent { } handleLoadOlder = debounce(() => { - const last = this.props.conversationIds.last(); + const last = this.props.conversations.last(); - if (last) { - this.props.onLoadMore(last); + if (last && last.get('last_status')) { + this.props.onLoadMore(last.get('last_status')); } }, 300, { leading: true }) render () { - const { conversationIds, onLoadMore, ...other } = this.props; + const { conversations, onLoadMore, ...other } = this.props; return ( - {conversationIds.map(item => ( + {conversations.map(item => ( diff --git a/app/javascript/mastodon/features/direct_timeline/containers/conversations_list_container.js b/app/javascript/mastodon/features/direct_timeline/containers/conversations_list_container.js index 81ea812ad..57e17d96f 100644 --- a/app/javascript/mastodon/features/direct_timeline/containers/conversations_list_container.js +++ b/app/javascript/mastodon/features/direct_timeline/containers/conversations_list_container.js @@ -3,7 +3,7 @@ import ConversationsList from '../components/conversations_list'; import { expandConversations } from '../../../actions/conversations'; const mapStateToProps = state => ({ - conversationIds: state.getIn(['conversations', 'items']).map(x => x.get('id')), + conversations: state.getIn(['conversations', 'items']), isLoading: state.getIn(['conversations', 'isLoading'], true), hasMore: state.getIn(['conversations', 'hasMore'], false), }); From 161aeadbb4fcd08bc6a38acae9626f4124c78951 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 26 Oct 2018 01:55:24 +0200 Subject: [PATCH 039/124] Remove character counter from edit profile (#9100) * Remove display name and bio counter hint, simply limit input * Remove now redundant translations * Fix code style issue --- app/javascript/packs/public.js | 16 +--------------- app/views/settings/profiles/show.html.haml | 8 ++++---- config/locales/simple_form.ar.yml | 2 -- config/locales/simple_form.ast.yml | 6 ------ config/locales/simple_form.bg.yml | 2 -- config/locales/simple_form.ca.yml | 6 ------ config/locales/simple_form.co.yml | 6 ------ config/locales/simple_form.cs.yml | 6 ------ config/locales/simple_form.cy.yml | 6 ------ config/locales/simple_form.da.yml | 6 ------ config/locales/simple_form.de.yml | 6 ------ config/locales/simple_form.el.yml | 6 ------ config/locales/simple_form.en.yml | 6 ------ config/locales/simple_form.eo.yml | 6 ------ config/locales/simple_form.es.yml | 6 ------ config/locales/simple_form.eu.yml | 6 ------ config/locales/simple_form.fa.yml | 6 ------ config/locales/simple_form.fi.yml | 6 ------ config/locales/simple_form.fr.yml | 6 ------ config/locales/simple_form.gl.yml | 6 ------ config/locales/simple_form.he.yml | 6 ------ config/locales/simple_form.hr.yml | 2 -- config/locales/simple_form.hu.yml | 6 ------ config/locales/simple_form.id.yml | 2 -- config/locales/simple_form.io.yml | 2 -- config/locales/simple_form.it.yml | 6 ------ config/locales/simple_form.ja.yml | 2 -- config/locales/simple_form.ka.yml | 6 ------ config/locales/simple_form.ko.yml | 6 ------ config/locales/simple_form.nl.yml | 6 ------ config/locales/simple_form.no.yml | 6 ------ config/locales/simple_form.oc.yml | 6 ------ config/locales/simple_form.pl.yml | 10 ---------- config/locales/simple_form.pt-BR.yml | 6 ------ config/locales/simple_form.pt.yml | 6 ------ config/locales/simple_form.ru.yml | 10 ---------- config/locales/simple_form.sk.yml | 8 -------- config/locales/simple_form.sl.yml | 3 --- config/locales/simple_form.sr-Latn.yml | 10 ---------- config/locales/simple_form.sr.yml | 10 ---------- config/locales/simple_form.sv.yml | 6 ------ config/locales/simple_form.th.yml | 6 ------ config/locales/simple_form.tr.yml | 2 -- config/locales/simple_form.uk.yml | 2 -- config/locales/simple_form.zh-CN.yml | 2 -- config/locales/simple_form.zh-HK.yml | 6 ------ config/locales/simple_form.zh-TW.yml | 6 ------ 47 files changed, 5 insertions(+), 268 deletions(-) diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index 11dc1bafc..3b02b7c39 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -21,7 +21,6 @@ window.addEventListener('message', e => { }); function main() { - const { length } = require('stringz'); const IntlMessageFormat = require('intl-messageformat').default; const { timeAgoString } = require('../mastodon/components/relative_timestamp'); const { delegate } = require('rails-ujs'); @@ -133,26 +132,13 @@ function main() { }); delegate(document, '#account_display_name', 'input', ({ target }) => { - const nameCounter = document.querySelector('.name-counter'); - const name = document.querySelector('.card .display-name strong'); - - if (nameCounter) { - nameCounter.textContent = 30 - length(target.value); - } + const name = document.querySelector('.card .display-name strong'); if (name) { name.innerHTML = emojify(target.value); } }); - delegate(document, '#account_note', 'input', ({ target }) => { - const noteCounter = document.querySelector('.note-counter'); - - if (noteCounter) { - noteCounter.textContent = 160 - length(target.value); - } - }); - delegate(document, '#account_avatar', 'change', ({ target }) => { const avatar = document.querySelector('.card .avatar img'); const [file] = target.files || []; diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index 42e3840a1..f5c50144b 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -6,8 +6,8 @@ .fields-row .fields-row__column.fields-group.fields-row__column-6 - = f.input :display_name, wrapper: :with_label, hint: t('simple_form.hints.defaults.display_name', count: 30 - @account.display_name.size).html_safe - = f.input :note, wrapper: :with_label, hint: t('simple_form.hints.defaults.note', count: 160 - @account.note.size).html_safe + = f.input :display_name, wrapper: :with_label, input_html: { maxlength: 30 }, hint: false + = f.input :note, wrapper: :with_label, input_html: { maxlength: 160 }, hint: false .fields-row .fields-row__column.fields-row__column-6 @@ -36,8 +36,8 @@ = f.simple_fields_for :fields do |fields_f| .row - = fields_f.input :name, placeholder: t('simple_form.labels.account.fields.name') - = fields_f.input :value, placeholder: t('simple_form.labels.account.fields.value') + = fields_f.input :name, placeholder: t('simple_form.labels.account.fields.name'), input_html: { maxlength: 255 } + = fields_f.input :value, placeholder: t('simple_form.labels.account.fields.value'), input_html: { maxlength: 255 } .fields-row__column.fields-group.fields-row__column-6 %h6= t('verification.verification') diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index dcdc1ffc1..cdd3ddf25 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -8,7 +8,6 @@ ar: bot: يُعلِم أنّ هذا الحساب لا يمثل شخصًا context: واحد أو أكثر من السياقات التي يجب أن ينطبق عليها عامل التصفية digest: تُرسَل إليك بعد مُضيّ مدة مِن خمول نشاطك و فقط إذا ما تلقيت رسائل شخصية مباشِرة أثناء فترة غيابك مِن الشبكة - display_name: %{count} حرف باق email: سوف تتلقى رسالة إلكترونية للتأكيد fields: يُمكنك عرض 4 عناصر على شكل جدول في ملفك الشخصي header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px @@ -16,7 +15,6 @@ ar: irreversible: التبويقات التي تم تصفيتها ستختفي لا محالة حتى و إن تمت إزالة عامِل التصفية لاحقًا locale: لغة واجهة المستخدم و الرسائل الإلكترونية و الإشعارات locked: يتطلب منك الموافقة يدويا على طلبات المتابعة - note: %{count} حرف باق password: يُنصح باستخدام 8 أحرف على الأقل phrase: سوف يتم العثور عليه مهما كان نوع النص أو حتى و إن كان داخل الويب فيه تحذير عن المحتوى scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الإستغناء عن الخَيار اليدوي. diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index a6b3e0733..0d78f419f 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -6,13 +6,7 @@ ast: autofollow: La xente que se rexistre pente la invitación va siguite automáticamente bot: Esta cuenta fai principalmente aiciones automatizaes y podría nun supervisase digest: Namái s'unvia tres un periodu llargu d'inactividá y namái si recibiesti cualesquier mensaxe personal na to ausencia - display_name: - one: Queda 1 caráuter - other: Queden %{count} caráuteres irreversible: Los toots peñeraos van desapaecer de mou irreversible, magar que se desanicie la peñera dempués - note: - one: Queda 1 caráuter - other: Queden %{count} caráuteres setting_hide_network: La xente que sigas y teas siguiendo nun va amosase nel perfil setting_theme: Afeuta al aspeutu de Mastodon cuando anicies sesión dende cualesquier preséu. labels: diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 938dacc95..9441e53b3 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -4,10 +4,8 @@ bg: hints: defaults: avatar: PNG, GIF или JPG. До %{size}. Ще бъде смалена до %{dimensions} пиксела - display_name: До 30 символа header: PNG, GIF или JPG. До %{size}. Ще бъде смалена до %{dimensions} пиксела locked: Изисква ръчно одобрение на последователите. По подразбиране, публикациите са достъпни само до последователи. - note: До 160 символа imports: data: CSV файл, експортиран от друга инстанция на Mastodon labels: diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 53cf6db8e..6c8455a14 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -8,17 +8,11 @@ ca: bot: Aquest compte realitza principalment accions automatitzades i pot no estar controlat per cap persona context: Un o diversos contextos on s'ha d'aplicar el filtre digest: Només s'envia després d'un llarg període d'inactivitat amb un resum de les mencions que has rebut en la teva absència - display_name: - one: 1 càracter restant - other: %{count} càracters restans fields: Pots tenir fins a 4 elements que es mostren com a taula al teu perfil header: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px irreversible: Els nodes filtrats desapareixeran de manera irreversible, fins i tot si el filtre es retira més tard locale: El llenguatge de l’interfície d’usuari, els correus i les notificacions push locked: Requereix que aprovis manualment els seguidors - note: - one: 1 càracter restant - other: %{count} caràcters restants phrase: Es combinarà independentment del format en el text o l'avís de contingut d'un toot setting_default_language: La llengua dels teus toots pot ser detectada automàticament però no sempre acuradament setting_hide_network: Qui tu segueixes i els que et segueixen a tu no es mostraran en el teu perfil diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml index fc0795a0b..b200dfb48 100644 --- a/config/locales/simple_form.co.yml +++ b/config/locales/simple_form.co.yml @@ -8,9 +8,6 @@ co: bot: Stu contu hè autumatizatu è ùn hè forse micca survegliatu context: Cuntestu·i induve u filtru deve esse applicatu digest: Solu mandatu dopu à una longa perioda d’inattività, è solu s’elli ci sò novi missaghji diretti - display_name: - one: Ci ferma 1 caratteru - other: Ci fermanu %{count} caratteri email: Avete da riceve un'e-mail di cunfirmazione fields: Pudete avè fin’à 4 elementi mustrati cum’un tavulone nant’à u vostru prufile header: Furmatu PNG, GIF o JPG. %{size} o menu. Sarà ridottu à %{dimensions}px @@ -18,9 +15,6 @@ co: irreversible: I statuti filtrati saranu sguassati di manera irreversibile, ancu s'ellu hè toltu u filtru locale: A lingua di l'interfaccia utilizatore, di l'e-mail è di e nutificazione push locked: Duvarete appruvà e dumande d’abbunamentu - note: - one: Ci ferma 1 caratteru - other: Ci fermanu %{count} caratteri password: Ci volenu almenu 8 caratteri phrase: Sarà trovu senza primura di e maiuscule o di l'avertimenti scopes: L'API à quelle l'applicazione averà accessu. S'è voi selezziunate un parametru d'altu livellu, un c'hè micca bisognu di selezziunà quell'individuali. diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index ed50e13ff..c2fd93ee1 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -8,9 +8,6 @@ cs: bot: Tento účet provádí hlavně automatizované akce a nemusí být spravován context: Jedno či více kontextů, ve kterých má být filtr uplatněn digest: Odesíláno pouze po dlouhé době nečinnosti a pouze, pokud jste při své nepřítomnosti obdržel/a osobní zprávy - display_name: - one: Zbývá 1 znak - other: Zbývá vám %{count} znaků email: Bude vám poslán potvrzovací e-mail fields: Na profilu můžete mít až 4 položky zobrazené jako tabulka header: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšena na %{dimensions} px @@ -18,9 +15,6 @@ cs: irreversible: Filtrované tooty nenávratně zmizí, i pokud bude filtr později odstraněn locale: Jazyk uživatelského rozhraní, e-mailů a oznámení push locked: Vyžaduje manuální schvalování sledovatelů - note: - one: Zbývá 1znak - other: Zbývá %{count} znaků password: Použijte alespoň 8 znaků phrase: Shoda bude nalezena bez ohledu na velikost písmen v těle tootu či varování o obsahu scopes: Které API bude aplikace povolena používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat po jednom. diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 5a301f775..5653001b8 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -8,18 +8,12 @@ cy: bot: Mae'r cyfrif hwn yn perfformio gweithredoedd awtomataidd yn bennaf ac mae'n bosib nad yw'n cael ei fonitro context: Un neu fwy cyd-destun lle dylai'r hidlydd weithio digest: Dim ond yn cael eu hanfon ar ôl cyfnod hir o anweithgarwch ac ond os ydych wedi derbyn unrhyw negeseuon personol yn eich absenoldeb - display_name: - one: 1 nodyn ar ôl - other: %{count} nodyn ar ôl fields: Mae modd i chi arddangos hyd at 4 eitem fel tabl ar eich proffil header: PNG, GIF neu JPG. %{size} ar y mwyaf. Ceith ei israddio i %{dimensions}px inbox_url: Copïwch yr URL o dudalen flaen y relái yr ydych am ei ddefnyddio irreversible: Bydd tŵtiau wedi eu hidlo yn diflannu am byth, hyd yn oed os ceith yr hidlydd ei ddileu'n hwyrach locale: Iaith y rhyngwyneb, e-byst a hysbysiadau push locked: Ei wneud yn ofynnol arnoch chi i ganiatau dilynwyr a llaw - note: - one: 1 cymeriad ar ôl - other: %{count} o gymeriadau ar ôl scopes: Pa APIau y bydd gan y rhaglen ganiatad i gael mynediad iddynt. Os dewiswch maes lefel uchaf, yna nid oes angen dewis rhai unigol. setting_default_language: Mae modd adnabod iaith eich tŵtiau yn awtomatig, ond nid yw bob tro'n gywir setting_hide_network: Ni fydd pwy yr ydych yn ei ddilyn a phwy sy'n eich dilyn chi yn cael ei ddangos ar eich proffil diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 7550122fc..64cdab07c 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -8,18 +8,12 @@ da: bot: Denne konto udfører hovedsageligt automatiserede handlinger og bliver muligvis ikke overvåget context: En eller flere sammenhænge hvor filteret skal være gældende digest: Sendes kun efter en lang periode med inaktivitet og kun hvis du har modtaget nogle personlige beskeder mens du er væk - display_name: - one: 1 tegn tilbage - other: %{count}tegn tilbage fields: Du kan have op til 4 ting vist som en tabel på din profil header: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px inbox_url: Kopiere linket fra forsiden af den relay som du ønsker at bruge irreversible: Filtrerede trut vil forsvinde fulstændigt, selv hvis filteret senere skulle blive fjernet locale: Sproget på interfacet, emails og push beskeder locked: Kræver, at du godkender følgere manuelt - note: - one: 1 tegn tilbage - other: %{count} tegn tilbage phrase: Vil blive parret uanset om der er store eller små bogstaver i teksten eller om der er en advarsel om et trut scopes: Hvilke APIs applikationen vil få adgang til. Hvis du vælger et højtlevel omfang, behøver du ikke vælge enkeltstående. setting_default_language: Sproget for dine trut kan blive fundet automatisk, men det er ikke altid præcist diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 340cd5ee7..9c2defd9e 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -8,9 +8,6 @@ de: bot: Dieses Konto führt lediglich automatisierte Aktionen durch und wird möglicherweise nicht überwacht context: Ein oder mehrere Aspekte, wo der Filter greifen soll digest: Wenn du lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen in deiner Abwesenheit zugeschickt - display_name: - one: 1 Zeichen verbleibt - other: %{count} Zeichen verbleiben email: Du wirst ein Bestätigungs-E-Mail erhalten fields: Du kannst bis zu 4 Elemente als Tabelle dargestellt auf deinem Profil anzeigen lassen header: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert @@ -18,9 +15,6 @@ de: irreversible: Gefilterte Beiträge werden unwiderruflich gefiltert, selbst wenn der Filter später entfernt wurde locale: Die Sprache der Oberfläche, E-Mails und Push-Benachrichtigungen locked: Wer dir folgen möchte, muss um deine Erlaubnis bitten - note: - one: 1 Zeichen verbleibt - other: %{count} Zeichen verbleiben password: Verwende mindestens 8 Zeichen phrase: Wird unabhängig vom umgebenen Text oder Inhaltswarnung eines Beitrags verglichen scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen. diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 823f25330..a13b44237 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -8,9 +8,6 @@ el: bot: Ο λογαριασμός αυτός εκτελεί κυρίως αυτοματοποιημένες ενέργειες και ίσως να μην παρακολουθείται context: Ένα ή περισσότερα πλαίσια στα οποία μπορεί να εφαρμόζεται αυτό το φίλτρο digest: Αποστέλλεται μόνο μετά από μακρά περίοδο αδράνειας και μόνο αν έχεις λάβει προσωπικά μηνύματα κατά την απουσία σου - display_name: - one: απομένει 1 χαρακτήρας - other: απομένουν %{count} χαρακτήρες email: Θα σου σταλεί email επιβεβαίωσης fields: Μπορείς να έχεις έως 4 σημειώσεις σε μορφή πίνακα στο προφίλ σου header: PNG, GIF ή JPG. Έως %{size}. Θα περιοριστεί σε διάσταση %{dimensions}px @@ -18,9 +15,6 @@ el: irreversible: Τα φιλτραρισμένα τουτ θα εξαφανιστούν αμετάκλητα, ακόμα και αν το φίλτρο αργότερα αφαιρεθεί locale: Η γλώσσα του περιβάλλοντος χρήσης, των email και των ειδοποιήσεων ώθησης locked: Απαιτεί να εγκρίνεις χειροκίνητα τους ακόλουθούς σου - note: - one: απομένει 1 χαρακτήρας - other: απομένουν %{count} χαρακτήρες password: Χρησιμοποίησε τουλάχιστον 8 χαρακτήρες phrase: Θα ταιριάζει ανεξαρτήτως πεζών/κεφαλαίων ή προειδοποίησης περιεχομένου του τουτ scopes: Ποια API θα επιτρέπεται στην εφαρμογή να χρησιμοποιήσεις. Αν επιλέξεις κάποιο υψηλό εύρος εφαρμογής, δε χρειάζεται να επιλέξεις και εξειδικευμένα. diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index e3d84dd07..d34ec79cc 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -8,9 +8,6 @@ en: bot: This account mainly performs automated actions and might not be monitored context: One or multiple contexts where the filter should apply digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence - display_name: - one: 1 character left - other: %{count} characters left email: You will be sent a confirmation e-mail fields: You can have up to 4 items displayed as a table on your profile header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px @@ -18,9 +15,6 @@ en: irreversible: Filtered toots will disappear irreversibly, even if filter is later removed locale: The language of the user interface, e-mails and push notifications locked: Requires you to manually approve followers - note: - one: 1 character left - other: %{count} characters left password: Use at least 8 characters phrase: Will be matched regardless of casing in text or content warning of a toot scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones. diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 36f26035f..e8ddc075e 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -8,18 +8,12 @@ eo: bot: Tiu konto ĉefe faras aŭtomatajn agojn, kaj povas esti ne kontrolata context: Unu ol pluraj kuntekstoj kie la filtrilo devus agi digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto - display_name: - one: 1 signo restas - other: %{count} signoj restas fields: Vi povas havi ĝis 4 tabelajn elementojn en via profilo header: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px inbox_url: Kopiu la URL de la ĉefpaĝo de la ripetilo, kiun vi volas uzi irreversible: Elfiltritaj mesaĝoj malaperos por ĉiam, eĉ se la filtrilo estas poste forigita locale: La lingvo de la uzant-interfaco, retmesaĝoj kaj puŝ-sciigoj locked: Vi devos aprobi ĉiun peton de sekvado mane - note: - one: 1 signo restas - other: %{count} signoj restas phrase: Estos provita senzorge pri la uskleco de teksto aŭ averto pri enhavo de mesaĝo setting_default_language: La lingvo de viaj mesaĝoj povas esti aŭtomate detektitaj, sed tio ne ĉiam ĝustas setting_hide_network: Tiuj, kiujn vi sekvas, kaj tiuj, kiuj sekvas vin ne estos videblaj en via profilo diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 8c528144e..c0d72dc27 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -8,18 +8,12 @@ es: bot: Esta cuenta ejecuta principalmente acciones automatizadas y podría no ser monitorizada context: Uno o múltiples contextos en los que debe aplicarse el filtro digest: Solo enviado tras un largo periodo de inactividad y solo si has recibido mensajes personales durante tu ausencia - display_name: - one: 1 caracter restante - other: %{count} caracteres restantes fields: Puedes tener hasta 4 elementos mostrándose como una tabla en tu perfil header: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px inbox_url: Copia la URL de la página principal del relés que quieres utilizar irreversible: Los toots filtrados desaparecerán irreversiblemente, incluso si este filtro es eliminado más adelante locale: El idioma de la interfaz de usuario, correos y notificaciones push locked: Requiere que manualmente apruebes seguidores y las publicaciones serán mostradas solamente a tus seguidores - note: - one: 1 carácter restante - other: %{count} caracteres restantes phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de un toot scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales. setting_default_language: El idioma de tus toots podrá detectarse automáticamente, pero no siempre es preciso diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 7fa8319ae..a658038b8 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -8,18 +8,12 @@ eu: bot: Kontu honek nagusiki automatizatutako ekintzak burutzen ditu eta agian ez du inork monitorizatzen context: Iragazkia aplikatzeko testuinguru bat edo batzuk digest: Soilik jarduerarik gabeko epe luze bat eta gero, eta soilik ez zeudela mezu pertsonalen bat jaso baduzu - display_name: - one: Karaktere 1 geratzen da - other: %{count} karaktere geratzen dira fields: 4 elementu bistaratu ditzakezu taula batean zure profilean header: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px eskalara txikituko da inbox_url: Kopiatu erabili nahi duzun errelearen hasiera orriaren URLa irreversible: Iragazitako toot-ak betirako galduko dira, geroago iragazkia kentzen baduzu ere locale: Erabiltzaile-interfazea, e-mail mezuen eta jakinarazpenen hizkuntza locked: Jarraitzaileak eskuz onartu behar dituzu - note: - one: Karaktere1 geratzen da - other: %{count} karaktere geratzen dira phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar. setting_default_language: Zure toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 3e2398d55..198fb7067 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -8,9 +8,6 @@ fa: bot: این حساب بیشتر به طور خودکار فعالیت می‌کند و نظارت پیوسته‌ای روی آن وجود ندارد context: یک یا چند زمینه که فیلتر باید در آن‌ها اعمال شود digest: تنها وقتی فرستاده می‌شود که مدتی طولانی فعالیتی نداشته باشید و در این مدت برای شما پیغام خصوصی‌ای نوشته شده باشد - display_name: - one: 1 حرف باقی مانده - other: %{count} حرف باقی مانده email: به شما ایمیل تأییدی فرستاده خواهد شد fields: شما می‌توانید تا چهار مورد را در یک جدول در نمایهٔ خود نمایش دهید header: یکی از قالب‌های PNG یا GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد @@ -18,9 +15,6 @@ fa: irreversible: بوق‌های فیلترشده به طور برگشت‌ناپذیری ناپدید می‌شوند، حتی اگر فیلتر را بعداً بردارید locale: زبان محیط کاربری، ایمیل‌ها، و اعلان‌ها locked: باید پیگیران تازه را خودتان تأیید کنید - note: - one: 1 حرف باقی مانده - other: %{count} حرف باقی مانده password: دست‌کم باید ۸ نویسه داشته باشد phrase: مستقل از کوچکی و بزرگی حروف، با متن اصلی یا هشدار محتوای بوق‌ها مقایسه می‌شود scopes: واسط‌های برنامه‌نویسی که این برنامه به آن دسترسی دارد. اگر بالاترین سطح دسترسی را انتخاب کنید، دیگر نیازی به انتخاب سطح‌های پایینی ندارید. diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index e78ba9cc7..b0f958f2f 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -5,15 +5,9 @@ fi: defaults: avatar: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana - display_name: - one: 1 merkki jäljellä - other: %{count} merkkiä jäljellä fields: Sinulla voi olla korkeintaan 4 asiaa profiilissasi taulukossa header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px locked: Sinun täytyy hyväksyä seuraajat manuaalisesti - note: - one: 1 merkki jäljellä - other: %{count} merkkiä jäljellä setting_noindex: Vaikuttaa julkiseen profiiliisi ja tilasivuihisi setting_theme: Vaikuttaa Mastodonin ulkoasuun millä tahansa laitteella kirjauduttaessa. imports: diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 40ae0400f..c4d664877 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -8,9 +8,6 @@ fr: bot: Ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé context: Un ou plusieurs contextes où le filtre devrait s’appliquer digest: Uniquement envoyé après une longue période d’inactivité et uniquement si vous avez reçu des messages personnels pendant votre absence - display_name: - one: 1 caractère restant - other: %{count} caractères restants email: Vous recevrez un courriel de confirmation fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil header: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px @@ -18,9 +15,6 @@ fr: irreversible: Les pouets filtrés disparaîtront irrémédiablement, même si le filtre est supprimé plus tard locale: La langue de l’interface, des courriels et des notifications locked: Vous devrez approuver chaque abonné⋅e et vos statuts ne s’afficheront qu’à vos abonné⋅es - note: - one: 1 caractère restant - other: %{count} caractères restants password: Utilisez au moins 8 caractères phrase: Sera trouvé sans que la case ou l’avertissement de contenu du pouet soit pris en compte scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez un périmètre de haut-niveau, vous n’avez pas besoin de sélectionner les individuels. diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index f81d34610..04a0fffa3 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -8,9 +8,6 @@ gl: bot: Esta conta realiza principalmente accións automatizadas e podería non estar monitorizada context: Un ou varios contextos onde se debería aplicar o filtro digest: Enviar só tras un longo período de inactividade e só si recibeu algunha mensaxe personal na súa ausencia - display_name: - one: 1 caracter restante - other: %{count} caracteres restantes email: Enviaráselle un correo-e de confirmación fields: Pode ter ate 4 elementos no seu perfil mostrados como unha táboa header: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px @@ -18,9 +15,6 @@ gl: irreversible: Os toots filtrados desaparecerán de xeito irreversible, incluso si despois se elimina o filtro locale: O idioma da interface de usuaria, correos e notificacións locked: Require que vostede acepte as seguidoras de xeito manual - note: - one: 1 caracter restante - other: %{count} caracteres restantes password: Utilice 8 caracteres ao menos phrase: Concordará independentemente das maiúsculas ou avisos de contido no toot scopes: A que APIs terá acceso a aplicación. Si selecciona un ámbito de alto nivel, non precisa seleccionar elementos individuais. diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index aa5c7e827..c86498c66 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -5,14 +5,8 @@ he: defaults: avatar: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן ל-%{dimensions}px digest: נשלח לאחר תקופה ארוכה של אי-פעילות עם סיכום איזכורים שקיבלת בהעדרך - display_name: - one: נותרה אותאחת - other: נותרו%{count} אותיות header: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן %{dimensions}px locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת - note: - one: נותרה אותאחת - other: נותרו %{count} אותיות setting_noindex: משפיע על הפרופיל הציבורי שלך ועמודי ההודעות setting_theme: משפיע על המראה של מסטודון בעת החיבור המזוהה מכל מכשיר שהוא. imports: diff --git a/config/locales/simple_form.hr.yml b/config/locales/simple_form.hr.yml index 2b3ebf91e..4b1d2b1e0 100644 --- a/config/locales/simple_form.hr.yml +++ b/config/locales/simple_form.hr.yml @@ -4,10 +4,8 @@ hr: hints: defaults: avatar: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjen na %{dimensions}px - display_name: Najviše 30 znakova header: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjen na %{dimensions}px locked: traži te da ručno odobriš sljedbenike i postavlja privatnost postova na dostupnu samo sljedbenicima - note: Najviše 160 znakova imports: data: CSV fajl izvezen iz druge Mastodon instance labels: diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index ef915dec5..f36fabda1 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -5,14 +5,8 @@ hu: defaults: avatar: PNG, GIF vagy JPG. Maximum %{size}. Át lesz méretezve %{dimensions} pixelre digest: Csak hosszú távollét esetén küldve és csak ha személyes üzenetet kaptál távollétedben - display_name: - one: 1karakter maradt - other: %{count}karakter maradt header: PNG, GIF vagy JPG. Maximum %{size}. Át lesz méretezve %{dimensions} pixelre locked: Egyenként engedélyezned kell a követőidet - note: - one: 1karakter maradt - other: %{count}karakter maradt setting_noindex: A publikus profilodra és státusz oldalra vonatkozik setting_theme: A bármely eszközről bejelentkezett felület kinézetére vonatkozik. imports: diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index fcd9d862c..c6da2beff 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -4,10 +4,8 @@ id: hints: defaults: avatar: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px - display_name: Maksimal 30 karakter header: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px locked: Anda harus menerima permintaan pengikut secara manual dan setting privasi postingan akan diubah khusus untuk pengikut - note: Maksimum 160 karakter imports: data: File CSV yang diexpor dari server Mastodon lain sessions: diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index c4fc702fe..c9fd9899e 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -4,10 +4,8 @@ io: hints: defaults: avatar: En la formato PNG, GIF o JPG. Til %{size}. Esos mikrigita a %{dimensions}px - display_name: 30 signi maxime header: En la formato PNG, GIF o JPG. Til %{size}. Esos mikrigita a %{dimensions}px locked: Tu devos aprobar omna demandi di sequado, e tua mesaji esos senchanje nur por tua sequanti. - note: 160 signi maxime imports: data: Dosiero CSV de altra instaluro di Mastodon sessions: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 841e65faa..4c6bb5acf 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -8,18 +8,12 @@ it: bot: Questo account esegue principalmente operazioni automatiche e potrebbe non essere tenuto sotto controllo da una persona context: Uno o più contesti nei quali il filtro dovrebbe essere applicato digest: Inviata solo dopo un lungo periodo di inattività e solo se hai ricevuto qualche messaggio personale in tua assenza - display_name: - one: 1 carattere rimanente - other: %{count} caratteri rimanenti fields: Puoi avere fino a 4 voci visualizzate come una tabella sul tuo profilo header: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px inbox_url: Copia la URL dalla pagina iniziale del ripetitore che vuoi usare irreversible: I toot filtrati scompariranno in modo irreversibile, anche se il filtro viene eliminato locale: La lingua dell'interfaccia utente, di email e notifiche push locked: Richiede che approvi i follower manualmente - note: - one: 1 carattere rimanente - other: %{count} caratteri rimanenti phrase: Il confronto sarà eseguito ignorando minuscole/maiuscole e i content warning scopes: A quali API l'applicazione potrà avere accesso. Se selezionate un ambito di alto livello, non c'è bisogno di selezionare quelle singole. setting_default_language: La lingua dei tuoi toot può essere individuata automaticamente, ma il risultato non è sempre accurato diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 2ef459040..0ef55c980 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -8,7 +8,6 @@ ja: bot: このアカウントは主に自動で動作し、人が見ていない可能性があります context: フィルターを適用する対象 (複数選択可) digest: 長期間使用していない場合と不在時に返信を受けた場合のみ送信されます - display_name: あと%{count}文字入力できます。 email: 確認のメールが送信されます fields: プロフィールに表として4つまでの項目を表示することができます header: "%{size}までのPNG、GIF、JPGが利用可能です。 %{dimensions}pxまで縮小されます" @@ -16,7 +15,6 @@ ja: irreversible: フィルターが後で削除されても、除外されたトゥートは元に戻せなくなります locale: ユーザーインターフェース、メールやプッシュ通知の言語 locked: フォロワーを手動で承認する必要があります - note: あと%{count}文字入力できます。 password: 少なくとも8文字は入力してください phrase: トゥートの大文字小文字や閲覧注意に関係なく一致 scopes: アプリの API に許可するアクセス権を選択してください。最上位のスコープを選択する場合、個々のスコープを選択する必要はありません。 diff --git a/config/locales/simple_form.ka.yml b/config/locales/simple_form.ka.yml index b1b29a7ce..6bccb3134 100644 --- a/config/locales/simple_form.ka.yml +++ b/config/locales/simple_form.ka.yml @@ -8,18 +8,12 @@ ka: bot: ეს ანგარიში უმთავრესად ასრულებს ავტომატურ მოქმედებებს და შესაძლოა არ იყოს მონიტორინგის ქვეშ context: ერთ ან მრავალი კონტექსტი სადაც ფილტრი უნდა შესრულდეს digest: იგზავნება მხოლოდ ხანგრძლივი უაქტივობის პერიოდის შემდეგ და არყოფნისას თუ მიიღეთ ერთი წერილი მაინც - display_name: - one: დარჩა ერთი ნიშანი - other: დარჩა %{count} ნიშანი fields: პროფილზე ტაბულის სახით შესაძლოა საჩვენებლად გაგაჩნდეთ მაქს. 4 პუნქტი header: პნგ, გიფ ან ჯპგ. მაქს. %{size}. ზომა დაპატარავდება %{dimensions}პიქს.-ზე inbox_url: ურლ დააკოირეთ გამოყენებისთვის სასურველი რილეის წინა გვერდიდან irreversible: გაფილტრული ტუტები გაუქმდება აღუდგენლად, იმ შემთხვევაშიც კი თუ ფილტრი სამომავლოდ გაუქმდება locale: მომხმარებლის ინტერფეისის, ელ-ფოსტის წერილების და ფუშ შეტყობინებების ენა locked: საჭიროებს თქვენ მიერ მიმდევრების ხელით დადასტურებას - note: - one: დარჩა ერთი ნიშანი - other: დარჩა %{count} ნიშანი phrase: დამთხვევა მოხდება დიდი და პატარა ასოების ან კონტენტის გაფრთხილების გათვალისწინების გარეშე scopes: რომელი აპიებისადმი ექნება აპლიკაციას ცვდომა. თუ არიჩევთ უმთავრეს ფარგლებს, არ დაგჭირდებათ ინდივიდუალურების ამორჩევა. setting_default_language: თქვენი ტუტების ენა შეიძლება დადგინდეს ავტომატურად, მაგრამ ეს არაა ყოველთვის ზუსტი diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 232844df8..4bf717c6d 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -8,18 +8,12 @@ ko: bot: 사람들에게 계정이 사람이 아님을 알립니다 context: 필터를 적용 할 한 개 이상의 컨텍스트 digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기 - display_name: - one: 1 글자 남음 - other: %{count} 글자 남음 fields: 당신의 프로파일에 최대 4개까지 표 형식으로 나타낼 수 있습니다 header: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 다운스케일 됨 inbox_url: 사용 할 릴레이 서버의 프론트페이지에서 URL을 복사합니다 irreversible: 필터링 된 툿은 나중에 필터가 사라지더라도 돌아오지 않게 됩니다 locale: 유저 인터페이스, 이메일, 푸시 알림 언어 locked: 수동으로 팔로워를 승인하고, 기본 툿 프라이버시 설정을 팔로워 전용으로 변경 - note: - one: 1 글자 남음 - other: %{count} 글자 남음 phrase: 툿 내용이나 CW 내용 안에서 대소문자 구분 없이 매칭 됩니다 scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다. setting_default_language: 작성한 툿의 언어는 자동으로 인식할 수 있지만, 언제나 정확한 건 아닙니다 diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 32ad8d52c..516c1bddf 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -8,18 +8,12 @@ nl: bot: Dit is een geautomatiseerd account en wordt mogelijk niet gemonitord context: Een of meerdere locaties waar de filter actief moet zijn digest: Wordt alleen na een lange periode van inactiviteit verzonden en alleen wanneer je tijdens jouw afwezigheid persoonlijke berichten hebt ontvangen - display_name: - one: 1 teken over - other: %{count} tekens over fields: Je kan maximaal 4 items als een tabel op je profiel weergeven header: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px inbox_url: Kopieer de URL van de voorpagina van de relayserver die je wil gebruiken irreversible: Gefilterde toots verdwijnen onomkeerbaar, zelfs als de filter later wordt verwijderd locale: De taal van de gebruikersomgeving, e-mails en pushmeldingen locked: Vereist dat je handmatig volgers moet accepteren - note: - one: 1 teken over - other: %{count} tekens over phrase: Komt overeen ongeacht hoofd-/kleine letters of tekstwaarschuwingen scopes: Tot welke API's heeft de toepassing toegang. Wanneer je een toestemming van het bovenste niveau kiest, hoef je geen individuele toestemmingen meer te kiezen. setting_default_language: De taal van jouw toots kan automatisch worden gedetecteerd, maar het is niet altijd accuraat diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 98c6b82fe..fc339c3f2 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -5,14 +5,8 @@ defaults: avatar: PNG, GIF eller JPG. Maksimalt %{size}. Vil bli nedskalert til %{dimensions}px digest: Kun sendt etter en lang periode med inaktivitet og bare dersom du har mottatt noen personlige meldinger mens du var borte - display_name: - one: 1 tegn igjen - other: %{count} tegn igjen header: PNG, GIF eller JPG. Maksimalt %{size}. Vil bli nedskalert til %{dimensions}px locked: Krever at du manuelt godkjenner følgere - note: - one: 1 tegn igjen - other: %{count} tegn igjen setting_noindex: Påvirker din offentlige profil og statussider setting_theme: Påvirker hvordan Mastodon ser ut når du er logget inn fra uansett enhet. imports: diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index d46befdc1..11bf1dc8b 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -8,18 +8,12 @@ oc: bot: Avisar lo monde qu’aqueste compte es pas d’una persona context: Un o mai de contèxtes ont lo filtre deuriá s’aplicar digest: Solament enviat aprèp un long moment d’inactivitat e solament s’avètz recebut de messatges personals pendent vòstra abséncia - display_name: - one: Demòra encara 1 caractèr - other: Demòran encara %{count} caractèrs fields: Podètz far veire cap a 4 elements sus vòstre perfil header: PNG, GIF o JPG. Maximum %{size}. Serà retalhada en %{dimensions}px inbox_url: Copiatz l’URL de la pagina màger del relai que volètz utilizar irreversible: Los tuts filtrats desapareisseràn irreversiblament, encara que lo filtre siá suprimit mai tard locale: La lenga de l’interfàcia d’utilizacion, los messatges e las notificacions locked: Demanda qu’acceptetz manualament lo mond que vos sègon e botarà la visibilitat de vòstras publicacions coma accessiblas a vòstres seguidors solament - note: - one: Demòra encara 1 caractèr - other: Demòran encara %{count} caractèrs phrase: Serà pres en compte que siá en majuscula o minuscula o dins un avertiment de contengut sensible scopes: A quinas APIs poiràn accedir las aplicacions. Se seleccionatz un encastre de naut nivèl, fa pas mestièr de seleccionar los nivèls mai basses. setting_default_language: La lenga de vòstres tuts pòt èsser detectada automaticament, mas de còps es pas corrèctament determinada diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 250e98c56..8febad488 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -8,22 +8,12 @@ pl: bot: To konto wykonuje głównie zautomatyzowane działania i może nie być monitorowane context: Jedno lub wiele miejsc, w których filtr zostanie zastosowany digest: Wysyłane tylko po długiej nieaktywności, jeżeli w tym czasie otrzymaleś jakąś wiadomość bezpośrednią - display_name: - few: Pozostały %{count} znaki. - many: Pozostało %{count} znaków - one: Pozostał 1 znak - other: Pozostało %{count} znaków fields: Możesz ustawić maksymalnie 4 niestandardowe pola wyświetlane jako tabela na Twoim profilu header: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px inbox_url: Skopiuj adres ze strony głównej przekaźnika, którego chcesz użyć irreversible: Filtrowane wpisy znikną bezpowrotnie, nawet gdy filtr zostanie usunięty locale: Język interfejsu, wiadomości e-mail i powiadomieniach push locked: Musisz akceptować prośby o śledzenie - note: - few: Pozostały %{count} znaki. - many: Pozostało %{count} znaków - one: Pozostał 1 znak - other: Pozostało %{count} znaków phrase: Zostanie wykryte nawet, gdy znajduje się za ostrzeżeniem o zawartości scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów. setting_default_language: Język Twoich wpisów może być wykrywany automatycznie, ale nie zawsze jest to dokładne diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 23272c41f..6fc5ca061 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -8,18 +8,12 @@ pt-BR: bot: Essa conta executa principalmente ações automatizadas e pode não ser monitorada context: Um ou mais contextos onde o filtro deve ser aplicado digest: Enviado após um longo período de inatividade com um resumo das menções que você recebeu em sua ausência - display_name: - one: 1 caracter restante - other: %{count} caracteres restantes fields: Você pode ter até 4 itens exibidos em forma de tabela no seu perfil header: PNG, GIF or JPG. Arquivos de até %{size}. Eles serão diminuídos para %{dimensions}px inbox_url: Copie a URL da página inicial do repetidor que você quer usar irreversible: Os toots filtrados vão desaparecer irreversivelmente, mesmo se o filtro for removido depois locale: O idioma das telas de usuário, e-mails e notificações push locked: Requer aprovação manual de seguidores - note: - one: 1 caracter restante - other: %{count} caracteres restantes phrase: Vai coincidir, independente de maiúsculas ou minúsculas, no texto ou no aviso de conteúdo de um toot scopes: Quais APIs a aplicação vai ter permissão de acessar. Se você selecionar um escopo de alto nível, você não precisa selecionar individualmente os outros. setting_default_language: O idioma de seus toots pode ser detectado automaticamente, mas isso nem sempre é preciso diff --git a/config/locales/simple_form.pt.yml b/config/locales/simple_form.pt.yml index 8c515c1de..88be3ac70 100644 --- a/config/locales/simple_form.pt.yml +++ b/config/locales/simple_form.pt.yml @@ -5,14 +5,8 @@ pt: defaults: avatar: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px digest: Enviado após um longo período de inatividade e apenas se foste mencionado na tua ausência - display_name: - one: 1 caracter restante - other: %{count} caracteres restantes header: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px locked: Requer aprovação manual de seguidores - note: - one: 1 caracter restante - other: %{count} caracteres restantes setting_noindex: Afecta o teu perfil público e as páginas das tuas publicações setting_theme: Afecta a aparência do Mastodon quando entras na tua conta em qualquer dispositivo. imports: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index daeb7300a..44cd7ccd6 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -8,22 +8,12 @@ ru: bot: Этот аккаунт обычно выполяет автоматизированные действия и может не просматриваться владельцем context: Один или несколько контекстов, к которым должны быть применены фильтры digest: Отсылается лишь после длительной неактивности, если Вы в это время получали личные сообщения - display_name: - few: Осталось %{count} символа - many: Осталось %{count} символов - one: Остался 1 символ - other: Осталось %{count} символов fields: В профиле можно отобразить до 4 пунктов как таблицу header: PNG, GIF или JPG. Максимально %{size}. Будет уменьшено до %{dimensions}px inbox_url: Копировать URL с главной страницы ретранслятора, который Вы хотите использовать irreversible: Отфильтрованные статусы будут утеряны навсегда, даже если в будущем фильтр будет убран locale: Язык интерфейса, e-mail писем и push-уведомлений locked: Потребует от Вас ручного подтверждения подписчиков, изменит приватность постов по умолчанию на "только для подписчиков" - note: - few: Осталось %{count} символа - many: Осталось %{count} символов - one: Остался 1 символ - other: Осталось %{count} символов phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании статуса scopes: Какие API приложению будет позволено использовать. Если Вы выберите самый верхний, нижестоящие будут выбраны автоматически. setting_default_language: Язык Ваших статусов может быть определён автоматически, но не всегда правильно diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml index 0fd8f66b6..3ff75c2f2 100644 --- a/config/locales/simple_form.sk.yml +++ b/config/locales/simple_form.sk.yml @@ -8,20 +8,12 @@ sk: bot: Tento účet vykonáva hlavne automatizované akcie, a je pravdepodobne nespravovaný context: Jedno, alebo viac kritérií, v ktorých má byť filtrovanie uplatnené digest: Odoslané iba v prípade dlhodobej neprítomnosti, a len ak si obdŕžal/a nejaké osobné správy kým si bol/a preč - display_name: - few: Ostávajú ti %{count} znaky - one: Ostáva ti 1 znak - other: Ostáva ti %{count} znakov fields: Môžeš mať 4 položky na svojom profile zobrazené vo forme tabuľky header: PNG, GIF alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px inbox_url: Skopíruj adresu z hlavnej stránky mostíka, ktorý chceš používať irreversible: Vytriedené príspevky zmiznú nenávratne, aj keď triedenie neskôr zrušíš locale: Jazyk užívateľského rozhrania, emailových a nástenkových oboznámení locked: Vyžaduje manuálne schvalovať sledujúcich - note: - few: Ostávajú ti %{count} znaky - one: Ostáva ti 1 znak - other: Ostáva ti %{count} znakov phrase: Zhoda sa nájde nezávisle od toho, či je text napísaný, veľkými, alebo malými písmenami, či už v tele, alebo v hlavičke scopes: Ktoré API budú povolené aplikácii pre prístup. Ak vyberieš vrcholný stupeň, nemusíš už potom vyberať po jednom. setting_default_language: Jazyk tvojích príspevkov môže byť zistený automaticky, ale nieje to vždy presné diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 0f86841d3..3c3a21480 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -6,9 +6,6 @@ sl: avatar: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px bot: Opozarja ljudi, da račun ne predstavlja osebe digest: Pošlje se le po dolgem obdobju nedejavnosti in samo, če ste prejeli osebna sporočila v vaši odsotnosti - display_name: - one: 1 znak ostane - other: %{count} znakov ostane fields: Na svojem profilu lahko imate do 4 predmete prikazane kot tabelo. header: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px imports: diff --git a/config/locales/simple_form.sr-Latn.yml b/config/locales/simple_form.sr-Latn.yml index 259ac0046..0ef85eaba 100644 --- a/config/locales/simple_form.sr-Latn.yml +++ b/config/locales/simple_form.sr-Latn.yml @@ -5,18 +5,8 @@ sr-Latn: defaults: avatar: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px digest: Poslato posle dužeg perioda neaktivnosti sa pregledom svih bitnih stvari koje ste dobili dok ste bili odsutni - display_name: - few: %{count} karaktera preostala - many: %{count} karaktera preostalo - one: 1 karakter preostao - other: %{count} karaktera preostalo header: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px locked: Zahteva da pojedinačno odobrite pratioce - note: - few: %{count} karaktera preostal - many: %{count} karaktera preostalo - one: 1 karakter preostao - other: %{count} karaktera preostalo setting_noindex: Utiče na Vaš javni profil i statusne strane setting_theme: Utiče kako će Mastodont izgledati kada ste prijavljeni sa bilo kog uređaja. imports: diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml index 333685ed5..1af52a41c 100644 --- a/config/locales/simple_form.sr.yml +++ b/config/locales/simple_form.sr.yml @@ -8,22 +8,12 @@ sr: bot: Овај налог углавном врши аутоматизоване радње и можда се не надгледа context: Један или више контекста у којима треба да се примени филтер digest: Послато после дужег периода неактивности са прегледом свих битних ствари које сте добили док сте били одсутни - display_name: - few: %{count} карактера преостала - many: %{count} карактера преостало - one: 1 карактер преостао - other: %{count} карактера преостало fields: Можете имати до 4 ставке приказане као табела на вашем профилу header: PNG, GIF или JPG. Највише %{size}. Биће смањена на %{dimensions}px inbox_url: Копирајте URL са насловне стране релеја који желите користити irreversible: Филтриранe трубе ће нестати неповратно, чак и ако је филтер касније уклоњен locale: Језик корисничког интерфејса, е-поште и мобилних обавештења locked: Захтева да појединачно одобрите пратиоце - note: - few: %{count} карактера преостал - many: %{count} карактера преостало - one: 1 карактер преостао - other: %{count} карактера преостало phrase: Биће упарена без обзира на велико или мало слово у тексту или упозорења о садржају трубе scopes: Којим API-јима ће апликација дозволити приступ. Ако изаберете опсег највишег нивоа, не морате одабрати појединачне. setting_default_language: Језик ваших труба може бити аутоматски откривен, али није увек прецизан diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 6f2e4b58f..8bc82c609 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -7,16 +7,10 @@ sv: avatar: Högst %{size}. Kommer att skalas ner till %{dimensions}px bot: Detta konto utför huvudsakligen automatiserade åtgärder och kanske inte övervakas digest: Skickas endast efter en lång period av inaktivitet och endast om du har fått några personliga meddelanden i din frånvaro - display_name: - one: 1 tecken kvar - other: %{count} tecken kvar fields: Du kan ha upp till 4 objekt visade som en tabell på din profil header: NG, GIF eller JPG. Högst %{size}. Kommer nedskalas till %{dimensions}px locale: Användargränssnittets språk, e-post och push aviseringar locked: Kräver att du manuellt godkänner följare - note: - one: 1 tecken kvar - other: %{count} tecken kvar setting_default_language: Språket av dina inlägg kan upptäckas automatiskt, men det är inte alltid rätt setting_hide_network: Vem du följer och vilka som följer dig kommer inte att visas på din profilsida setting_noindex: Påverkar din offentliga profil och statussidor diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 29491de0b..a8611c2f7 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -4,14 +4,8 @@ th: hints: defaults: avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px - display_name: - one: 1 character left - other: %{count} characters left header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px locked: Requires you to manually approve followers and defaults post privacy to followers-only - note: - one: 1 character left - other: %{count} characters left imports: data: CSV file exported from another Mastodon instance sessions: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index bd5c65d83..d0b50609b 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -4,10 +4,8 @@ tr: hints: defaults: avatar: En fazla %{size} olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. %{dimensions}px büyüklüğüne indirgenecektir - display_name: %{count} karakter kaldı header: En fazla %{size} olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. %{dimensions}px büyüklüğüne indirgenecektir. locked: Takipçilerinizi manuel olarak kabul etmenizi ve gönderilerinizi varsayılan olarak sadece takipçilerinizin göreceği şekilde paylaşmanızı sağlar. - note: %{count} karakter kaldı imports: data: Diğer Mastodon sunucusundan dışarı aktardığınız CSV dosyası sessions: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index ba25f53e2..05d57509e 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -5,10 +5,8 @@ uk: defaults: avatar: PNG, GIF, або JPG. Максимум - %{size}. Буде зменшено до %{dimensions}px bot: Цей аккаунт в основному виконує автоматичні дії та може не відстежуватіся - display_name: 'Залишилося символів: %{count}' header: PNG, GIF, або JPG. Максимум - %{size}. Буде зменшено до %{dimensions}px locked: Буде вимагати від Вас самостійного підтверждення підписників, змінить приватність постів за замовчуванням на "тільки для підписників" - note: 'Осталось символов: %{count}' imports: data: Файл CSV, экспортированный с другого узла Mastodon sessions: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 60a2548d2..cfa6840a6 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -7,12 +7,10 @@ zh-CN: avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px bot: 来自这个帐户的绝大多数操作都是自动进行的,并且可能无人监控 digest: 仅在你长时间未登录,且收到了私信时发送 - display_name: 还能输入 %{count} 个字符 fields: 这将会在个人资料页上以表格的形式展示,最多 4 个项目 header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px locale: 用户界面、电子邮件和推送通知中使用的语言 locked: 你需要手动审核所有关注请求 - note: 还能输入 %{count} 个字符 setting_default_language: 嘟文语言自动检测的结果有可能不准确(此设置仅影响你的嘟文) setting_hide_network: 你关注的人和关注你的人将不会在你的个人资料页上展示 setting_noindex: 此设置会影响到你的公开个人资料以及嘟文页面 diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml index 447b9ce7a..e28f935c2 100644 --- a/config/locales/simple_form.zh-HK.yml +++ b/config/locales/simple_form.zh-HK.yml @@ -7,16 +7,10 @@ zh-HK: avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px bot: 提醒用戶本帳號是機械人 digest: 僅在你長時間未登錄,且收到了私信時發送 - display_name: - one: 尚餘 1 個字 - other: 尚餘 %{count} 個字 fields: 個人資料頁可顯示多至 4 個項目 header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px locale: 使用者介面、電郵和通知的語言 locked: 你必須人手核准每個用戶對你的關注請求,而你的文章私隱會被預設為「只有關注你的人能看」 - note: - one: 尚餘 1 個字 - other: 尚餘 %{count} 個字 setting_default_language: 你文章的語言會被自動偵測,但不一定完全準確 setting_hide_network: 你關注的人和關注你的人將不會在你的個人資料頁上顯示 setting_noindex: 此設定會影響到你的公開個人資料以及文章頁面 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 7eae7e190..3747fbb98 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -8,18 +8,12 @@ zh-TW: bot: 這個帳號由程式進行自動式操作 context: 應該套用過濾器的一項或多項內容 digest: 僅在你長時間未登入,並且收到了私訊時發送 - display_name: - one: 尚餘 1 個字 - other: 尚餘 %{count} 個字 fields: 個人資訊頁至多可顯示 4 個項目 header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px inbox_url: 從您想要使用的中繼首頁複製 URL irreversible: 已過濾的嘟文將會不可逆的消失,即便過濾器之後也一樣 locale: 使用者介面、 E-mail 與通知的語言 locked: 你必須手動核准每個使用者對你的關注請求,而你的貼文隱私將會被設定為「只有關注你的人能看」 - note: - one: 尚餘 1 個字 - other: 尚餘 %{count} 個字 phrase: 無論是嘟文的本文或是內容警告都會被過濾 scopes: 應用程式將會被允許存取哪些 API。若您選取了最高階的範圍,您就不需要再選取單獨的了。 setting_default_language: 你嘟文的語言會被自動偵測,但不一定完全準確 From 1e2695198a28e0bc15b32192f8e6abb0051f2159 Mon Sep 17 00:00:00 2001 From: abcang Date: Fri, 26 Oct 2018 10:31:23 +0900 Subject: [PATCH 040/124] Skip link-back check if body is nil (#9107) --- app/services/verify_link_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/verify_link_service.rb b/app/services/verify_link_service.rb index 3453b54c5..9f56249c7 100644 --- a/app/services/verify_link_service.rb +++ b/app/services/verify_link_service.rb @@ -25,7 +25,7 @@ class VerifyLinkService < BaseService end def link_back_present? - return false if @body.empty? + return false if @body.blank? links = Nokogiri::HTML(@body).xpath('//a[contains(concat(" ", normalize-space(@rel), " "), " me ")]|//link[contains(concat(" ", normalize-space(@rel), " "), " me ")]') From 82e7988afcde5b19b99ad9ecf7973560a8a17f7f Mon Sep 17 00:00:00 2001 From: ThibG Date: Fri, 26 Oct 2018 12:59:59 +0200 Subject: [PATCH 041/124] Fix missing `mention` argument when processing incoming Create activities (#9114) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix missing `mention` argument when processing incoming Create activities * Fix typo (param → params) --- app/lib/activitypub/activity/create.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 92cdf4578..ea9017b82 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -90,11 +90,11 @@ class ActivityPub::Activity::Create < ActivityPub::Activity # If the payload was delivered to a specific inbox, the inbox owner must have # access to it, unless they already have access to it anyway - return if @options[:delivered_to_account_id].nil? || @mentions.any? { mention.account_id == @options[:delivered_to_account_id] } + return if @options[:delivered_to_account_id].nil? || @mentions.any? { |mention| mention.account_id == @options[:delivered_to_account_id] } @mentions << Mention.new(account_id: @options[:delivered_to_account_id], silent: true) - return unless @param[:visibility] == :direct + return unless @params[:visibility] == :direct @params[:visibility] = :limited end From e53cc673e717e913e2538a560d02d31c7c02496a Mon Sep 17 00:00:00 2001 From: ThibG Date: Fri, 26 Oct 2018 22:48:35 +0200 Subject: [PATCH 042/124] Ignore invalid hashtags on remote statuses instead of rejecting them (#9118) Fixes #9115 --- app/lib/activitypub/activity/create.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index ea9017b82..f1b38b18a 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -129,7 +129,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity return if tag['name'].blank? hashtag = tag['name'].gsub(/\A#/, '').mb_chars.downcase - hashtag = Tag.where(name: hashtag).first_or_create(name: hashtag) + hashtag = Tag.where(name: hashtag).first_or_create!(name: hashtag) return if @tags.include?(hashtag) From 215e6493911e92e385a51b7a2a88d472b1592d32 Mon Sep 17 00:00:00 2001 From: ThibG Date: Fri, 26 Oct 2018 22:49:17 +0200 Subject: [PATCH 043/124] Fix styling in /auth/edit (#9117) --- app/controllers/auth/registrations_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index a19f4e62e..088832be3 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -8,7 +8,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController before_action :configure_sign_up_params, only: [:create] before_action :set_sessions, only: [:edit, :update] before_action :set_instance_presenter, only: [:new, :create, :update] - before_action :set_body_classes, only: [:new, :create] + before_action :set_body_classes, only: [:new, :create, :edit, :update] def destroy not_found @@ -81,7 +81,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController end def set_body_classes - @body_classes = 'lighter' + @body_classes = %w(edit update).include?(action_name) ? 'admin' : 'lighter' end def set_invite From 6e1a4f85ad96b25087d98fed1e70044c0f45a132 Mon Sep 17 00:00:00 2001 From: Masoud Abkenar Date: Fri, 26 Oct 2018 22:49:39 +0200 Subject: [PATCH 044/124] RTL: fix column-back-button__icon margins/content (#9112) * RTL: fix column-back-button__icon margins/content * Update rtl.scss * Update rtl.scss --- app/javascript/styles/mastodon/rtl.scss | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index ccb53a090..176fb5ce0 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -352,4 +352,22 @@ body.rtl { margin-right: 15px; text-align: right; } + + .fa-chevron-left::before { + content: "\F054"; + } + + .fa-chevron-right::before { + content: "\F053"; + } + + .column-back-button__icon { + margin-right: 0; + margin-left: 5px; + } + + .column-header__setting-arrows .column-header__setting-btn:last-child { + padding-left: 0; + padding-right: 10px; + } } From eef8d9a5f7d07bf785c6a7184e01374e211c6d7f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 26 Oct 2018 23:08:34 +0200 Subject: [PATCH 045/124] Add locality check to ActivityPub::FetchRemoteAccountService (#9109) * Add locality check to ActivityPub::FetchRemoteAccountService Fix #8643 Because there are a few places where it is called, it is difficult to confirm if they all previously checked it for locality. It's better to make sure within the service. * Remove faux-remote duplicates of local accounts --- .../activitypub/fetch_remote_account_service.rb | 3 ++- ...4033_remove_faux_remote_account_duplicates.rb | 16 ++++++++++++++++ db/schema.rb | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb index 1ec9ee5dd..8430d12d5 100644 --- a/app/services/activitypub/fetch_remote_account_service.rb +++ b/app/services/activitypub/fetch_remote_account_service.rb @@ -5,9 +5,10 @@ class ActivityPub::FetchRemoteAccountService < BaseService SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze - # Should be called when uri has already been checked for locality # Does a WebFinger roundtrip on each call def call(uri, id: true, prefetched_body: nil, break_on_redirect: false) + return ActivityPub::TagManager.instance.uri_to_resource(uri, Account) if ActivityPub::TagManager.instance.local_uri?(uri) + @json = if prefetched_body.nil? fetch_resource(uri, id) else diff --git a/db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb b/db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb new file mode 100644 index 000000000..bd4f4c2a3 --- /dev/null +++ b/db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb @@ -0,0 +1,16 @@ +class RemoveFauxRemoteAccountDuplicates < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def up + local_domain = Rails.configuration.x.local_domain + + # Just a safety measure to ensure that under no circumstance + # we will query `domain IS NULL` because that would return + # actually local accounts, the originals + return if local_domain.nil? + + Account.where(domain: local_domain).in_batches.destroy_all + end + + def down; end +end diff --git a/db/schema.rb b/db/schema.rb index 3c4f41648..731a84521 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2018_10_24_224956) do +ActiveRecord::Schema.define(version: 2018_10_26_034033) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" From a90b569350853b648610814a06f1e9c8a930e16a Mon Sep 17 00:00:00 2001 From: ThibG Date: Sat, 27 Oct 2018 22:32:54 +0200 Subject: [PATCH 046/124] When searching for an emoji with multiple separators, consider the full input (#9124) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit e.g., typing “blob_cat_p” used to search for “blob” and “cat”, but not “blob_cat_p”, which means “blob_cat_patpat” is very unlikely to show up, although it is likely what the user wanted to type in the first place. --- .../features/emoji/emoji_mart_search_light.js | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js b/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js index 36351ec02..164fdcc0b 100644 --- a/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js +++ b/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js @@ -2,7 +2,7 @@ // https://github.com/missive/emoji-mart/blob/5f2ffcc/src/utils/emoji-index.js import data from './emoji_mart_data_light'; -import { getData, getSanitizedData, intersect } from './emoji_utils'; +import { getData, getSanitizedData, uniq, intersect } from './emoji_utils'; let originalPool = {}; let index = {}; @@ -103,7 +103,7 @@ function search(value, { emojisToShowFilter, maxResults, include, exclude, custo } } - allResults = values.map((value) => { + const searchValue = (value) => { let aPool = pool, aIndex = index, length = 0; @@ -150,15 +150,23 @@ function search(value, { emojisToShowFilter, maxResults, include, exclude, custo } return aIndex.results; - }).filter(a => a); + }; - if (allResults.length > 1) { - results = intersect.apply(null, allResults); - } else if (allResults.length) { - results = allResults[0]; + if (values.length > 1) { + results = searchValue(value); } else { results = []; } + + allResults = values.map(searchValue).filter(a => a); + + if (allResults.length > 1) { + allResults = intersect.apply(null, allResults); + } else if (allResults.length) { + allResults = allResults[0]; + } + + results = uniq(results.concat(allResults)); } if (results) { From 6f78500d4f515c65ec66416e2d78bc9ae247f91c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 27 Oct 2018 22:56:16 +0200 Subject: [PATCH 047/124] Do not remove "dead" domains in tootctl accounts cull (#9108) Leave `tootctl accounts cull` to simply check removed accounts from live domains, and skip temporarily unavailable domains, while listing them in the final output for further action. Add `tootctl domains purge DOMAIN` to be able to purge a domain from that list manually --- lib/cli.rb | 4 ++++ lib/mastodon/accounts_cli.rb | 45 +++++++++++------------------------- lib/mastodon/domains_cli.rb | 40 ++++++++++++++++++++++++++++++++ lib/mastodon/emoji_cli.rb | 1 + lib/mastodon/feeds_cli.rb | 3 ++- lib/mastodon/media_cli.rb | 1 + lib/mastodon/settings_cli.rb | 1 + 7 files changed, 62 insertions(+), 33 deletions(-) create mode 100644 lib/mastodon/domains_cli.rb diff --git a/lib/cli.rb b/lib/cli.rb index bff6d5809..a810c632a 100644 --- a/lib/cli.rb +++ b/lib/cli.rb @@ -6,6 +6,7 @@ require_relative 'mastodon/emoji_cli' require_relative 'mastodon/accounts_cli' require_relative 'mastodon/feeds_cli' require_relative 'mastodon/settings_cli' +require_relative 'mastodon/domains_cli' module Mastodon class CLI < Thor @@ -27,5 +28,8 @@ module Mastodon desc 'settings SUBCOMMAND ...ARGS', 'Manage dynamic settings' subcommand 'settings', Mastodon::SettingsCLI + + desc 'domains SUBCOMMAND ...ARGS', 'Manage account domains' + subcommand 'domains', Mastodon::DomainsCLI end end diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 055333080..142436c19 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require 'rubygems/package' +require 'set' require_relative '../../config/boot' require_relative '../../config/environment' require_relative 'cli_helper' @@ -10,6 +10,7 @@ module Mastodon def self.exit_on_failure? true end + option :all, type: :boolean desc 'rotate [USERNAME]', 'Generate and broadcast new keys' long_desc <<-LONG_DESC @@ -210,33 +211,25 @@ module Mastodon Accounts that have had confirmed activity within the last week are excluded from the checks. - If 10 or more accounts from the same domain cannot be queried - due to a connection error (such as missing DNS records) then - the domain is considered dead, and all other accounts from it - are deleted without further querying. + Domains that are unreachable are not checked. With the --dry-run option, no deletes will actually be carried out. LONG_DESC def cull - domain_thresholds = Hash.new { |hash, key| hash[key] = 0 } - skip_threshold = 7.days.ago - culled = 0 - dead_servers = [] - dry_run = options[:dry_run] ? ' (DRY RUN)' : '' + skip_threshold = 7.days.ago + culled = 0 + skip_domains = Set.new + dry_run = options[:dry_run] ? ' (DRY RUN)' : '' Account.remote.where(protocol: :activitypub).partitioned.find_each do |account| next if account.updated_at >= skip_threshold || (account.last_webfingered_at.present? && account.last_webfingered_at >= skip_threshold) - unless dead_servers.include?(account.domain) + unless skip_domains.include?(account.domain) begin code = Request.new(:head, account.uri).perform(&:code) rescue HTTP::ConnectionError - domain_thresholds[account.domain] += 1 - - if domain_thresholds[account.domain] >= 10 - dead_servers << account.domain - end + skip_domains << account.domain rescue StandardError next end @@ -255,24 +248,12 @@ module Mastodon end end - # Remove dead servers - unless dead_servers.empty? || options[:dry_run] - dead_servers.each do |domain| - Account.where(domain: domain).find_each do |account| - SuspendAccountService.new.call(account) - account.destroy - culled += 1 - say('.', :green, false) - end - end - end - say - say("Removed #{culled} accounts (#{dead_servers.size} dead servers)#{dry_run}", :green) + say("Removed #{culled} accounts. #{skip_domains.size} servers skipped#{dry_run}", skip_domains.empty? ? :green : :yellow) - unless dead_servers.empty? - say('R.I.P.:', :yellow) - dead_servers.each { |domain| say(' ' + domain) } + unless skip_domains.empty? + say('The following servers were not available during the check:', :yellow) + skip_domains.each { |domain| say(' ' + domain) } end end diff --git a/lib/mastodon/domains_cli.rb b/lib/mastodon/domains_cli.rb new file mode 100644 index 000000000..a7a5caa11 --- /dev/null +++ b/lib/mastodon/domains_cli.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require_relative '../../config/boot' +require_relative '../../config/environment' +require_relative 'cli_helper' + +module Mastodon + class DomainsCLI < Thor + def self.exit_on_failure? + true + end + + option :dry_run, type: :boolean + desc 'purge DOMAIN', 'Remove accounts from a DOMAIN without a trace' + long_desc <<-LONG_DESC + Remove all accounts from a given DOMAIN without leaving behind any + records. Unlike a suspension, if the DOMAIN still exists in the wild, + it means the accounts could return if they are resolved again. + LONG_DESC + def purge(domain) + removed = 0 + dry_run = options[:dry_run] ? ' (DRY RUN)' : '' + + Account.where(domain: domain).find_each do |account| + unless options[:dry_run] + SuspendAccountService.new.call(account) + account.destroy + end + + removed += 1 + say('.', :green, false) + end + + DomainBlock.where(domain: domain).destroy_all + + say + say("Removed #{removed} accounts#{dry_run}", :green) + end + end +end diff --git a/lib/mastodon/emoji_cli.rb b/lib/mastodon/emoji_cli.rb index 1987c6394..2262040d4 100644 --- a/lib/mastodon/emoji_cli.rb +++ b/lib/mastodon/emoji_cli.rb @@ -10,6 +10,7 @@ module Mastodon def self.exit_on_failure? true end + option :prefix option :suffix option :overwrite, type: :boolean diff --git a/lib/mastodon/feeds_cli.rb b/lib/mastodon/feeds_cli.rb index 817ed4e79..fe11c3df4 100644 --- a/lib/mastodon/feeds_cli.rb +++ b/lib/mastodon/feeds_cli.rb @@ -9,6 +9,7 @@ module Mastodon def self.exit_on_failure? true end + option :all, type: :boolean, default: false option :background, type: :boolean, default: false option :dry_run, type: :boolean, default: false @@ -58,7 +59,7 @@ module Mastodon account = Account.find_local(username) if account.nil? - say("Account #{username} is not found", :red) + say('No such account', :red) exit(1) end diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index 95d2a8d64..179d1b6b5 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -9,6 +9,7 @@ module Mastodon def self.exit_on_failure? true end + option :days, type: :numeric, default: 7 option :background, type: :boolean, default: false option :verbose, type: :boolean, default: false diff --git a/lib/mastodon/settings_cli.rb b/lib/mastodon/settings_cli.rb index 69485600a..c81cfbe52 100644 --- a/lib/mastodon/settings_cli.rb +++ b/lib/mastodon/settings_cli.rb @@ -9,6 +9,7 @@ module Mastodon def self.exit_on_failure? true end + desc 'open', 'Open registrations' def open Setting.open_registrations = true From 795f0107d23c1c9bd039f6449fa1e094ab7653a7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Oct 2018 06:35:03 +0100 Subject: [PATCH 048/124] Include preview cards in status entity in REST API (#9120) * Include preview cards in status entity in REST API * Display preview card in-stream * Improve in-stream display of preview cards --- app/controllers/application_controller.rb | 1 + app/javascript/mastodon/components/status.js | 9 ++++++ .../features/status/components/card.js | 18 ++++++------ .../status/containers/card_container.js | 2 +- app/javascript/mastodon/reducers/index.js | 2 -- app/javascript/mastodon/reducers/statuses.js | 3 ++ .../styles/mastodon/components.scss | 28 +++++++++++++++++++ app/models/status.rb | 6 ++++ app/serializers/rest/status_serializer.rb | 2 ++ app/services/fetch_link_card_service.rb | 1 + 10 files changed, 61 insertions(+), 11 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index fb4283da3..7bb14aa4c 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -126,6 +126,7 @@ class ApplicationController < ActionController::Base def respond_with_error(code) respond_to do |format| format.any { head code } + format.html do set_locale render "errors/#{code}", layout: 'error', status: code diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 0b23e51f8..9fa8cc008 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -9,6 +9,7 @@ import DisplayName from './display_name'; import StatusContent from './status_content'; import StatusActionBar from './status_action_bar'; import AttachmentList from './attachment_list'; +import Card from '../features/status/components/card'; import { injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { MediaGallery, Video } from '../features/ui/util/async-components'; @@ -256,6 +257,14 @@ class Status extends ImmutablePureComponent { ); } + } else if (status.get('spoiler_text').length === 0 && status.get('card')) { + media = ( + + ); } if (otherAccounts) { diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js index b52f3c4fa..9a87f7a3f 100644 --- a/app/javascript/mastodon/features/status/components/card.js +++ b/app/javascript/mastodon/features/status/components/card.js @@ -59,10 +59,12 @@ export default class Card extends React.PureComponent { card: ImmutablePropTypes.map, maxDescription: PropTypes.number, onOpenMedia: PropTypes.func.isRequired, + compact: PropTypes.boolean, }; static defaultProps = { maxDescription: 50, + compact: false, }; state = { @@ -131,25 +133,25 @@ export default class Card extends React.PureComponent { } render () { - const { card, maxDescription } = this.props; - const { width, embedded } = this.state; + const { card, maxDescription, compact } = this.props; + const { width, embedded } = this.state; if (card === null) { return null; } const provider = card.get('provider_name').length === 0 ? decodeIDNA(getHostname(card.get('url'))) : card.get('provider_name'); - const horizontal = card.get('width') > card.get('height') && (card.get('width') + 100 >= width) || card.get('type') !== 'link'; - const className = classnames('status-card', { horizontal }); + const horizontal = (!compact && card.get('width') > card.get('height') && (card.get('width') + 100 >= width)) || card.get('type') !== 'link' || embedded; const interactive = card.get('type') !== 'link'; + const className = classnames('status-card', { horizontal, compact, interactive }); const title = interactive ? {card.get('title')} : {card.get('title')}; - const ratio = card.get('width') / card.get('height'); + const ratio = compact ? 16 / 9 : card.get('width') / card.get('height'); const height = card.get('width') > card.get('height') ? (width / ratio) : (width * ratio); const description = (
{title} - {!horizontal &&

{trim(card.get('description') || '', maxDescription)}

} + {!(horizontal || compact) &&

{trim(card.get('description') || '', maxDescription)}

} {provider}
); @@ -174,7 +176,7 @@ export default class Card extends React.PureComponent {
- + {horizontal && }
@@ -184,7 +186,7 @@ export default class Card extends React.PureComponent { return (
{embed} - {description} + {!compact && description}
); } else if (card.get('image')) { diff --git a/app/javascript/mastodon/features/status/containers/card_container.js b/app/javascript/mastodon/features/status/containers/card_container.js index a97404de1..6170d9fd8 100644 --- a/app/javascript/mastodon/features/status/containers/card_container.js +++ b/app/javascript/mastodon/features/status/containers/card_container.js @@ -2,7 +2,7 @@ import { connect } from 'react-redux'; import Card from '../components/card'; const mapStateToProps = (state, { statusId }) => ({ - card: state.getIn(['cards', statusId], null), + card: state.getIn(['statuses', statusId, 'card'], null), }); export default connect(mapStateToProps)(Card); diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js index e98566e26..2c98af1db 100644 --- a/app/javascript/mastodon/reducers/index.js +++ b/app/javascript/mastodon/reducers/index.js @@ -14,7 +14,6 @@ import relationships from './relationships'; import settings from './settings'; import push_notifications from './push_notifications'; import status_lists from './status_lists'; -import cards from './cards'; import mutes from './mutes'; import reports from './reports'; import contexts from './contexts'; @@ -46,7 +45,6 @@ const reducers = { relationships, settings, push_notifications, - cards, mutes, reports, contexts, diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index 6e3d830da..2c58969f3 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -10,6 +10,7 @@ import { STATUS_REVEAL, STATUS_HIDE, } from '../actions/statuses'; +import { STATUS_CARD_FETCH_SUCCESS } from '../actions/cards'; import { TIMELINE_DELETE } from '../actions/timelines'; import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer'; import { Map as ImmutableMap, fromJS } from 'immutable'; @@ -65,6 +66,8 @@ export default function statuses(state = initialState, action) { }); case TIMELINE_DELETE: return deleteStatus(state, action.id, action.references); + case STATUS_CARD_FETCH_SUCCESS: + return state.setIn([action.id, 'card'], fromJS(action.card)); default: return state; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f77dc405c..419f85c36 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2560,6 +2560,9 @@ a.status-card { display: block; margin-top: 5px; font-size: 13px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .status-card__image { @@ -2584,6 +2587,31 @@ a.status-card { } } +.status-card.compact { + border-color: lighten($ui-base-color, 4%); + + &.interactive { + border: 0; + } + + .status-card__content { + padding: 8px; + padding-top: 10px; + } + + .status-card__title { + white-space: nowrap; + } + + .status-card__image { + flex: 0 0 60px; + } +} + +a.status-card.compact:hover { + background-color: lighten($ui-base-color, 4%); +} + .status-card__image-image { border-radius: 4px 0 0 4px; display: block; diff --git a/app/models/status.rb b/app/models/status.rb index bcb7dd373..cb2c01040 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -89,6 +89,7 @@ class Status < ApplicationRecord :conversation, :status_stat, :tags, + :preview_cards, :stream_entry, active_mentions: :account, reblog: [ @@ -96,6 +97,7 @@ class Status < ApplicationRecord :application, :stream_entry, :tags, + :preview_cards, :media_attachments, :conversation, :status_stat, @@ -163,6 +165,10 @@ class Status < ApplicationRecord reblog end + def preview_card + preview_cards.first + end + def title if destroyed? "#{account.acct} deleted status" diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index 1f2f46b7e..bfc2d78b4 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -20,6 +20,8 @@ class REST::StatusSerializer < ActiveModel::Serializer has_many :tags has_many :emojis, serializer: REST::CustomEmojiSerializer + has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer + def id object.id.to_s end diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index 4551aa7e0..462e5ee13 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -63,6 +63,7 @@ class FetchLinkCardService < BaseService def attach_card @status.preview_cards << @card + Rails.cache.delete(@status) end def parse_urls From 678f5ed296e71bb80d170027b114d9d30a7ccab7 Mon Sep 17 00:00:00 2001 From: kedama Date: Sun, 28 Oct 2018 14:39:59 +0900 Subject: [PATCH 049/124] Set z-index of dropdown to 9999. (#9126) --- app/javascript/styles/mastodon/components.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 419f85c36..e5d9f7b9f 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1669,6 +1669,7 @@ a.account__display-name { padding: 4px 0; border-radius: 4px; box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); + z-index: 9999; ul { list-style: none; From 93a1ab9030a358348addd55d5e18caaaec2d3a37 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Oct 2018 06:40:45 +0100 Subject: [PATCH 050/124] Add progress indicators to MigrateAccountConversations (#9101) * Add progress indicators to MigrateAccountConversations * Avoid running expensive query for explain * Use exec_query instead of execute --- ...024224956_migrate_account_conversations.rb | 50 +++++++++++++++---- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/db/migrate/20181024224956_migrate_account_conversations.rb b/db/migrate/20181024224956_migrate_account_conversations.rb index 1821e8c27..47f7375ba 100644 --- a/db/migrate/20181024224956_migrate_account_conversations.rb +++ b/db/migrate/20181024224956_migrate_account_conversations.rb @@ -14,12 +14,29 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2] sleep 1 end - local_direct_statuses.find_each do |status| + total = estimate_rows(local_direct_statuses) + estimate_rows(notifications_about_direct_statuses) + migrated = 0 + started_time = Time.zone.now + last_time = Time.zone.now + + local_direct_statuses.includes(:account, mentions: :account).find_each do |status| AccountConversation.add_status(status.account, status) + migrated += 1 + + if Time.zone.now - last_time > 1 + say_progress(migrated, total, started_time) + last_time = Time.zone.now + end end - notifications_about_direct_statuses.find_each do |notification| + notifications_about_direct_statuses.includes(:account, mention: { status: [:account, mentions: :account] }).find_each do |notification| AccountConversation.add_status(notification.account, notification.target_status) + migrated += 1 + + if Time.zone.now - last_time > 1 + say_progress(migrated, total, started_time) + last_time = Time.zone.now + end end end @@ -28,16 +45,31 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2] private + def estimate_rows(query) + result = exec_query("EXPLAIN #{query.to_sql}").first + result['QUERY PLAN'].scan(/ rows=([\d]+)/).first&.first&.to_i || 0 + end + + def say_progress(migrated, total, started_time) + status = "Migrated #{migrated} rows" + + percentage = 100.0 * migrated / total + status += " (~#{sprintf('%.2f', percentage)}%, " + + remaining_time = (100.0 - percentage) * (Time.zone.now - started_time) / percentage + + status += "#{(remaining_time / 60).to_i}:" + status += sprintf('%02d', remaining_time.to_i % 60) + status += ' remaining)' + + say status, true + end + def local_direct_statuses - Status.unscoped - .local - .where(visibility: :direct) - .includes(:account, mentions: :account) + Status.unscoped.local.where(visibility: :direct) end def notifications_about_direct_statuses - Notification.joins(mention: :status) - .where(activity_type: 'Mention', statuses: { visibility: :direct }) - .includes(:account, mention: { status: [:account, mentions: :account] }) + Notification.joins(mention: :status).where(activity_type: 'Mention', statuses: { visibility: :direct }) end end From 11b3ee4f4c1ede03f31dff4048283480ee22dd5f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Oct 2018 06:42:34 +0100 Subject: [PATCH 051/124] Reset status cache when status_stat or media_attachment updates (#9119) * Reset status cache when status_stat or media_attachment updates Fix #8711 Media attachments are generally immutable, but admins can update the sensitive flag, and this would ensure the change is visible instantly. Same for updates to status stats. That is a regression from #8185, because even the correct updated_at fetched from a join doesn't seem to invalidate the cache. * Remove join from Status#cache_ids since it has no effect --- app/models/media_attachment.rb | 6 ++++++ app/models/status.rb | 4 ---- app/models/status_stat.rb | 8 ++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 1e4fae3de..1bfe02fd6 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -130,6 +130,7 @@ class MediaAttachment < ApplicationRecord "#{x},#{y}" end + after_commit :reset_parent_cache, on: :update before_create :prepare_description, unless: :local? before_create :set_shortcode before_post_process :set_type_and_extension @@ -230,4 +231,9 @@ class MediaAttachment < ApplicationRecord bitrate: movie.bitrate, } end + + def reset_parent_cache + return if status_id.nil? + Rails.cache.delete("statuses/#{status_id}") + end end diff --git a/app/models/status.rb b/app/models/status.rb index cb2c01040..32fedb924 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -240,10 +240,6 @@ class Status < ApplicationRecord before_validation :set_local class << self - def cache_ids - left_outer_joins(:status_stat).select('statuses.id, greatest(statuses.updated_at, status_stats.updated_at) AS updated_at') - end - def selectable_visibilities visibilities.keys - %w(direct limited) end diff --git a/app/models/status_stat.rb b/app/models/status_stat.rb index 9d358776b..024c467e7 100644 --- a/app/models/status_stat.rb +++ b/app/models/status_stat.rb @@ -14,4 +14,12 @@ class StatusStat < ApplicationRecord belongs_to :status, inverse_of: :status_stat + + after_commit :reset_parent_cache + + private + + def reset_parent_cache + Rails.cache.delete("statuses/#{status_id}") + end end From 26fe37c41460d6db3b5dd975a86c14fdd8dfadf3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Oct 2018 07:15:20 +0100 Subject: [PATCH 052/124] Update i18n-tasks and change CircleCI command (#9104) * Update i18n-tasks and CircleCI command * Fix #9088 * Update i18n-tasks * Fix ast --- .circleci/config.yml | 2 +- Gemfile | 2 +- Gemfile.lock | 4 +-- config/locales/activerecord.ast.yml | 1 + config/locales/ast.yml | 3 +- config/locales/cs.yml | 52 +++++++--------------------- config/locales/cy.yml | 24 ++++--------- config/locales/devise.ast.yml | 1 + config/locales/devise.cs.yml | 4 +-- config/locales/devise.cy.yml | 4 +-- config/locales/devise.hr.yml | 4 +-- config/locales/devise.pl.yml | 4 +-- config/locales/devise.zh-TW.yml | 4 +-- config/locales/doorkeeper.ast.yml | 1 + config/locales/en_GB.yml | 1 + config/locales/hr.yml | 12 ++----- config/locales/pl.yml | 13 ++----- config/locales/simple_form.en_GB.yml | 1 + config/locales/sk.yml | 20 +++-------- config/locales/sr.yml | 28 ++++----------- config/locales/uk.yml | 24 ++++--------- config/locales/zh-CN.yml | 7 ++-- config/locales/zh-TW.yml | 49 +++++++------------------- 23 files changed, 73 insertions(+), 192 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c1b963472..1161e4076 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -175,7 +175,7 @@ jobs: - *attach_workspace - run: bundle exec i18n-tasks check-normalized - run: bundle exec i18n-tasks unused - - run: bundle exec i18n-tasks missing-plural-keys + - run: bundle exec i18n-tasks missing -t plural - run: bundle exec i18n-tasks check-consistent-interpolations workflows: diff --git a/Gemfile b/Gemfile index 1e48b500a..ca2d2d51a 100644 --- a/Gemfile +++ b/Gemfile @@ -95,7 +95,7 @@ gem 'rdf-normalize', '~> 0.3' group :development, :test do gem 'fabrication', '~> 2.20' gem 'fuubar', '~> 2.3' - gem 'i18n-tasks', '~> 0.9', require: false, git: 'https://github.com/Gargron/i18n-tasks.git', ref: '7a57fbe7000f4f8120e250a757ab345c28c6885c' + gem 'i18n-tasks', '~> 0.9', require: false, git: 'https://github.com/Gargron/i18n-tasks.git', ref: 'ab6e10878ccdb6243f934f30372276d260c14251' gem 'pry-byebug', '~> 3.6' gem 'pry-rails', '~> 0.3' gem 'rspec-rails', '~> 3.8' diff --git a/Gemfile.lock b/Gemfile.lock index d7ccb59b8..166dfdb4f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GIT remote: https://github.com/Gargron/i18n-tasks.git - revision: 7a57fbe7000f4f8120e250a757ab345c28c6885c - ref: 7a57fbe7000f4f8120e250a757ab345c28c6885c + revision: ab6e10878ccdb6243f934f30372276d260c14251 + ref: ab6e10878ccdb6243f934f30372276d260c14251 specs: i18n-tasks (0.9.27) activesupport (>= 4.0.2) diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml index 0d161faf2..6e32cbc2f 100644 --- a/config/locales/activerecord.ast.yml +++ b/config/locales/activerecord.ast.yml @@ -1 +1,2 @@ +--- ast: {} diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 98986cdd0..f787e98f8 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -21,8 +21,7 @@ ast: hosted_on: Mastodon ta agospiáu en %{domain} learn_more: Deprendi más source_code: Códigu fonte - status_count_after: - other: estaos + status_count_after: estaos terms: Términos del serviciu user_count_after: usuarios what_is_mastodon: "¿Qué ye Mastodon?" diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 67bda70f1..c73c4fee1 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -30,22 +30,16 @@ cs: other_instances: Seznam instancí privacy_policy: Zásady soukromí source_code: Zdrojový kód - status_count_after: - one: příspěvek - other: příspěvků + status_count_after: příspěvků status_count_before: Kteří napsali terms: Podmínky používání - user_count_after: - one: uživatele - other: uživatelů + user_count_after: uživatelů user_count_before: Domov what_is_mastodon: Co je Mastodon? accounts: choices_html: 'Volby uživatele %{name}:' follow: Sledovat - followers: - one: Sledovatel - other: Sledovatelé + followers: Sledovatelé following: Sledovaní joined: Připojil/a se v %{date} link_verified_on: Vlastnictví tohoto odkazu bylo zkontrolováno %{date} @@ -57,9 +51,7 @@ cs: people_who_follow: Lidé, kteří sledují uživatele %{name} pin_errors: following: Musíte již sledovat osobu, kterou chcete podpořit - posts: - one: Toot - other: Tooty + posts: Tooty posts_tab_heading: Tooty posts_with_replies: Tooty a odpovědi reserved_username: Toto uživatelské jméno je rezervováno @@ -268,9 +260,7 @@ cs: suspend: Suspendovat severity: Přísnost show: - affected_accounts: - one: Jeden účet v databázi byl ovlivněn - other: "%{count} účtů v databázi byl ovlivněn" + affected_accounts: "%{count} účtů v databázi byl ovlivněn" retroactive: silence: Odtišit všechny existující účty z této domény suspend: Zrušit suspenzaci všech existujících účtů z této domény @@ -562,9 +552,7 @@ cs: followers_count: Počet sledovatelů lock_link: Zamkněte svůj účet purge: Odstranit ze sledovatelů - success: - one: V průběhu utišování sledovatelů z jedné domény... - other: V průběhu utišování sledovatelů z %{count} domén... + success: V průběhu utišování sledovatelů z %{count} domén... true_privacy_html: Berte prosím na vědomí, že skutečného soukromí se dá dosáhnout pouze za pomoci end-to-end šifrování. unlocked_warning_html: Kdokoliv vás může sledovat a okamžitě vidět vaše soukromé příspěvky. %{lock_link}, abyste mohl/a zkontrolovat a odmítnout sledovatele. unlocked_warning_title: Váš účet není zamknutý @@ -575,9 +563,7 @@ cs: generic: changes_saved_msg: Změny byly úspěšně uloženy! save_changes: Uložit změny - validation_errors: - one: Něco ještě není úplně v pořádku! Prosím zkontrolujte chybu níže - other: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže + validation_errors: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže imports: preface: Můžete importovat data, která jste exportoval/a z jiné instance, jako například seznam lidí, které sledujete či blokujete. success: Vaše data byla úspěšně nahrána a nyní budou zpracována v daný čas @@ -600,9 +586,7 @@ cs: expires_in_prompt: Nikdy generate: Vygenerovat invited_by: 'Byl/a jste pozván/a uživatelem:' - max_uses: - one: 1 použití - other: "%{count} použití" + max_uses: "%{count} použití" max_uses_prompt: Bez limitu prompt: Vygenerujte a sdílejte s ostatními odkazy a umožněte jim přístup na tuto instanci table: @@ -628,12 +612,8 @@ cs: action: Zobrazit všechna oznámení body: Zde najdete stručný souhrn zpráv, které jste zmeškal/a od vaší poslední návštěvy %{since} mention: "%{name} vás zmínil/a v:" - new_followers_summary: - one: Navíc jste získal/a jednoho nového sledovatele, zatímco jste byl/a pryč! Hurá! - other: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Hurá! - subject: - one: "Jedno nové oznámení od vaší poslední návštěvy \U0001F418" - other: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418" + new_followers_summary: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Hurá! + subject: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418" title: Ve vaší absenci... favourite: body: 'Váš příspěvek si oblíbil/a %{name}:' @@ -750,17 +730,11 @@ cs: statuses: attached: description: 'Přiloženo: %{attached}' - image: - one: "%{count} obrázek" - other: "%{count} obrázků" - video: - one: "%{count} video" - other: "%{count} videí" + image: "%{count} obrázků" + video: "%{count} videí" boosted_from_html: Boostnuto z %{acct_link} content_warning: 'Varování o obsahu: %{warning}' - disallowed_hashtags: - one: 'obsahuje nepovolený hashtag: %{tags}' - other: 'obsahuje nepovolené hashtagy: %{tags}' + disallowed_hashtags: 'obsahuje nepovolené hashtagy: %{tags}' language_detection: Zjistit jazyk automaticky open_in_web: Otevřít na webu over_character_limit: limit %{max} znaků byl překročen diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 8b16949a5..3bf256ac5 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -30,22 +30,16 @@ cy: other_instances: Rhestr achosion privacy_policy: Polisi preifatrwydd source_code: Cod ffynhonnell - status_count_after: - one: statws - other: statws + status_count_after: statws status_count_before: Pwy ysgrifennodd terms: Telerau gwasanaeth - user_count_after: - one: defnyddiwr - other: defnyddwyr + user_count_after: defnyddwyr user_count_before: Cartref i what_is_mastodon: Beth yw Mastodon? accounts: choices_html: 'Dewisiadau %{name}:' follow: Dilynwch - followers: - one: Dilynwr - other: Dilynwyr + followers: Dilynwyr following: Yn dilyn joined: Ymunodd %{date} media: Cyfryngau @@ -56,9 +50,7 @@ cy: people_who_follow: Pobl sy'n dilyn %{name} pin_errors: following: Rhaid i ti fod yn dilyn y person yr ydych am ei gymeradwyo yn barod - posts: - one: Tŵt - other: Tŵtiau + posts: Tŵtiau posts_tab_heading: Tŵtiau posts_with_replies: Tŵtiau ac atebion reserved_username: Mae'r enw defnyddior yn neilltuedig @@ -262,9 +254,7 @@ cy: suspend: Atal severity: Difrifoldeb show: - affected_accounts: - one: Mae un cyfri yn y bas data wedi ei effeithio - other: "%{count} o gyfrifoedd yn y bas data wedi eu hefeithio" + affected_accounts: "%{count} o gyfrifoedd yn y bas data wedi eu hefeithio" retroactive: silence: Dad-dawelu pob cyfri presennol o'r parth hwn suspend: Dad-atal pob cyfrif o'r parth hwn sy'n bodoli @@ -508,9 +498,7 @@ cy: generic: changes_saved_msg: Llwyddwyd i gadw y newidiadau! save_changes: Cadw newidiadau - validation_errors: - one: Mae rhywbeth o'i le o hyd! Edrychwch ar y gwall isod os gwelwch yn dda - other: Mae rhywbeth o'i le o hyd! Edrychwch ar y %{count} gwall isod os gwelwch yn dda + validation_errors: Mae rhywbeth o'i le o hyd! Edrychwch ar y %{count} gwall isod os gwelwch yn dda imports: preface: Mae modd mewnforio data yr ydych wedi allforio o achos arall, megis rhestr o bobl yr ydych yn ei ddilyn neu yn blocio. success: Uwchlwyddwyd eich data yn llwyddiannus ac fe fydd yn cael ei brosesu mewn da bryd diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml index 0d161faf2..6e32cbc2f 100644 --- a/config/locales/devise.ast.yml +++ b/config/locales/devise.ast.yml @@ -1 +1,2 @@ +--- ast: {} diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml index 49814b368..4268dc0ad 100644 --- a/config/locales/devise.cs.yml +++ b/config/locales/devise.cs.yml @@ -77,6 +77,4 @@ cs: expired: vypršel, prosím vyžádejte si nový not_found: nenalezen not_locked: nebyl uzamčen - not_saved: - one: '1 chyba zabránila uložení tohoto %{resource}:' - other: "%{count} chyb zabránila uložení tohoto %{resource}:" + not_saved: "%{count} chyb zabránila uložení tohoto %{resource}:" diff --git a/config/locales/devise.cy.yml b/config/locales/devise.cy.yml index 9cf8b96f0..d7d694f14 100644 --- a/config/locales/devise.cy.yml +++ b/config/locales/devise.cy.yml @@ -77,6 +77,4 @@ cy: expired: wedi dod i ben, gwnewch gais am un newydd os gwelwch yn dda not_found: heb ei ganfod not_locked: heb ei gloi - not_saved: - one: 'Gwaharddwyd yr %{resource} rhag cael ei arbed oherwydd 1 gwall:' - other: 'Gwaharddwyd yr %{resource} rhag cael ei arbed oherwydd %{count} gwall:' + not_saved: 'Gwaharddwyd yr %{resource} rhag cael ei arbed oherwydd %{count} gwall:' diff --git a/config/locales/devise.hr.yml b/config/locales/devise.hr.yml index 07c0079ab..276d26cad 100644 --- a/config/locales/devise.hr.yml +++ b/config/locales/devise.hr.yml @@ -58,6 +58,4 @@ hr: expired: je istekao, zatraži novu not_found: nije nađen not_locked: nije zaključan - not_saved: - one: '1 greška je zabranila da ovaj %{resource} bude sačuvan:' - other: "%{count} greške su zabranile da ovaj %{resource} bude sačuvan:" + not_saved: "%{count} greške su zabranile da ovaj %{resource} bude sačuvan:" diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml index 77afc4bf5..54bae2925 100644 --- a/config/locales/devise.pl.yml +++ b/config/locales/devise.pl.yml @@ -77,6 +77,4 @@ pl: expired: wygasło, poproś o nowe not_found: nie znaleziono not_locked: było zablokowane - not_saved: - one: '1 błąd uniemożliwił zapisanie zasobu %{resource}:' - other: 'Błędy (%{count}) uniemożliwiły zapisanie zasobu %{resource}:' + not_saved: 'Błędy (%{count}) uniemożliwiły zapisanie zasobu %{resource}:' diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml index 195f167a0..6dec562e1 100644 --- a/config/locales/devise.zh-TW.yml +++ b/config/locales/devise.zh-TW.yml @@ -77,6 +77,4 @@ zh-TW: expired: 已經過期,請重新申請 not_found: 找不到 not_locked: 並未被鎖定 - not_saved: - one: 1 個錯誤使 %{resource} 無法被儲存︰ - other: "%{count} 個錯誤使 %{resource} 無法被儲存︰" + not_saved: "%{count} 個錯誤使 %{resource} 無法被儲存︰" diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml index 0d161faf2..6e32cbc2f 100644 --- a/config/locales/doorkeeper.ast.yml +++ b/config/locales/doorkeeper.ast.yml @@ -1 +1,2 @@ +--- ast: {} diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index 0967ef424..d9e1a256f 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -1 +1,2 @@ +--- {} diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 851b3623b..729206a98 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -61,9 +61,7 @@ hr: generic: changes_saved_msg: Izmjene su uspješno sačuvane! save_changes: Sačuvaj izmjene - validation_errors: - one: Nešto ne štima! Vidi grešku ispod - other: Nešto još uvijek ne štima! Vidi %{count} greške ispod + validation_errors: Nešto još uvijek ne štima! Vidi %{count} greške ispod imports: preface: Možeš uvesti određene podatke kao što su svi ljudi koje slijediš ili blokiraš u svoj račun na ovoj instanci, sa fajlova kreiranih izvozom sa druge instance. success: Tvoji podaci su uspješno uploadani i bit će obrađeni u dogledno vrijeme @@ -76,12 +74,8 @@ hr: digest: body: 'Ovo je kratak sažetak propuštenog od tvog prošlog posjeta %{since}:' mention: "%{name} te je spomenuo:" - new_followers_summary: - one: Imaš novog sljedbenika! Yay! - other: Imaš %{count} novih sljedbenika! Prekrašno! - subject: - one: "1 nova notifikacija od tvog prošlog posjeta \U0001F418" - other: "%{count} novih notifikacija od tvog prošlog posjeta \U0001F418" + new_followers_summary: Imaš %{count} novih sljedbenika! Prekrašno! + subject: "%{count} novih notifikacija od tvog prošlog posjeta \U0001F418" favourite: body: 'Tvoj status je %{name} označio kao omiljen:' subject: "%{name} je označio kao omiljen tvoj status" diff --git a/config/locales/pl.yml b/config/locales/pl.yml index eb102cdec..74b2470bd 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -279,10 +279,7 @@ pl: suspend: Zawieś severity: Priorytet show: - affected_accounts: - many: Dotyczy %{count} kont w bazie danych - one: Dotyczy jednego konta w bazie danych - other: Dotyczy %{count} kont w bazie danych + affected_accounts: Dotyczy %{count} kont w bazie danych retroactive: silence: Odwołaj wyciszenie wszystkich kont w tej domenie suspend: Odwołaj zawieszenie wszystkich kont w tej domenie @@ -577,9 +574,7 @@ pl: followers_count: Liczba śledzących lock_link: Zablokuj swoje konto purge: Przestań śledzić - success: - one: W trakcie usuwania śledzących z jednej domeny… - other: W trakcie usuwania śledzących z %{count} domen… + success: W trakcie usuwania śledzących z %{count} domen… true_privacy_html: Pamiętaj, że rzeczywista prywatność może zostać uzyskana wyłącznie dzięki szyfrowaniu end-to-end. unlocked_warning_html: Każdy może Cię śledzić, dzięki czemu może zobaczyć Twoje niepubliczne wpisy. %{lock_link} aby móc kontrolować, kto Cię śledzi. unlocked_warning_title: Twoje konto nie jest zablokowane @@ -786,9 +781,7 @@ pl: other: "%{count} filmów" boosted_from_html: Podbito przez %{acct_link} content_warning: 'Ostrzeżenie o zawartości: %{warning}' - disallowed_hashtags: - one: 'zawiera niedozwolony hashtag: %{tags}' - other: 'zawiera niedozwolone hashtagi: %{tags}' + disallowed_hashtags: 'zawiera niedozwolone hashtagi: %{tags}' language_detection: Automatycznie wykrywaj język open_in_web: Otwórz w przeglądarce over_character_limit: limit %{max} znaków przekroczony diff --git a/config/locales/simple_form.en_GB.yml b/config/locales/simple_form.en_GB.yml index 0967ef424..d9e1a256f 100644 --- a/config/locales/simple_form.en_GB.yml +++ b/config/locales/simple_form.en_GB.yml @@ -1 +1,2 @@ +--- {} diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 6b18d31de..2b928169a 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -30,22 +30,16 @@ sk: other_instances: Zoznam ďalších inštancií privacy_policy: Ustanovenia o súkromí source_code: Zdrojový kód - status_count_after: - one: status - other: statusy + status_count_after: statusy status_count_before: Ktorí napísali terms: Podmienky užívania - user_count_after: - one: užívateľ - other: užívateľov + user_count_after: užívateľov user_count_before: Domov pre what_is_mastodon: Čo je Mastodon? accounts: choices_html: "%{name}vé voľby:" follow: Sledovať - followers: - one: Následovateľ - other: Sledovatelia + followers: Sledovatelia following: Sledovaní joined: Pridal/a sa %{date} media: Médiá @@ -56,9 +50,7 @@ sk: people_who_follow: Ľudia sledujúci %{name} pin_errors: following: Musíš už následovať toho človeka, ktorého si praješ zviditeľniť - posts: - one: Príspevok - other: Príspevky + posts: Príspevky posts_tab_heading: Príspevky posts_with_replies: Príspevky s odpoveďami reserved_username: Prihlasovacie meno je rezervované @@ -746,9 +738,7 @@ sk: other: "%{count} videí" boosted_from_html: Povýšené od %{acct_link} content_warning: 'Varovanie o obsahu: %{warning}' - disallowed_hashtags: - one: 'obsahuje nepovolený haštag: %{tags}' - other: 'obsahuje nepovolené haštagy: %{tags}' + disallowed_hashtags: 'obsahuje nepovolené haštagy: %{tags}' language_detection: Zisti jazyk automaticky open_in_web: Otvor v okne prehliadača over_character_limit: limit počtu %{max} znakov bol presiahnutý diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 36d81886e..1ade87f9e 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -30,22 +30,16 @@ sr: other_instances: Листа инстанци privacy_policy: Полиса приватности source_code: Изворни код - status_count_after: - one: статус - other: статуси + status_count_after: статуси status_count_before: Који су написали terms: Услови коришћења - user_count_after: - one: корисник - other: корисници + user_count_after: корисници user_count_before: Дом за what_is_mastodon: Шта је Мастодон? accounts: choices_html: "%{name}'s избори:" follow: Запрати - followers: - one: Пратилац - other: Пратиоци + followers: Пратиоци following: Пратим joined: Придружио/ла се %{date} media: Медији @@ -56,9 +50,7 @@ sr: people_who_follow: Људи који прате %{name} pin_errors: following: Морате пратити ову особу ако хоћете да потврдите - posts: - one: Труба - other: Трубе + posts: Трубе posts_tab_heading: Трубе posts_with_replies: Трубе и одговори reserved_username: Корисничко име је резервисано @@ -754,17 +746,11 @@ sr: statuses: attached: description: 'У прилогу: %{attached}' - image: - one: "%{count} слику" - other: "%{count} слике" - video: - one: "%{count} видео" - other: "%{count} видеа" + image: "%{count} слике" + video: "%{count} видеа" boosted_from_html: Подржано од %{acct_link} content_warning: 'Упозорење на садржај: %{warning}' - disallowed_hashtags: - one: 'садржи забрањену тарабу: %{tags}' - other: 'садржи забрањене тарабе: %{tags}' + disallowed_hashtags: 'садржи забрањене тарабе: %{tags}' language_detection: Аутоматскo откривање језика open_in_web: Отвори у вебу over_character_limit: ограничење од %{max} карактера прекорачено diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 83a315a37..986ef70ad 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -518,18 +518,14 @@ uk: followers_count: Кількість підписників lock_link: Закрийте акаунт purge: Видалити з підписників - success: - one: У процесі м'якого блокування підписників з одного домену... - other: У процесі м'якого блокування підписників з %{count} доменів... + success: У процесі м'якого блокування підписників з %{count} доменів... true_privacy_html: Будь ласка, помітьте, що справжняя конфіденційність може бути досягнена тільки за допомогою end-to-end шифрування. unlocked_warning_html: Хто завгодно може підписатися на Вас та отримати доступ до перегляду Ваших приватних статусів. %{lock_link}, щоб отримати можливість роздивлятися та вручну підтверджувати запити щодо підписки. unlocked_warning_title: Ваш аккаунт не закритий для підписки generic: changes_saved_msg: Зміни успішно збережені! save_changes: Зберегти зміни - validation_errors: - one: Щось тут не так! Будь ласка, ознайомтеся з помилкою нижче - other: Щось тут не так! Будь ласка, ознайомтеся з %{count} помилками нижче + validation_errors: Щось тут не так! Будь ласка, ознайомтеся з %{count} помилками нижче imports: preface: Вы можете завантажити деякі дані, наприклад, списки людей, на яких Ви підписані чи яких блокуєте, в Ваш акаунт на цій інстанції з файлів, експортованих з іншої інстанції. success: Ваші дані були успішно загружені та будуть оброблені в найближчий момент @@ -552,9 +548,7 @@ uk: expires_in_prompt: Ніколи generate: Згенерувати invited_by: 'Вас запросив(-ла):' - max_uses: - one: 1 використання - other: "%{count} використань" + max_uses: "%{count} використань" max_uses_prompt: Без обмеження prompt: Генеруйте та діліться посиланням з іншими для надання доступу до сайту table: @@ -703,17 +697,11 @@ uk: statuses: attached: description: 'Прикріплено: %{attached}' - image: - one: "%{count} картинка" - other: "%{count} картинки" - video: - one: "%{count} відео" - other: "%{count} відео" + image: "%{count} картинки" + video: "%{count} відео" boosted_from_html: Просунуто від %{acct_link} content_warning: 'Попередження про контент: %{warning}' - disallowed_hashtags: - one: 'містив заборонений хештеґ: %{tags}' - other: 'містив заборонені хештеґи: %{tags}' + disallowed_hashtags: 'містив заборонені хештеґи: %{tags}' language_detection: Автоматично визначати мову open_in_web: Відкрити у вебі over_character_limit: перевищено ліміт символів (%{max}) diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 0ce1a0ed7..ca2d388b0 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -30,13 +30,10 @@ zh-CN: other_instances: 其他实例 privacy_policy: 隐私政策 source_code: 源代码 - status_count_after: - one: 条嘟文 + status_count_after: 条嘟文 status_count_before: 他们共嘟出了 terms: 使用条款 - user_count_after: - one: 位用户 - other: 位用户 + user_count_after: 位用户 user_count_before: 这里共注册有 what_is_mastodon: Mastodon 是什么? accounts: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index d1b7633f3..9a7c2b293 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -29,18 +29,15 @@ zh-TW: learn_more: 了解詳細 other_instances: 其他站點 source_code: 原始碼 - status_count_after: - one: 狀態 + status_count_after: 狀態 status_count_before: 他們共嘟出了 terms: 使用條款 - user_count_after: - one: 使用者 + user_count_after: 使用者 user_count_before: 這裡共註冊有 what_is_mastodon: 什麼是 Mastodon? accounts: follow: 關注 - followers: - other: 關注者 + followers: 關注者 following: 正在關注 media: 媒體 moved_html: "%{name} 已經搬遷到 %{new_profile_link}:" @@ -48,9 +45,7 @@ zh-TW: nothing_here: 暫時沒有內容可供顯示! people_followed_by: "%{name} 關注的人" people_who_follow: 關注 %{name} 的人 - posts: - one: 嘟掉 - other: 嘟文 + posts: 嘟文 posts_tab_heading: 嘟文 posts_with_replies: 嘟文與回覆 reserved_username: 此用戶名已被保留 @@ -234,9 +229,7 @@ zh-TW: suspend: 自動封鎖 severity: 嚴重度 show: - affected_accounts: - one: 資料庫中有一個使用者受到影響 - other: 資料庫中有%{count}個使用者受影響 + affected_accounts: 資料庫中有%{count}個使用者受影響 retroactive: silence: 對此網域的所有使用者取消靜音 suspend: 對此網域的所有使用者取消封鎖 @@ -480,18 +473,14 @@ zh-TW: followers_count: 關注者數量 lock_link: 將你的帳戶設定為私人 purge: 移除關注者 - success: - one: 正準備軟性封鎖 1 個網域的關注者…… - other: 正準備軟性封鎖 %{count} 個網域的關注者…… + success: 正準備軟性封鎖 %{count} 個網域的關注者…… true_privacy_html: 請謹記,唯有點對點加密方可以真正確保你的隱私。 unlocked_warning_html: 任何人都可以在關注你後立即查看非公開的嘟文。只要%{lock_link},你就可以審核並拒絕關注請求。 unlocked_warning_title: 你的帳戶是公開的 generic: changes_saved_msg: 已成功儲存修改! save_changes: 儲存修改 - validation_errors: - one: 送出的資料有問題 - other: 送出的資料有 %{count} 個問題 + validation_errors: 送出的資料有 %{count} 個問題 imports: preface: 您可以在此匯入您在其他站點所匯出的資料檔,包括關注的使用者、封鎖的使用者名單。 success: 資料檔上傳成功,正在匯入,請稍候 @@ -514,9 +503,7 @@ zh-TW: expires_in_prompt: 永不過期 generate: 建立邀請連結 invited_by: 你的邀請人是: - max_uses: - one: 1 次 - other: "%{count} 次" + max_uses: "%{count} 次" max_uses_prompt: 無限制 prompt: 建立分享連結,邀請他人在本站點註冊 table: @@ -542,12 +529,8 @@ zh-TW: action: 閱覽所有通知 body: 以下是自%{since}你最後一次登入以來錯過的訊息摘要 mention: "%{name} 在此提及了你:" - new_followers_summary: - one: 而且,你不在的時候,有一個人關注你! 耶! - other: 而且,你不在的時候,有 %{count} 個人關注你了! 好棒! - subject: - one: "自從上次登入以來,你收到 1 則新的通知 \U0001F418" - other: "自從上次登入以來,你收到 %{count} 則新的通知 \U0001F418" + new_followers_summary: 而且,你不在的時候,有 %{count} 個人關注你了! 好棒! + subject: "自從上次登入以來,你收到 %{count} 則新的通知 \U0001F418" title: 你不在的時候... favourite: body: '你的嘟文被 %{name} 加入了最愛:' @@ -653,17 +636,11 @@ zh-TW: statuses: attached: description: 附件: %{attached} - image: - one: "%{count} 幅圖片" - other: "%{count} 幅圖片" - video: - one: "%{count} 段影片" - other: "%{count} 段影片" + image: "%{count} 幅圖片" + video: "%{count} 段影片" boosted_from_html: 轉嘟自 %{acct_link} content_warning: 內容警告: %{warning} - disallowed_hashtags: - one: 包含不允許的標籤: %{tags} - other: 包含不允許的標籤: %{tags} + disallowed_hashtags: 包含不允許的標籤: %{tags} language_detection: 自動偵測語言 open_in_web: 以網頁開啟 over_character_limit: 超過了 %{max} 字的限制 From 9c38c5daa3d7298f02c763a84a74680dcc89dac2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 29 Oct 2018 04:42:07 +0100 Subject: [PATCH 053/124] Fix dimensions of preview cards, fix crash in web UI, fix warning (#9133) --- app/javascript/mastodon/actions/cards.js | 52 ------------------- app/javascript/mastodon/actions/statuses.js | 2 - .../mastodon/components/status_content.js | 3 +- .../features/status/components/card.js | 8 +-- .../status/components/detailed_status.js | 4 +- .../status/containers/card_container.js | 8 --- app/javascript/mastodon/reducers/cards.js | 14 ----- app/javascript/mastodon/reducers/statuses.js | 3 -- 8 files changed, 8 insertions(+), 86 deletions(-) delete mode 100644 app/javascript/mastodon/actions/cards.js delete mode 100644 app/javascript/mastodon/features/status/containers/card_container.js delete mode 100644 app/javascript/mastodon/reducers/cards.js diff --git a/app/javascript/mastodon/actions/cards.js b/app/javascript/mastodon/actions/cards.js deleted file mode 100644 index baf04833a..000000000 --- a/app/javascript/mastodon/actions/cards.js +++ /dev/null @@ -1,52 +0,0 @@ -import api from '../api'; - -export const STATUS_CARD_FETCH_REQUEST = 'STATUS_CARD_FETCH_REQUEST'; -export const STATUS_CARD_FETCH_SUCCESS = 'STATUS_CARD_FETCH_SUCCESS'; -export const STATUS_CARD_FETCH_FAIL = 'STATUS_CARD_FETCH_FAIL'; - -export function fetchStatusCard(id) { - return (dispatch, getState) => { - if (getState().getIn(['cards', id], null) !== null) { - return; - } - - dispatch(fetchStatusCardRequest(id)); - - api(getState).get(`/api/v1/statuses/${id}/card`).then(response => { - if (!response.data.url) { - return; - } - - dispatch(fetchStatusCardSuccess(id, response.data)); - }).catch(error => { - dispatch(fetchStatusCardFail(id, error)); - }); - }; -}; - -export function fetchStatusCardRequest(id) { - return { - type: STATUS_CARD_FETCH_REQUEST, - id, - skipLoading: true, - }; -}; - -export function fetchStatusCardSuccess(id, card) { - return { - type: STATUS_CARD_FETCH_SUCCESS, - id, - card, - skipLoading: true, - }; -}; - -export function fetchStatusCardFail(id, error) { - return { - type: STATUS_CARD_FETCH_FAIL, - id, - error, - skipLoading: true, - skipAlert: true, - }; -}; diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 8d5e72bec..e7c89b4ba 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -3,7 +3,6 @@ import openDB from '../storage/db'; import { evictStatus } from '../storage/modifier'; import { deleteFromTimelines } from './timelines'; -import { fetchStatusCard } from './cards'; import { importFetchedStatus, importFetchedStatuses, importAccount, importStatus } from './importer'; export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST'; @@ -86,7 +85,6 @@ export function fetchStatus(id) { const skipLoading = getState().getIn(['statuses', id], null) !== null; dispatch(fetchContext(id)); - dispatch(fetchStatusCard(id)); if (skipLoading) { return; diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index eda7d6ac3..5e3365618 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -159,7 +159,7 @@ export default class StatusContent extends React.PureComponent { } const readMoreButton = ( - ); @@ -197,6 +197,7 @@ export default class StatusContent extends React.PureComponent {
card.get('height') ? (width / ratio) : (width * ratio); + const height = width / ratio; return (
{card.get('title')} : {card.get('title')}; - const ratio = compact ? 16 / 9 : card.get('width') / card.get('height'); - const height = card.get('width') > card.get('height') ? (width / ratio) : (width * ratio); + const ratio = card.get('width') / card.get('height'); + const height = (compact && !embedded) ? (width / (16 / 9)) : (width / ratio); const description = (
diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index b4bbda161..b0dea8817 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -8,7 +8,7 @@ import MediaGallery from '../../../components/media_gallery'; import AttachmentList from '../../../components/attachment_list'; import { Link } from 'react-router-dom'; import { FormattedDate, FormattedNumber } from 'react-intl'; -import CardContainer from '../containers/card_container'; +import Card from './card'; import ImmutablePureComponent from 'react-immutable-pure-component'; import Video from '../../video'; @@ -80,7 +80,7 @@ export default class DetailedStatus extends ImmutablePureComponent { ); } } else if (status.get('spoiler_text').length === 0) { - media = ; + media = ; } if (status.get('application')) { diff --git a/app/javascript/mastodon/features/status/containers/card_container.js b/app/javascript/mastodon/features/status/containers/card_container.js deleted file mode 100644 index 6170d9fd8..000000000 --- a/app/javascript/mastodon/features/status/containers/card_container.js +++ /dev/null @@ -1,8 +0,0 @@ -import { connect } from 'react-redux'; -import Card from '../components/card'; - -const mapStateToProps = (state, { statusId }) => ({ - card: state.getIn(['statuses', statusId, 'card'], null), -}); - -export default connect(mapStateToProps)(Card); diff --git a/app/javascript/mastodon/reducers/cards.js b/app/javascript/mastodon/reducers/cards.js deleted file mode 100644 index 4d86b0d7e..000000000 --- a/app/javascript/mastodon/reducers/cards.js +++ /dev/null @@ -1,14 +0,0 @@ -import { STATUS_CARD_FETCH_SUCCESS } from '../actions/cards'; - -import { Map as ImmutableMap, fromJS } from 'immutable'; - -const initialState = ImmutableMap(); - -export default function cards(state = initialState, action) { - switch(action.type) { - case STATUS_CARD_FETCH_SUCCESS: - return state.set(action.id, fromJS(action.card)); - default: - return state; - } -}; diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index 2c58969f3..6e3d830da 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -10,7 +10,6 @@ import { STATUS_REVEAL, STATUS_HIDE, } from '../actions/statuses'; -import { STATUS_CARD_FETCH_SUCCESS } from '../actions/cards'; import { TIMELINE_DELETE } from '../actions/timelines'; import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer'; import { Map as ImmutableMap, fromJS } from 'immutable'; @@ -66,8 +65,6 @@ export default function statuses(state = initialState, action) { }); case TIMELINE_DELETE: return deleteStatus(state, action.id, action.references); - case STATUS_CARD_FETCH_SUCCESS: - return state.setIn([action.id, 'card'], fromJS(action.card)); default: return state; } From 5de592bccec2df4fc8d3575d20ec935c62018840 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 29 Oct 2018 12:54:56 +0100 Subject: [PATCH 054/124] Bump doorkeeper from 5.0.1 to 5.0.2 (#9134) Bumps [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper) from 5.0.1 to 5.0.2. - [Release notes](https://github.com/doorkeeper-gem/doorkeeper/releases) - [Changelog](https://github.com/doorkeeper-gem/doorkeeper/blob/master/NEWS.md) - [Commits](https://github.com/doorkeeper-gem/doorkeeper/compare/v5.0.1...v5.0.2) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 166dfdb4f..53f92495e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -199,7 +199,7 @@ GEM docile (1.3.0) domain_name (0.5.20180417) unf (>= 0.0.5, < 1.0.0) - doorkeeper (5.0.1) + doorkeeper (5.0.2) railties (>= 4.2) dotenv (2.5.0) dotenv-rails (2.5.0) From 3b89abc343f6e351f25ece882905683bb975e2a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 29 Oct 2018 12:55:16 +0100 Subject: [PATCH 055/124] Bump rubocop from 0.59.2 to 0.60.0 (#9135) Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 0.59.2 to 0.60.0. - [Release notes](https://github.com/rubocop-hq/rubocop/releases) - [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.59.2...v0.60.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index ca2d2d51a..d956a3149 100644 --- a/Gemfile +++ b/Gemfile @@ -126,7 +126,7 @@ group :development do gem 'letter_opener', '~> 1.4' gem 'letter_opener_web', '~> 1.3' gem 'memory_profiler' - gem 'rubocop', '~> 0.59', require: false + gem 'rubocop', '~> 0.60', require: false gem 'brakeman', '~> 4.3', require: false gem 'bundler-audit', '~> 0.6', require: false gem 'scss_lint', '~> 0.57', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 53f92495e..8549f5cc3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -528,15 +528,15 @@ GEM rspec-core (~> 3.0, >= 3.0.0) sidekiq (>= 2.4.0) rspec-support (3.8.0) - rubocop (0.59.2) + rubocop (0.60.0) jaro_winkler (~> 1.5.1) parallel (~> 1.10) parser (>= 2.5, != 2.5.1.1) powerpack (~> 0.1) rainbow (>= 2.2.2, < 4.0) ruby-progressbar (~> 1.7) - unicode-display_width (~> 1.0, >= 1.0.1) - ruby-progressbar (1.9.0) + unicode-display_width (~> 1.4.0) + ruby-progressbar (1.10.0) ruby-saml (1.9.0) nokogiri (>= 1.5.10) rufus-scheduler (3.5.2) @@ -747,7 +747,7 @@ DEPENDENCIES rqrcode (~> 0.10) rspec-rails (~> 3.8) rspec-sidekiq (~> 3.0) - rubocop (~> 0.59) + rubocop (~> 0.60) sanitize (~> 4.6) scss_lint (~> 0.57) sidekiq (~> 5.2) From 8c944c2f631de7d24ac236fdc9a6cc19314bf178 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 29 Oct 2018 12:55:34 +0100 Subject: [PATCH 056/124] Bump tzinfo-data from 1.2018.6 to 1.2018.7 (#9136) Bumps [tzinfo-data](https://github.com/tzinfo/tzinfo-data) from 1.2018.6 to 1.2018.7. - [Release notes](https://github.com/tzinfo/tzinfo-data/releases) - [Commits](https://github.com/tzinfo/tzinfo-data/compare/v1.2018.6...v1.2018.7) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8549f5cc3..2c9e996bb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -625,7 +625,7 @@ GEM unf (~> 0.1.0) tzinfo (1.2.5) thread_safe (~> 0.1) - tzinfo-data (1.2018.6) + tzinfo-data (1.2018.7) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext From ce33ce94c94f038f4d632ffadd21666df51315f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 29 Oct 2018 12:55:55 +0100 Subject: [PATCH 057/124] Bump parallel_tests from 2.25.0 to 2.26.0 (#9137) Bumps [parallel_tests](https://github.com/grosser/parallel_tests) from 2.25.0 to 2.26.0. - [Release notes](https://github.com/grosser/parallel_tests/releases) - [Commits](https://github.com/grosser/parallel_tests/compare/v2.25.0...v2.26.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index d956a3149..113b40d85 100644 --- a/Gemfile +++ b/Gemfile @@ -114,7 +114,7 @@ group :test do gem 'rspec-sidekiq', '~> 3.0' gem 'simplecov', '~> 0.16', require: false gem 'webmock', '~> 3.4' - gem 'parallel_tests', '~> 2.25' + gem 'parallel_tests', '~> 2.26' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 2c9e996bb..bb90b73ec 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -393,7 +393,7 @@ GEM av (~> 0.9.0) paperclip (>= 2.5.2) parallel (1.12.1) - parallel_tests (2.25.0) + parallel_tests (2.26.0) parallel parser (2.5.1.2) ast (~> 2.4.0) @@ -723,7 +723,7 @@ DEPENDENCIES ox (~> 2.10) paperclip (~> 6.0) paperclip-av-transcoder (~> 0.6) - parallel_tests (~> 2.25) + parallel_tests (~> 2.26) pg (~> 1.1) pghero (~> 2.2) pkg-config (~> 1.3) From 9d84d55cf095d7d04c79eb659634d4db2f47c1b0 Mon Sep 17 00:00:00 2001 From: "Renato \"Lond\" Cerqueira" Date: Mon, 29 Oct 2018 13:20:29 +0100 Subject: [PATCH 058/124] Weblate translations (2018-10-26) (#9113) * Translated using Weblate (French) Currently translated at 99.7% (699 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/fr/ * Translated using Weblate (Italian) Currently translated at 100,0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/it/ * Translated using Weblate (Italian) Currently translated at 90.7% (636 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/it/ * Translated using Weblate (Italian) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/it/ * Translated using Weblate (Japanese) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ja/ * Translated using Weblate (Japanese) Currently translated at 95.7% (89 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ja/ * Translated using Weblate (Japanese) Currently translated at 99.4% (697 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ja/ * Translated using Weblate (Greek) Currently translated at 99.6% (698 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/el/ * Translated using Weblate (Basque) Currently translated at 100.0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/eu/ * Translated using Weblate (Basque) Currently translated at 100.0% (701 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/eu/ * Translated using Weblate (Korean) Currently translated at 100.0% (701 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ko/ * Translated using Weblate (Korean) Currently translated at 100.0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ko/ * Translated using Weblate (Korean) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ko/ * Translated using Weblate (Korean) Currently translated at 100.0% (701 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ko/ * Translated using Weblate (French) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/fr/ * Translated using Weblate (Spanish) Currently translated at 98.7% (692 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/es/ * Translated using Weblate (Dutch) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/nl/ * Translated using Weblate (Dutch) Currently translated at 89.2% (83 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/nl/ * Translated using Weblate (Dutch) Currently translated at 97.4% (683 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/nl/ * Translated using Weblate (Occitan) Currently translated at 100,0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/oc/ * Translated using Weblate (Occitan) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/oc/ * Translated using Weblate (Occitan) Currently translated at 99.7% (699 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/oc/ * Translated using Weblate (German) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/de/ * Translated using Weblate (German) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/de/ * Translated using Weblate (German) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/de/ * Translated using Weblate (German) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/de/ * Translated using Weblate (Arabic) Currently translated at 97.0% (680 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ar/ * Translated using Weblate (Arabic) Currently translated at 99.7% (337 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ar/ * Translated using Weblate (Czech) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/cs/ * Translated using Weblate (Czech) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cs/ * Translated using Weblate (Serbian) Currently translated at 89.2% (83 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/sr/ * Translated using Weblate (Dutch) Currently translated at 100,0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/nl/ * Translated using Weblate (Dutch) Currently translated at 100,0% (701 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/nl/ * Translated using Weblate (Czech) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/cs/ * Translated using Weblate (Czech) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cs/ * Translated using Weblate (Corsican) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/co/ * Translated using Weblate (French) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fr/ * Translated using Weblate (Galician) Currently translated at 100,0% (701 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/gl/ * Translated using Weblate (Dutch) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/nl/ * Translated using Weblate (Welsh) Currently translated at 99.4% (336 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cy/ * Translated using Weblate (Welsh) Currently translated at 81.7% (76 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/cy/ * Translated using Weblate (Portuguese (Brazil)) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/pt_BR/ * Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/pt_BR/ * Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/pt_BR/ * Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/pt_BR/ * Translated using Weblate (Welsh) Currently translated at 94.4% (662 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/cy/ * Translated using Weblate (Welsh) Currently translated at 97.8% (91 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/cy/ * Translated using Weblate (Corsican) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/co/ * Translated using Weblate (Welsh) Currently translated at 96.9% (95 of 98 strings) Translation: Mastodon/Doorkeeper Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/doorkeeper/cy/ * Translated using Weblate (Catalan) Currently translated at 100,0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ca/ * Translated using Weblate (Catalan) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ca/ * Translated using Weblate (Catalan) Currently translated at 100,0% (701 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ca/ * Translated using Weblate (Welsh) Currently translated at 99.4% (336 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cy/ * Translated using Weblate (Occitan) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/oc/ * Translated using Weblate (Persian) Currently translated at 99.7% (699 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/fa/ * Translated using Weblate (Persian) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fa/ * Translated using Weblate (Persian) Currently translated at 100.0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/fa/ * Translated using Weblate (Arabic) Currently translated at 97.6% (684 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ar/ * Translated using Weblate (English) Currently translated at 99.7% (699 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/en/ * Translated using Weblate (Galician) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/gl/ * Translated using Weblate (Persian) Currently translated at 99.6% (698 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/fa/ * Translated using Weblate (English) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/en/ * Translated using Weblate (Welsh) Currently translated at 100.0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/cy/ * Translated using Weblate (Catalan) Currently translated at 100.0% (701 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ca/ * Translated using Weblate (Occitan) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/oc/ * Translated using Weblate (Welsh) Currently translated at 99.4% (336 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cy/ * Translated using Weblate (Welsh) Currently translated at 100.0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/cy/ * Translated using Weblate (Welsh) Currently translated at 99.0% (97 of 98 strings) Translation: Mastodon/Doorkeeper Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/doorkeeper/cy/ * Translated using Weblate (Welsh) Currently translated at 100.0% (98 of 98 strings) Translation: Mastodon/Doorkeeper Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/doorkeeper/cy/ * Translated using Weblate (Welsh) Currently translated at 100.0% (98 of 98 strings) Translation: Mastodon/Doorkeeper Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/doorkeeper/cy/ * Translated using Weblate (Welsh) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cy/ * Translated using Weblate (Welsh) Currently translated at 100.0% (62 of 62 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/cy/ * Translated using Weblate (Welsh) Currently translated at 100.0% (2 of 2 strings) Translation: Mastodon/Activerecord Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/activerecord/cy/ * Translated using Weblate (Welsh) Currently translated at 100.0% (98 of 98 strings) Translation: Mastodon/Doorkeeper Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/doorkeeper/cy/ * Translated using Weblate (Welsh) Currently translated at 94.7% (664 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/cy/ * Translated using Weblate (Persian) Currently translated at 99.7% (699 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/fa/ * Translated using Weblate (Welsh) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cy/ * Translated using Weblate (Persian) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fa/ * Translated using Weblate (Czech) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cs/ * Translated using Weblate (Welsh) Currently translated at 94.7% (664 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/cy/ * Translated using Weblate (Welsh) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cy/ * Translated using Weblate (Czech) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/cs/ * Translated using Weblate (Spanish) Currently translated at 99.9% (700 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/es/ * Translated using Weblate (Chinese (Hong Kong)) Currently translated at 85.4% (599 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/zh_Hant_HK/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 93.3% (654 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/zh_Hans/ * Translated using Weblate (Finnish) Currently translated at 61.3% (57 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/fi/ * Translated using Weblate (Hebrew) Currently translated at 57.0% (53 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/he/ * Translated using Weblate (French) Currently translated at 100,0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fr/ * Translated using Weblate (Bulgarian) Currently translated at 14,8% (104 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/bg/ * Translated using Weblate (Asturian) Currently translated at 31,2% (219 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ast/ * Translated using Weblate (Chinese (Traditional)) Currently translated at 85,2% (597 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/zh_Hant/ * Translated using Weblate (Croatian) Currently translated at 15,0% (105 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/hr/ * Translated using Weblate (Georgian) Currently translated at 94,3% (661 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ka/ * Translated using Weblate (Hebrew) Currently translated at 43,1% (302 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/he/ * Translated using Weblate (Ido) Currently translated at 30,0% (210 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/io/ * Translated using Weblate (Hungarian) Currently translated at 74,3% (521 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/hu/ * Translated using Weblate (Indonesian) Currently translated at 32,7% (229 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/id/ * Translated using Weblate (Polish) Currently translated at 98,1% (688 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/pl/ * Translated using Weblate (Romanian) Currently translated at 0,0% (0 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ro/ * Translated using Weblate (Russian) Currently translated at 96,0% (673 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ru/ * Translated using Weblate (Serbian (latin)) Currently translated at 69,6% (488 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sr_Latn/ * Translated using Weblate (Thai) Currently translated at 32,7% (229 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/th/ * Translated using Weblate (Turkish) Currently translated at 32,5% (228 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/tr/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 96,7% (327 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/zh_Hans/ * Translated using Weblate (Ukrainian) Currently translated at 89,9% (630 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/uk/ * Translated using Weblate (Ido) Currently translated at 38,7% (36 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/io/ * Translated using Weblate (Turkish) Currently translated at 95,9% (324 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/tr/ * Translated using Weblate (Portuguese) Currently translated at 57,0% (53 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/pt/ * Translated using Weblate (Indonesian) Currently translated at 37,6% (35 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/id/ * Translated using Weblate (Norwegian (old code)) Currently translated at 57,0% (53 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/no/ * Translated using Weblate (Serbian (latin)) Currently translated at 58,1% (54 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/sr_Latn/ * Translated using Weblate (Ukrainian) Currently translated at 39,8% (37 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/uk/ * Translated using Weblate (Thai) Currently translated at 43,0% (40 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/th/ * Translated using Weblate (Turkish) Currently translated at 38,7% (36 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/tr/ * Translated using Weblate (Finnish) Currently translated at 84.0% (589 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/fi/ * Translated using Weblate (Polish) Currently translated at 98.1% (688 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/pl/ * Translated using Weblate (Italian) Currently translated at 93.6% (656 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/it/ * Translated using Weblate (Serbian (latin)) Currently translated at 68.2% (478 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sr_Latn/ * Translated using Weblate (Slovenian) Currently translated at 12.8% (90 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sl/ * Translated using Weblate (Armenian) Currently translated at 71.0% (240 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/hy/ * Translated using Weblate (Asturian) Currently translated at 99.1% (335 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ast/ * Translated using Weblate (French) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fr/ * Translated using Weblate (Indonesian) Currently translated at 97.0% (328 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/id/ * Translated using Weblate (Ido) Currently translated at 94.1% (318 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/io/ * Translated using Weblate (Finnish) Currently translated at 86.1% (291 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fi/ * Translated using Weblate (Romanian) Currently translated at 99.7% (337 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ro/ * Translated using Weblate (Russian) Currently translated at 96.4% (326 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ru/ * Translated using Weblate (Polish) Currently translated at 99.1% (335 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/pl/ * Translated using Weblate (Serbian (latin)) Currently translated at 72.2% (244 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sr_Latn/ * Translated using Weblate (Slovenian) Currently translated at 88.8% (300 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sl/ * Translated using Weblate (Ido) Currently translated at 66.1% (41 of 62 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/io/ * Translated using Weblate (Asturian) Currently translated at 46.2% (43 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ast/ * Translated using Weblate (Bulgarian) Currently translated at 34.4% (32 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/bg/ * Translated using Weblate (Croatian) Currently translated at 34.4% (32 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/hr/ * Translated using Weblate (Slovenian) Currently translated at 7.5% (7 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/sl/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 69.9% (65 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/zh_Hans/ * Translated using Weblate (Italian) Currently translated at 94.4% (662 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/it/ * Translated using Weblate (Greek) Currently translated at 89.1% (301 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/el/ * Translated using Weblate (Indonesian) Currently translated at 31.4% (220 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/id/ * Translated using Weblate (Bulgarian) Currently translated at 22.5% (76 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/bg/ * Translated using Weblate (Croatian) Currently translated at 48.8% (165 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/hr/ * Translated using Weblate (Hebrew) Currently translated at 69.2% (234 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/he/ * Translated using Weblate (Hungarian) Currently translated at 70.7% (239 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/hu/ * Translated using Weblate (Tamil) Currently translated at 69.5% (235 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ta/ * Translated using Weblate (Thai) Currently translated at 65.1% (220 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/th/ * Translated using Weblate (Chinese (Hong Kong)) Currently translated at 87.3% (295 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/zh_Hant_HK/ * Normalize translations ran yarn build:development && i18n-tasks normalize && yarn manage:translations && i18n-tasks remove-unused * Translated using Weblate (Danish) Currently translated at 98,5% (333 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/da/ * Translated using Weblate (Bulgarian) Currently translated at 14,1% (99 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/bg/ * Translated using Weblate (Chinese (Hong Kong)) Currently translated at 82,6% (579 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/zh_Hant_HK/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 92,4% (648 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/zh_Hans/ * Translated using Weblate (Danish) Currently translated at 98,0% (687 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/da/ * Translated using Weblate (Georgian) Currently translated at 94,3% (661 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ka/ * Translated using Weblate (Hungarian) Currently translated at 73,0% (512 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/hu/ * Translated using Weblate (Norwegian (old code)) Currently translated at 74,8% (524 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/no/ * Translated using Weblate (Ido) Currently translated at 19,3% (135 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/io/ * Translated using Weblate (Russian) Currently translated at 96,0% (673 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ru/ * Translated using Weblate (Swedish) Currently translated at 85,9% (602 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sv/ * Translated using Weblate (Turkish) Currently translated at 32,0% (224 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/tr/ * Translated using Weblate (Ukrainian) Currently translated at 89,3% (626 of 701 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/uk/ * Translated using Weblate (Chinese (Traditional)) Currently translated at 98,5% (333 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/zh_Hant/ * Translated using Weblate (Esperanto) Currently translated at 90,5% (306 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/eo/ * Translated using Weblate (Galician) Currently translated at 85,5% (289 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/gl/ * Translated using Weblate (Georgian) Currently translated at 90,2% (305 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ka/ * Translated using Weblate (Greek) Currently translated at 99,1% (335 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/el/ * Translated using Weblate (Norwegian (old code)) Currently translated at 74,3% (251 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/no/ * Translated using Weblate (Portuguese) Currently translated at 72,8% (246 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/pt/ * Translated using Weblate (Serbian) Currently translated at 98,5% (333 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sr/ * Translated using Weblate (Slovak) Currently translated at 98,5% (333 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sk/ * Translated using Weblate (Spanish) Currently translated at 97,6% (330 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/es/ * Translated using Weblate (Swedish) Currently translated at 88,5% (299 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sv/ * Translated using Weblate (Telugu) Currently translated at 98,5% (333 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/te/ * Translated using Weblate (Ukrainian) Currently translated at 82,0% (277 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/uk/ * Translated using Weblate (Danish) Currently translated at 90,3% (84 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/da/ * Translated using Weblate (Occitan) Currently translated at 100,0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/oc/ * Translated using Weblate (Danish) Currently translated at 98.8% (334 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/da/ * Translated using Weblate (French) Currently translated at 100.0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fr/ * Translated using Weblate (French) Currently translated at 100.0% (93 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/fr/ * Translated using Weblate (Slovenian) Currently translated at 11.8% (11 of 93 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/sl/ * Translated using Weblate (Galician) Currently translated at 100,0% (338 of 338 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/gl/ * Normalize translations * Fix cy locale --- app/javascript/mastodon/locales/ar.json | 7 +- app/javascript/mastodon/locales/ast.json | 3 +- app/javascript/mastodon/locales/bg.json | 3 +- app/javascript/mastodon/locales/ca.json | 11 +- app/javascript/mastodon/locales/co.json | 11 +- app/javascript/mastodon/locales/cs.json | 29 +- app/javascript/mastodon/locales/cy.json | 163 +++--- app/javascript/mastodon/locales/da.json | 5 +- app/javascript/mastodon/locales/de.json | 19 +- .../mastodon/locales/defaultMessages.json | 17 +- app/javascript/mastodon/locales/el.json | 67 +-- app/javascript/mastodon/locales/en.json | 3 +- app/javascript/mastodon/locales/eo.json | 3 +- app/javascript/mastodon/locales/es.json | 3 +- app/javascript/mastodon/locales/eu.json | 3 +- app/javascript/mastodon/locales/fa.json | 13 +- app/javascript/mastodon/locales/fi.json | 3 +- app/javascript/mastodon/locales/fr.json | 33 +- app/javascript/mastodon/locales/gl.json | 95 ++-- app/javascript/mastodon/locales/he.json | 3 +- app/javascript/mastodon/locales/hr.json | 3 +- app/javascript/mastodon/locales/hu.json | 3 +- app/javascript/mastodon/locales/hy.json | 3 +- app/javascript/mastodon/locales/id.json | 3 +- app/javascript/mastodon/locales/io.json | 3 +- app/javascript/mastodon/locales/it.json | 11 +- app/javascript/mastodon/locales/ja.json | 9 +- app/javascript/mastodon/locales/ka.json | 3 +- app/javascript/mastodon/locales/ko.json | 11 +- app/javascript/mastodon/locales/nl.json | 11 +- app/javascript/mastodon/locales/no.json | 3 +- app/javascript/mastodon/locales/oc.json | 11 +- app/javascript/mastodon/locales/pl.json | 3 +- app/javascript/mastodon/locales/pt-BR.json | 63 +-- app/javascript/mastodon/locales/pt.json | 3 +- app/javascript/mastodon/locales/ro.json | 3 +- app/javascript/mastodon/locales/ru.json | 3 +- app/javascript/mastodon/locales/sk.json | 3 +- app/javascript/mastodon/locales/sl.json | 23 +- app/javascript/mastodon/locales/sr-Latn.json | 3 +- app/javascript/mastodon/locales/sr.json | 3 +- app/javascript/mastodon/locales/sv.json | 3 +- app/javascript/mastodon/locales/ta.json | 3 +- app/javascript/mastodon/locales/te.json | 3 +- app/javascript/mastodon/locales/th.json | 3 +- app/javascript/mastodon/locales/tr.json | 3 +- app/javascript/mastodon/locales/uk.json | 3 +- app/javascript/mastodon/locales/zh-CN.json | 3 +- app/javascript/mastodon/locales/zh-HK.json | 3 +- app/javascript/mastodon/locales/zh-TW.json | 3 +- config/locales/activerecord.cy.yml | 2 +- config/locales/ar.yml | 10 +- config/locales/bg.yml | 10 +- config/locales/ca.yml | 28 +- config/locales/co.yml | 10 +- config/locales/cs.yml | 34 +- config/locales/cy.yml | 483 +++++++++++++++--- config/locales/da.yml | 6 +- config/locales/de.yml | 12 +- config/locales/devise.cy.yml | 26 +- config/locales/doorkeeper.cy.yml | 81 ++- config/locales/el.yml | 8 + config/locales/es.yml | 24 +- config/locales/eu.yml | 24 +- config/locales/fa.yml | 30 +- config/locales/fi.yml | 2 +- config/locales/fr.yml | 10 +- config/locales/gl.yml | 18 +- config/locales/hu.yml | 2 +- config/locales/id.yml | 6 +- config/locales/io.yml | 6 +- config/locales/it.yml | 85 ++- config/locales/ja.yml | 2 + config/locales/ka.yml | 2 +- config/locales/ko.yml | 24 +- config/locales/nl.yml | 22 +- config/locales/oc.yml | 81 ++- config/locales/pl.yml | 2 +- config/locales/pt-BR.yml | 24 +- config/locales/ro.yml | 7 +- config/locales/ru.yml | 12 +- config/locales/simple_form.ca.yml | 17 + config/locales/simple_form.cy.yml | 72 ++- config/locales/simple_form.da.yml | 2 + config/locales/simple_form.eu.yml | 11 + config/locales/simple_form.fa.yml | 2 +- config/locales/simple_form.fr.yml | 8 +- config/locales/simple_form.it.yml | 11 + config/locales/simple_form.ja.yml | 1 + config/locales/simple_form.ko.yml | 11 + config/locales/simple_form.nl.yml | 11 + config/locales/simple_form.oc.yml | 13 +- config/locales/simple_form.pt-BR.yml | 12 + config/locales/simple_form.sl.yml | 7 +- config/locales/simple_form.sr-Latn.yml | 2 +- config/locales/simple_form.sr.yml | 1 + config/locales/sl.yml | 17 +- config/locales/sr-Latn.yml | 2 +- config/locales/th.yml | 1 + config/locales/tr.yml | 18 +- config/locales/uk.yml | 8 +- config/locales/zh-CN.yml | 8 +- config/locales/zh-HK.yml | 6 +- 103 files changed, 1470 insertions(+), 566 deletions(-) diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index da79b62d2..db2593afc 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -91,11 +91,10 @@ "confirmations.mute.message": "هل أنت متأكد أنك تريد كتم {name} ؟", "confirmations.redraft.confirm": "إزالة و إعادة الصياغة", "confirmations.redraft.message": "هل أنت متأكد من أنك تريد حذف هذا المنشور و إعادة صياغته ؟ سوف تفقد جميع الإعجابات و الترقيات أما الردود المتصلة به فستُصبِح يتيمة.", - "confirmations.reply.confirm": "Reply", + "confirmations.reply.confirm": "رد", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "إلغاء المتابعة", "confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟", - "conversation.last_message": "Last message:", "embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.", "embed.preview": "هكذا ما سوف يبدو عليه :", "emoji_button.activity": "الأنشطة", @@ -297,7 +296,7 @@ "status.open": "وسع هذه المشاركة", "status.pin": "تدبيس على الملف الشخصي", "status.pinned": "تبويق مثبَّت", - "status.read_more": "Read more", + "status.read_more": "اقرأ المزيد", "status.reblog": "رَقِّي", "status.reblog_private": "القيام بالترقية إلى الجمهور الأصلي", "status.reblogged_by": "رقّاه {name}", @@ -315,6 +314,8 @@ "status.show_more_all": "توسيع الكل", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الملف الشخصي", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "الموحَّد", "tabs_bar.home": "الرئيسية", "tabs_bar.local_timeline": "المحلي", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 5e258c58c..d84774f34 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.last_message": "Last message:", "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": "Actividá", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", "tabs_bar.home": "Aniciu", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 5daf5d639..a4366126f 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.last_message": "Last message:", "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", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", "tabs_bar.home": "Начало", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f2235b190..2e766da6a 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -15,7 +15,7 @@ "account.follows.empty": "Aquest usuari encara no segueix a ningú.", "account.follows_you": "Et segueix", "account.hide_reblogs": "Amaga els impulsos de @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.media": "Media", "account.mention": "Esmentar @{name}", "account.moved_to": "{name} s'ha mogut a:", @@ -91,11 +91,10 @@ "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 els impulsos i favorits, i les respostes a la publicació original es quedaran orfes.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Respon", + "confirmations.reply.message": "Responen ara es sobreescriurà el missatge que estàs editant. Estàs segur que vols continuar?", "confirmations.unfollow.confirm": "Deixa de seguir", "confirmations.unfollow.message": "Estàs segur que vols deixar de seguir {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Incrusta aquest estat al lloc web copiant el codi a continuació.", "embed.preview": "Aquí tenim quin aspecte tindrá:", "emoji_button.activity": "Activitat", @@ -297,7 +296,7 @@ "status.open": "Ampliar aquest estat", "status.pin": "Fixat en el perfil", "status.pinned": "Toot fixat", - "status.read_more": "Read more", + "status.read_more": "Llegir més", "status.reblog": "Impuls", "status.reblog_private": "Impulsar a l'audiència original", "status.reblogged_by": "{name} ha retootejat", @@ -315,6 +314,8 @@ "status.show_more_all": "Mostra més per a tot", "status.unmute_conversation": "Activar conversació", "status.unpin": "Deslliga del perfil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federada", "tabs_bar.home": "Inici", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 4507deddb..357ff0ac8 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -15,7 +15,7 @@ "account.follows.empty": "St'utilizatore ùn seguita nisunu.", "account.follows_you": "Vi seguita", "account.hide_reblogs": "Piattà spartere da @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "A prupietà di stu ligame hè stata verificata u {date}", "account.media": "Media", "account.mention": "Mintuvà @{name}", "account.moved_to": "{name} hè partutu nant'à:", @@ -91,11 +91,10 @@ "confirmations.mute.message": "Site sicuru·a che vulete piattà @{name}?", "confirmations.redraft.confirm": "Sguassà è riscrive", "confirmations.redraft.message": "Site sicuru·a chè vulete sguassà stu statutu è riscrivelu? I favuriti è spartere saranu persi, è e risposte diventeranu orfane.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Risponde", + "confirmations.reply.message": "Risponde avà sguasserà u missaghju chì scrivite. Site sicuru·a chì vulete cuntinuà?", "confirmations.unfollow.confirm": "Disabbunassi", "confirmations.unfollow.message": "Site sicuru·a ch'ùn vulete più siguità @{name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Integrà stu statutu à u vostru situ cù u codice quì sottu.", "embed.preview": "Assumiglierà à qualcosa cusì:", "emoji_button.activity": "Attività", @@ -297,7 +296,7 @@ "status.open": "Apre stu statutu", "status.pin": "Puntarulà à u prufile", "status.pinned": "Statutu puntarulatu", - "status.read_more": "Read more", + "status.read_more": "Leghje di più", "status.reblog": "Sparte", "status.reblog_private": "Sparte à l'audienza uriginale", "status.reblogged_by": "{name} hà spartutu", @@ -315,6 +314,8 @@ "status.show_more_all": "Slibrà tuttu", "status.unmute_conversation": "Ùn piattà più a cunversazione", "status.unpin": "Spuntarulà da u prufile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Glubale", "tabs_bar.home": "Accolta", "tabs_bar.local_timeline": "Lucale", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 116a65468..5f82dd8e0 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -75,8 +75,8 @@ "compose_form.publish_loud": "{publish}!", "compose_form.sensitive.marked": "Mediální obsah je označen jako citlivý", "compose_form.sensitive.unmarked": "Mediální obsah není označen jako citlivý", - "compose_form.spoiler.marked": "Text je ukrytý za varováním", - "compose_form.spoiler.unmarked": "Text není ukrytý", + "compose_form.spoiler.marked": "Text je skrytý za varováním", + "compose_form.spoiler.unmarked": "Text není skrytý", "compose_form.spoiler_placeholder": "Sem napište vaše varování", "confirmation_modal.cancel": "Zrušit", "confirmations.block.confirm": "Blokovat", @@ -91,11 +91,10 @@ "confirmations.mute.message": "Jste si jistý/á, že chcete ignorovat uživatele {name}?", "confirmations.redraft.confirm": "Vymazat a přepsat", "confirmations.redraft.message": "Jste si jistý/á, že chcete vymazat a přepsat tento příspěvek? Oblíbení a boosty budou ztraceny a odpovědi na původní příspěvek budou opuštěny.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Odpovědět", + "confirmations.reply.message": "Odpovězením nyní přepíšete zprávu, kterou aktuálně píšete. Jste si jistý/á, že chcete pokračovat?", "confirmations.unfollow.confirm": "Přestat sledovat", "confirmations.unfollow.message": "jste si jistý/á, že chcete přestat sledovat uživatele {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Pro přidání příspěvku na vaši webovou stránku zkopírujte níže uvedený kód.", "embed.preview": "Takhle to bude vypadat:", "emoji_button.activity": "Aktivita", @@ -115,7 +114,7 @@ "empty_column.blocks": "Ještě jste nezablokoval/a žádného uživatele.", "empty_column.community": "Místní časová osa je prázdná. Napište něco veřejně a rozhýbejte to tu!", "empty_column.direct": "Ještě nemáte žádné přímé zprávy. Pokud nějakou pošlete nebo dostanete, zobrazí se zde.", - "empty_column.domain_blocks": "Ještě zde nejsou žádné skryté domény.", + "empty_column.domain_blocks": "Ještě nejsou žádné skryté domény.", "empty_column.favourited_statuses": "Ještě nemáte žádné oblíbené tooty. Pokud si nějaký oblíbíte, zobrazí se zde.", "empty_column.favourites": "Tento toot si ještě nikdo neoblíbil. Pokud to někdo udělá, zobrazí se zde.", "empty_column.follow_requests": "Ještě nemáte žádné požadavky o sledování. Pokud nějaký obdržíte, zobrazí se zde.", @@ -130,7 +129,7 @@ "follow_request.authorize": "Autorizovat", "follow_request.reject": "Odmítnout", "getting_started.developers": "Vývojáři", - "getting_started.documentation": "Documentation", + "getting_started.documentation": "Dokumentace", "getting_started.find_friends": "Najděte si přátele z Twitteru", "getting_started.heading": "Začínáme", "getting_started.invite": "Pozvat lidi", @@ -166,7 +165,7 @@ "keyboard_shortcuts.reply": "k odpovězení", "keyboard_shortcuts.requests": "k otevření seznamu požadavků o sledování", "keyboard_shortcuts.search": "k zaměření na vyhledávání", - "keyboard_shortcuts.start": "k otevření sloupce \"začít\"", + "keyboard_shortcuts.start": "k otevření sloupce „začínáme“", "keyboard_shortcuts.toggle_hidden": "k zobrazení/skrytí textu za varováním o obsahu", "keyboard_shortcuts.toot": "k napsání úplně nového tootu", "keyboard_shortcuts.unfocus": "ke zrušení soustředění na psací prostor/hledání", @@ -244,15 +243,15 @@ "onboarding.page_three.search": "Pomocí vyhledávacího řádku najděte lidi a podívejte se na hashtagy jako {illustration} a {introductions}. Chcete-li najít někoho, kdo není na této instanci, použijte jeho celou adresu profilu.", "onboarding.page_two.compose": "Příspěvky pište z pole na komponování. Ikonami níže můžete nahrávat obrázky, změnit nastavení soukromí a přidat varování o obsahu.", "onboarding.skip": "Přeskočit", - "privacy.change": "Změnit viditelnost příspěvku", + "privacy.change": "Změnit soukromí příspěvku", "privacy.direct.long": "Odeslat pouze zmíněným uživatelům", - "privacy.direct.short": "Přímé", + "privacy.direct.short": "Přímý", "privacy.private.long": "Odeslat pouze sledovatelům", "privacy.private.short": "Pouze pro sledovatele", "privacy.public.long": "Odeslat na veřejné časové osy", - "privacy.public.short": "Veřejné", - "privacy.unlisted.long": "Do not show in public timelines", - "privacy.unlisted.short": "Nezobrazované", + "privacy.public.short": "Veřejný", + "privacy.unlisted.long": "Neodeslat na veřejné časové osy", + "privacy.unlisted.short": "Neuvedený", "regeneration_indicator.label": "Načítám…", "regeneration_indicator.sublabel": "Váš domovský proud se připravuje!", "relative_time.days": "{number} d", @@ -297,7 +296,7 @@ "status.open": "Rozbalit tento příspěvek", "status.pin": "Připnout na profil", "status.pinned": "Připnutý toot", - "status.read_more": "Read more", + "status.read_more": "Číst více", "status.reblog": "Boostnout", "status.reblog_private": "Boostnout původnímu publiku", "status.reblogged_by": "{name} boostnul/a", @@ -315,6 +314,8 @@ "status.show_more_all": "Zobrazit více pro všechny", "status.unmute_conversation": "Přestat ignorovat konverzaci", "status.unpin": "Odepnout z profilu", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federovaná", "tabs_bar.home": "Domů", "tabs_bar.local_timeline": "Místní", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 4816a0e35..78c8d02f0 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -1,7 +1,7 @@ { "account.badges.bot": "Bot", - "account.block": "Blociwch @{name}", - "account.block_domain": "Cuddiwch bopeth rhag {domain}", + "account.block": "Blocio @{name}", + "account.block_domain": "Cuddio popeth rhag {domain}", "account.blocked": "Blociwyd", "account.direct": "Neges breifat @{name}", "account.disclaimer_full": "Gall y wybodaeth isod adlewyrchu darlun anghyflawn o broffil defnyddiwr.", @@ -24,14 +24,14 @@ "account.muted": "Distewyd", "account.posts": "Tŵtiau", "account.posts_with_replies": "Tŵtiau ac atebion", - "account.report": "Adroddwch @{name}", + "account.report": "Adrodd @{name}", "account.requested": "Aros am gymeradwyaeth. Cliciwch er mwyn canslo cais dilyn", "account.share": "Rhannwch broffil @{name}", - "account.show_reblogs": "Dangoswch bwstiau o @{name}", - "account.unblock": "Dadflociwch @{name}", - "account.unblock_domain": "Dadguddiwch {domain}", - "account.unendorse": "Peidwch a'i arddangos ar fy mhroffil", - "account.unfollow": "Daddilynwch", + "account.show_reblogs": "Dangos bwstiau o @{name}", + "account.unblock": "Dadflocio @{name}", + "account.unblock_domain": "Dadguddio {domain}", + "account.unendorse": "Peidio a'i arddangos ar fy mhroffil", + "account.unfollow": "Dad-ddilyn", "account.unmute": "Dad-dawelu @{name}", "account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}", "account.view_full_profile": "Gweld proffil llawn", @@ -57,54 +57,53 @@ "column.pins": "Tŵtiau wedi eu pinio", "column.public": "Ffrwd y ffederasiwn", "column_back_button.label": "Nôl", - "column_header.hide_settings": "Cuddiwch dewisiadau", - "column_header.moveLeft_settings": "Symudwch y golofn i'r chwith", - "column_header.moveRight_settings": "Symudwch y golofn i'r dde", - "column_header.pin": "Piniwch", + "column_header.hide_settings": "Cuddio dewisiadau", + "column_header.moveLeft_settings": "Symud y golofn i'r chwith", + "column_header.moveRight_settings": "Symud y golofn i'r dde", + "column_header.pin": "Pinio", "column_header.show_settings": "Dangos gosodiadau", - "column_header.unpin": "Dadbiniwch", + "column_header.unpin": "Dadbinio", "column_subheading.settings": "Gosodiadau", "community.column_settings.media_only": "Cyfryngau yn unig", "compose_form.direct_message_warning": "Mi fydd y tŵt hwn ond yn cael ei anfon at y defnyddwyr sy'n cael eu crybwyll.", - "compose_form.direct_message_warning_learn_more": "Dysgwch fwy", + "compose_form.direct_message_warning_learn_more": "Dysgu mwy", "compose_form.hashtag_warning": "Ni fydd y tŵt hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond tŵtiau cyhoeddus gellid chwilota amdanynt drwy hashnod.", - "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich POSTS dilynwyr-yn-unig.", + "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich tŵtiau dilynwyr-yn-unig.", "compose_form.lock_disclaimer.lock": "wedi ei gloi", - "compose_form.placeholder": "Be syd ar eich meddwl?", + "compose_form.placeholder": "Beth sydd ar eich meddwl?", "compose_form.publish": "Tŵt", "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.sensitive.marked": "Cyfryngau wedi'u marcio'n sensitif", + "compose_form.sensitive.unmarked": "Nid yw'r cyfryngau wedi'u marcio'n sensitif", "compose_form.spoiler.marked": "Testun wedi ei guddio gan rybudd", "compose_form.spoiler.unmarked": "Nid yw'r testun wedi ei guddio", "compose_form.spoiler_placeholder": "Ysgrifenwch eich rhybudd yma", "confirmation_modal.cancel": "Canslo", - "confirmations.block.confirm": "Blociwch", + "confirmations.block.confirm": "Blocio", "confirmations.block.message": "Ydych chi'n sicr eich bod eisiau blocio {name}?", "confirmations.delete.confirm": "Dileu", "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y statws hwn?", "confirmations.delete_list.confirm": "Dileu", "confirmations.delete_list.message": "Ydych chi'n sicr eich bod eisiau dileu y rhestr hwn am byth?", "confirmations.domain_block.confirm": "Cuddio parth cyfan", - "confirmations.domain_block.message": "A ydych yn hollol, hollol sicr eich bod am flocio y {domain} cyfan? Yn y nifer helaeth o achosion mae blocio neu tawelu ambell gyfrif yn ddigonol ac yn well. Ni fyddwch yn gweld cynnwyr o'r parth hwnnw mewn unrhyw ffrydiau cyhoeddus na chwaith eich hysbysiadau. Bydd hyn yn cael gwared o'ch dilynwyr o'r parth hwnnw.", + "confirmations.domain_block.message": "A ydych yn hollol, hollol sicr eich bod am flocio y {domain} cyfan? Yn y nifer helaeth o achosion mae blocio neu tawelu ambell gyfrif yn ddigonol ac yn well. Ni fyddwch yn gweld cynnwys o'r parth hwnnw mewn unrhyw ffrydiau cyhoeddus na chwaith yn eich hysbysiadau. Bydd hyn yn cael gwared o'ch dilynwyr o'r parth hwnnw.", "confirmations.mute.confirm": "Tawelu", "confirmations.mute.message": "Ydych chi'n sicr eich bod am ddistewi {name}?", - "confirmations.redraft.confirm": "Dilëwch & ailddrafftio", + "confirmations.redraft.confirm": "Dileu & ailddrafftio", "confirmations.redraft.message": "Ydych chi'n siwr eich bod eisiau dileu y statws hwn a'i ailddrafftio? Bydd ffefrynnau a bwstiau'n cael ei colli, a bydd ymatebion i'r statws gwreiddiol yn cael eu hamddifadu.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Ateb", + "confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n sicr yr ydych am barhau?", "confirmations.unfollow.confirm": "Dad-ddilynwch", "confirmations.unfollow.message": "Ydych chi'n sicr eich bod am ddad-ddilyn {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Mewnblannwch y statws hwn ar eich gwefan drwy gopïo'r côd isod.", "embed.preview": "Dyma sut olwg fydd arno:", "emoji_button.activity": "Gweithgarwch", - "emoji_button.custom": "Custom", + "emoji_button.custom": "Unigryw", "emoji_button.flags": "Baneri", "emoji_button.food": "Bwyd a Diod", "emoji_button.label": "Mewnosodwch emoji", "emoji_button.nature": "Natur", - "emoji_button.not_found": "Dim emojos!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Dim emojo!! (╯°□°)╯︵ ┻━┻", "emoji_button.objects": "Gwrthrychau", "emoji_button.people": "Pobl", "emoji_button.recent": "Defnyddir yn aml", @@ -117,34 +116,34 @@ "empty_column.direct": "Nid oes gennych unrhyw negeseuon preifat eto. Pan y byddwch yn anfon neu derbyn un, mi fydd yn ymddangos yma.", "empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.", "empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff dwtiau eto. Pan y byddwch yn hoffi un, mi fydd yn ymddangos yma.", - "empty_column.favourites": "Nid oes neb wedi hoffi'r tŵt yma eto. Pan bydd rhywun yn ei hoffi, mi fyddent yn ymddangos yma.", - "empty_column.follow_requests": "Nid oes gennych unrhyw geisiadau dilyn eto. Pan dderbyniwch chi un, bydd yn ymddangos yma.", + "empty_column.favourites": "Nid oes neb wedi hoffi'r tŵt yma eto. Pan bydd rhywun yn ei hoffi, byddent yn ymddangos yma.", + "empty_column.follow_requests": "Nid oes gennych unrhyw geisiadau dilyn eto. Pan dderbyniwch chi un, byddent yn ymddangos yma.", "empty_column.hashtag": "Nid oes dim ar yr hashnod hwn eto.", "empty_column.home": "Mae eich ffrwd gartref yn wag! Ymwelwch a {public} neu defnyddiwch y chwilotwr i ddechrau arni ac i gwrdd a defnyddwyr eraill.", - "empty_column.home.public_timeline": "y ffrwd cyhoeddus", + "empty_column.home.public_timeline": "y ffrwd gyhoeddus", "empty_column.list": "Nid oes dim yn y rhestr yma eto. Pan y bydd aelodau'r rhestr yn cyhoeddi statws newydd, mi fydd yn ymddangos yma.", "empty_column.lists": "Nid oes gennych unrhyw restrau eto. Pan grëwch chi un, mi fydd yn ymddangos yma.", "empty_column.mutes": "Nid ydych wedi tawelu unrhyw ddefnyddwyr eto.", "empty_column.notifications": "Nid oes gennych unrhyw hysbysiadau eto. Rhyngweithiwch ac eraill i ddechrau'r sgwrs.", - "empty_column.public": "Does dim byd yma! Ysgrifennwch rhywbeth yn gyhoeddus, neu dilynwch ddefnyddwyr o INSTANCES eraill i'w lenwi", + "empty_column.public": "Does dim byd yma! Ysgrifennwch rhywbeth yn gyhoeddus, neu dilynwch ddefnyddwyr o achosion eraill i'w lenwi", "follow_request.authorize": "Caniatau", "follow_request.reject": "Gwrthod", "getting_started.developers": "Datblygwyr", "getting_started.documentation": "Dogfennaeth", "getting_started.find_friends": "Canfod ffrindiau o Twitter", "getting_started.heading": "Dechrau", - "getting_started.invite": "Gwahoddwch bobl", + "getting_started.invite": "Gwahodd pobl", "getting_started.open_source_notice": "Mae Mastodon yn feddalwedd côd agored. Mae modd cyfrannu neu adrodd materion ar GitHUb ar {github}.", "getting_started.security": "Diogelwch", "getting_started.terms": "Telerau Gwasanaeth", "home.column_settings.basic": "Syml", - "home.column_settings.show_reblogs": "Show boosts", - "home.column_settings.show_replies": "Dangoswch ymatebion", + "home.column_settings.show_reblogs": "Dangos bŵstiau", + "home.column_settings.show_replies": "Dangos ymatebion", "keyboard_shortcuts.back": "i lywio nôl", "keyboard_shortcuts.blocked": "i agor rhestr defnyddwyr a flociwyd", - "keyboard_shortcuts.boost": "to boost", - "keyboard_shortcuts.column": "to focus a status in one of the columns", - "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.boost": "i fŵstio", + "keyboard_shortcuts.column": "i ffocysu statws yn un o'r colofnau", + "keyboard_shortcuts.compose": "i ffocysu yr ardal cyfansoddi testun", "keyboard_shortcuts.description": "Disgrifiad", "keyboard_shortcuts.direct": "i agor colofn negeseuon preifat", "keyboard_shortcuts.down": "i symud lawr yn y rhestr", @@ -175,24 +174,24 @@ "lightbox.next": "Nesaf", "lightbox.previous": "Blaenorol", "lists.account.add": "Ychwanegwch at restr", - "lists.account.remove": "Remove from list", + "lists.account.remove": "Dileu o'r rhestr", "lists.delete": "Dileu rhestr", - "lists.edit": "Golygwch restr", - "lists.new.create": "Ychwanegwch restr", + "lists.edit": "Golygwch rhestr", + "lists.new.create": "Ychwanegu rhestr", "lists.new.title_placeholder": "Teitl rhestr newydd", - "lists.search": "Chwiliwch ymysg pobl yr ydych yn ei ddilyn", + "lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn", "lists.subheading": "Eich rhestrau", "loading_indicator.label": "Llwytho...", "media_gallery.toggle_visible": "Toglo gwelededd", "missing_indicator.label": "Heb ei ganfod", "missing_indicator.sublabel": "Ni ellid canfod yr adnodd hwn", - "mute_modal.hide_notifications": "Cuddiwch hysbysiadau rhag y defnyddiwr hwn?", + "mute_modal.hide_notifications": "Cuddio hysbysiadau rhag y defnyddiwr hwn?", "navigation_bar.apps": "Apiau symudol", "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", "navigation_bar.community_timeline": "Ffrwd leol", - "navigation_bar.compose": "Cyfansoddwch dŵt newydd", + "navigation_bar.compose": "Cyfansoddi tŵt newydd", "navigation_bar.direct": "Negeseuon preifat", - "navigation_bar.discover": "Darganfyddwch", + "navigation_bar.discover": "Darganfod", "navigation_bar.domain_blocks": "Parthau cuddiedig", "navigation_bar.edit_profile": "Golygu proffil", "navigation_bar.favourites": "Ffefrynnau", @@ -206,7 +205,7 @@ "navigation_bar.personal": "Personol", "navigation_bar.pins": "Tŵtiau wedi eu pinio", "navigation_bar.preferences": "Dewisiadau", - "navigation_bar.public_timeline": "Ffrwd y fferasiwn", + "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.security": "Diogelwch", "notification.favourite": "hoffodd {name} eich statws", "notification.follow": "dilynodd {name} chi", @@ -225,14 +224,14 @@ "notifications.group": "{count} o hysbysiadau", "onboarding.done": "Wedi'i wneud", "onboarding.next": "Nesaf", - "onboarding.page_five.public_timelines": "Mae'r ffrwd lleol yn dangos tŵtiau cyhoeddus o bawb ar y {domain}. Mae ffrwd y ffederasiwn yn dangos tŵtiau cyhoeddus o bawb y mae pobl ar y {domain} yn dilyn. Mae rhain yn Ffrydiau Cyhoeddus, ffordd wych o ddarganfod pobl newydd.", + "onboarding.page_five.public_timelines": "Mae'r ffrwd leol yn dangos tŵtiau cyhoeddus o bawb ar y {domain}. Mae ffrwd y ffederasiwn yn dangos tŵtiau cyhoeddus o bawb y mae pobl ar y {domain} yn dilyn. Mae rhain yn Ffrydiau Cyhoeddus, ffordd wych o ddarganfod pobl newydd.", "onboarding.page_four.home": "Mae'r ffrwd gartref yn dangos twtiau o bobl yr ydych yn dilyn.", "onboarding.page_four.notifications": "Mae'r golofn hysbysiadau yn dangos pan mae rhywun yn ymwneud a chi.", "onboarding.page_one.federation": "Mae mastodon yn rwydwaith o weinyddwyr anibynnol sy'n uno i greu un rhwydwaith gymdeithasol mwy. Yr ydym yn galw'r gweinyddwyr yma yn achosion.", - "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.full_handle": "Eich enw Mastodon llawn", "onboarding.page_one.handle_hint": "Dyma beth y bysech chi'n dweud wrth eich ffrindiau i chwilota amdano.", "onboarding.page_one.welcome": "Croeso i Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.admin": "Gweinyddwr eich achos yw {admin}.", "onboarding.page_six.almost_done": "Bron a gorffen...", "onboarding.page_six.appetoot": "Bon Apetŵt!", "onboarding.page_six.apps_available": "Mae yna {apps} ar gael i iOS, Android a platfformau eraill.", @@ -241,9 +240,9 @@ "onboarding.page_six.read_guidelines": "Darllenwch {guidelines} y {domain} os gwelwch yn dda!", "onboarding.page_six.various_app": "apiau symudol", "onboarding.page_three.profile": "Golygwch eich proffil i newid eich afatar, bywgraffiad, ac enw arddangos. Yno fe fyddwch hefyd yn canfod gosodiadau eraill.", - "onboarding.page_three.search": "Defnyddiwch y bar chwilio i ganfod pobl ac i edrych ar eu hashnodau, megis {illustration} ac {introductions}. I chwilio am rhywun nad ydynt ar yr achos hwn, defnyddiwch eu HANDLE llawn.", - "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": "Sgipiwch", + "onboarding.page_three.search": "Defnyddiwch y bar chwilio i ganfod pobl ac i edrych ar eu hashnodau, megis {illustration} ac {introductions}. I chwilio am rhywun nad ydynt ar yr achos hwn, defnyddiwch eu enw Mastodon llawn.", + "onboarding.page_two.compose": "Ysrgifenwch dŵtiau o'r golofn cyfansoddi. Mae modd uwchlwytho lluniau, newid gosodiadau preifatrwydd, ac ychwanegu rhybudd cynnwys gyda'r eiconau isod.", + "onboarding.skip": "Sgipio", "privacy.change": "Addasu preifatrwdd y statws", "privacy.direct.long": "Cyhoeddi i'r defnyddwyr sy'n cael eu crybwyll yn unig", "privacy.direct.short": "Uniongyrchol", @@ -251,7 +250,7 @@ "privacy.private.short": "Dilynwyr-yn-unig", "privacy.public.long": "Cyhoeddi i ffrydiau cyhoeddus", "privacy.public.short": "Cyhoeddus", - "privacy.unlisted.long": "Peidio a cyhoeddi i ffrydiau cyhoeddus", + "privacy.unlisted.long": "Peidio a chyhoeddi i ffrydiau cyhoeddus", "privacy.unlisted.short": "Heb ei restru", "regeneration_indicator.label": "Llwytho…", "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!", @@ -261,61 +260,63 @@ "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "reply_indicator.cancel": "Canslo", - "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.forward": "Ymlaen i {target}", + "report.forward_hint": "Mae'r cyfrif o weinydd arall. Anfon copi anhysbys o'r adroddiad yno hefyd?", "report.hint": "Bydd yr adroddiad yn cael ei anfon i arolygydd eich achos. Mae modd darparu esboniad o pam yr ydych yn cwyno am y cyfrif hwn isod:", "report.placeholder": "Sylwadau ychwanegol", "report.submit": "Cyflwyno", "report.target": "Cwyno am {target}", "search.placeholder": "Chwilio", "search_popout.search_format": "Fformat chwilio uwch", - "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": "Mae testun syml yn dychwelyd tŵtiau yr ydych wedi ysgrifennu, hoffi, wedi'u bŵstio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", "search_popout.tips.hashtag": "hashnod", "search_popout.tips.status": "statws", "search_popout.tips.text": "Mae testun syml yn dychwelyd enwau arddangos, enwau defnyddwyr a hashnodau sy'n cyfateb", "search_popout.tips.user": "defnyddiwr", "search_results.accounts": "Pobl", "search_results.hashtags": "Hanshnodau", - "search_results.statuses": "Twtiau", + "search_results.statuses": "Tŵtiau", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "Golwg tu fewn...", - "status.block": "Blociwch @{name}", - "status.cancel_reblog_private": "Unboost", + "status.block": "Blocio @{name}", + "status.cancel_reblog_private": "Dadfŵstio", "status.cannot_reblog": "Ni ellir sbarduno'r tŵt hwn", "status.delete": "Dileu", "status.detailed_status": "Golwg manwl o'r sgwrs", "status.direct": "Neges breifat @{name}", "status.embed": "Plannu", - "status.favourite": "Favourite", + "status.favourite": "Hoffi", "status.filtered": "Filtered", "status.load_more": "Llwythwch mwy", - "status.media_hidden": "Media hidden", - "status.mention": "Mention @{name}", + "status.media_hidden": "Cyfryngau wedi'u cuddio", + "status.mention": "Crybwyll @{name}", "status.more": "Mwy", "status.mute": "Tawelu @{name}", - "status.mute_conversation": "Mute conversation", - "status.open": "Expand this status", - "status.pin": "Pin on profile", - "status.pinned": "Pinned toot", - "status.read_more": "Read more", - "status.reblog": "Boost", - "status.reblog_private": "Boost to original audience", - "status.reblogged_by": "{name} boosted", - "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", - "status.redraft": "Dilëwh & ailddrafftio", + "status.mute_conversation": "Tawelu sgwrs", + "status.open": "Ehangu'r statws hwn", + "status.pin": "Pinio ar y proffil", + "status.pinned": "Pinio tŵt", + "status.read_more": "Darllen mwy", + "status.reblog": "Hybu", + "status.reblog_private": "Hybu i'r gynulleidfa wreiddiol", + "status.reblogged_by": "Bŵstio {name}", + "status.reblogs.empty": "Does neb wedi bŵstio'r tŵt yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", + "status.redraft": "Dileu & ailddrafftio", "status.reply": "Ateb", "status.replyAll": "Ateb i edefyn", - "status.report": "Report @{name}", - "status.sensitive_toggle": "Click to view", + "status.report": "Adrodd @{name}", + "status.sensitive_toggle": "Clicio i weld", "status.sensitive_warning": "Cynnwys sensitif", - "status.share": "Rhannwch", - "status.show_less": "Dangoswch lai", - "status.show_less_all": "Dangoswch lai i bawb", - "status.show_more": "Dangoswch fwy", - "status.show_more_all": "Show more for all", + "status.share": "Rhannu", + "status.show_less": "Dangos llai", + "status.show_less_all": "Dangos llai i bawb", + "status.show_more": "Dangos mwy", + "status.show_more_all": "Dangos mwy i bawb", "status.unmute_conversation": "Dad-dawelu sgwrs", - "status.unpin": "Unpin from profile", - "tabs_bar.federated_timeline": "Federated", + "status.unpin": "Dadbinio o'r proffil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", + "tabs_bar.federated_timeline": "Wedi'i ffedereiddio", "tabs_bar.home": "Hafan", "tabs_bar.local_timeline": "Lleol", "tabs_bar.notifications": "Hysbysiadau", @@ -324,8 +325,8 @@ "ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.", "upload_area.title": "Llusgwch & gollwing i uwchlwytho", "upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)", - "upload_form.description": "Describe for the visually impaired", - "upload_form.focus": "Crop", + "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg", + "upload_form.focus": "Cropio", "upload_form.undo": "Dileu", "upload_progress.label": "Uwchlwytho...", "video.close": "Cau fideo", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 2848c187f..d76f4ac1f 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -15,7 +15,7 @@ "account.follows.empty": "Denne bruger følger endnu ikke nogen.", "account.follows_you": "Følger dig", "account.hide_reblogs": "Skjul fremhævelserne fra @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "Ejerskabet af dette link blev tjekket den %{date}", "account.media": "Medie", "account.mention": "Nævn @{name}", "account.moved_to": "{name} er flyttet til:", @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Følg ikke længere", "confirmations.unfollow.message": "Er du sikker på, du ikke længere vil følge {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Indlejre denne status på din side ved at kopiere nedenstående kode.", "embed.preview": "Det kommer til at se således ud:", "emoji_button.activity": "Aktivitet", @@ -315,6 +314,8 @@ "status.show_more_all": "Vis mere for alle", "status.unmute_conversation": "Fjern dæmpningen fra samtale", "status.unpin": "Fjern som fastgjort fra profil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Fælles", "tabs_bar.home": "Hjem", "tabs_bar.local_timeline": "Lokal", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index a263e2309..81b8ceedd 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -15,7 +15,7 @@ "account.follows.empty": "Dieses Profil folgt noch niemandem.", "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "Besitz dieses Links wurde geprüft am {date}", "account.media": "Medien", "account.mention": "@{name} erwähnen", "account.moved_to": "{name} ist umgezogen auf:", @@ -91,11 +91,10 @@ "confirmations.mute.message": "Bist du dir sicher, dass du {name} stummschalten möchtest?", "confirmations.redraft.confirm": "Löschen und neu erstellen", "confirmations.redraft.message": "Bist du dir sicher, dass du diesen Status löschen und neu machen möchtest? Favoriten und Boosts werden verloren gehen und Antworten zu diesem Post werden verwaist sein.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Antworten", + "confirmations.reply.message": "Wenn du jetzt antwortest wird es die gesamte Nachricht verwerfen, die du gerade schreibst. Möchtest du wirklich fortfahren?", "confirmations.unfollow.confirm": "Entfolgen", "confirmations.unfollow.message": "Bist du dir sicher, dass du {name} entfolgen möchtest?", - "conversation.last_message": "Last message:", "embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, indem du den folgenden Code einfügst.", "embed.preview": "So wird es aussehen:", "emoji_button.activity": "Aktivitäten", @@ -130,7 +129,7 @@ "follow_request.authorize": "Erlauben", "follow_request.reject": "Ablehnen", "getting_started.developers": "Entwickler", - "getting_started.documentation": "Documentation", + "getting_started.documentation": "Dokumentation", "getting_started.find_friends": "Finde Freunde von Twitter", "getting_started.heading": "Erste Schritte", "getting_started.invite": "Leute einladen", @@ -144,7 +143,7 @@ "keyboard_shortcuts.blocked": "Liste blockierter Profile öffnen", "keyboard_shortcuts.boost": "boosten", "keyboard_shortcuts.column": "einen Status in einer der Spalten fokussieren", - "keyboard_shortcuts.compose": "fokussiere das Tröt-Eingabefeld", + "keyboard_shortcuts.compose": "fokussiere das Eingabefeld", "keyboard_shortcuts.description": "Beschreibung", "keyboard_shortcuts.direct": "Direct-Message-Spalte öffnen", "keyboard_shortcuts.down": "sich in der Liste hinunter bewegen", @@ -161,7 +160,7 @@ "keyboard_shortcuts.muted": "Liste stummgeschalteter Profile öffnen", "keyboard_shortcuts.my_profile": "Dein Profil öffnen", "keyboard_shortcuts.notifications": "Benachrichtigungsspalte öffnen", - "keyboard_shortcuts.pinned": "Liste angehefteter Tröts öffnen", + "keyboard_shortcuts.pinned": "Liste angehefteter Beiträge öffnen", "keyboard_shortcuts.profile": "Profil des Autors öffnen", "keyboard_shortcuts.reply": "antworten", "keyboard_shortcuts.requests": "Liste der Folge-Anfragen öffnen", @@ -283,7 +282,7 @@ "status.cancel_reblog_private": "Nicht mehr teilen", "status.cannot_reblog": "Dieser Beitrag kann nicht geteilt werden", "status.delete": "Löschen", - "status.detailed_status": "Detailed conversation view", + "status.detailed_status": "Detaillierte Ansicht der Konversation", "status.direct": "Direktnachricht @{name}", "status.embed": "Einbetten", "status.favourite": "Favorisieren", @@ -297,7 +296,7 @@ "status.open": "Diesen Beitrag öffnen", "status.pin": "Im Profil anheften", "status.pinned": "Angehefteter Beitrag", - "status.read_more": "Read more", + "status.read_more": "Mehr lesen", "status.reblog": "Teilen", "status.reblog_private": "An das eigentliche Publikum teilen", "status.reblogged_by": "{name} teilte", @@ -315,6 +314,8 @@ "status.show_more_all": "Zeige mehr für alles", "status.unmute_conversation": "Stummschaltung von Thread aufheben", "status.unpin": "Vom Profil lösen", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Föderation", "tabs_bar.home": "Startseite", "tabs_bar.local_timeline": "Lokal", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 8ad549571..0bbe2c307 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -872,6 +872,14 @@ }, { "descriptors": [ + { + "defaultMessage": "Dismiss suggestion", + "id": "suggestions.dismiss" + }, + { + "defaultMessage": "You might be interested in…", + "id": "suggestions.header" + }, { "defaultMessage": "People", "id": "search_results.accounts" @@ -1047,15 +1055,6 @@ ], "path": "app/javascript/mastodon/features/compose/index.json" }, - { - "descriptors": [ - { - "defaultMessage": "Last message:", - "id": "conversation.last_message" - } - ], - "path": "app/javascript/mastodon/features/direct_timeline/components/conversation.json" - }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 5ef160955..8e67e7f90 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -7,15 +7,15 @@ "account.disclaimer_full": "Οι παρακάτω πληροφορίες μπορει να μην αντανακλούν το προφίλ του χρήστη επαρκως.", "account.domain_blocked": "Κρυμμένος τομέας", "account.edit_profile": "Επεξεργάσου το προφίλ", - "account.endorse": "Feature on profile", + "account.endorse": "Προβολή στο προφίλ", "account.follow": "Ακολούθησε", "account.followers": "Ακόλουθοι", - "account.followers.empty": "No one follows this user yet.", + "account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.", "account.follows": "Ακολουθεί", - "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.", "account.follows_you": "Σε ακολουθεί", "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου εκλέχθηκε την {date}", "account.media": "Πολυμέσα", "account.mention": "Ανάφερε @{name}", "account.moved_to": "{name} μεταφέρθηκε στο:", @@ -30,7 +30,7 @@ "account.show_reblogs": "Δείξε τις προωθήσεις του/της @{name}", "account.unblock": "Ξεμπλόκαρε τον/την @{name}", "account.unblock_domain": "Αποκάλυψε το {domain}", - "account.unendorse": "Don't feature on profile", + "account.unendorse": "Άνευ προβολής στο προφίλ", "account.unfollow": "Διακοπή παρακολούθησης", "account.unmute": "Διακοπή αποσιώπησης του/της @{name}", "account.unmute_notifications": "Διακοπή αποσιώπησης ειδοποιήσεων του/της @{name}", @@ -91,11 +91,10 @@ "confirmations.mute.message": "Σίγουρα θες να αποσιωπήσεις τον/την {name};", "confirmations.redraft.confirm": "Διαγραφή & ξαναγράψιμο", "confirmations.redraft.message": "Σίγουρα θέλεις να σβήσεις αυτή την κατάσταση και να την ξαναγράψεις; Οι αναφορές και τα αγαπημένα της θα χαθούν ενώ οι απαντήσεις προς αυτή θα μείνουν ορφανές.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Απάντησε", + "confirmations.reply.message": "Απαντώντας τώρα θα αντικαταστήσεις το κείμενο που ήδη γράφεις. Σίγουρα θέλεις να συνεχίσεις;", "confirmations.unfollow.confirm": "Διακοπή παρακολούθησης", "confirmations.unfollow.message": "Σίγουρα θες να πάψεις να ακολουθείς τον/την {name};", - "conversation.last_message": "Last message:", "embed.instructions": "Ενσωματώστε αυτή την κατάσταση στην ιστοσελίδα σας αντιγράφοντας τον παρακάτω κώδικα.", "embed.preview": "Ορίστε πως θα φαίνεται:", "emoji_button.activity": "Δραστηριότητα", @@ -112,19 +111,19 @@ "emoji_button.search_results": "Αποτελέσματα αναζήτησης", "emoji_button.symbols": "Σύμβολα", "emoji_button.travel": "Ταξίδια & Τοποθεσίες", - "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.", "empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσιο παραμύθι ν' αρχινίσει!", "empty_column.direct": "Δεν έχεις προσωπικά μηνύματα ακόμα. Όταν στείλεις ή λάβεις κανένα, θα εμφανιστεί εδώ.", - "empty_column.domain_blocks": "There are no hidden domains yet.", - "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", - "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.", + "empty_column.favourited_statuses": "Δεν έχεις κανένα αγαπημένο τουτ ακόμα. Μόλις αγαπήσεις κάποιο, θα εμφανιστεί εδώ.", + "empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.", + "empty_column.follow_requests": "Δεν έχεις κανένα αίτημα παρακολούθησης ακόμα. Μόλις λάβεις κάποιο, θα εμφανιστεί εδώ.", "empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ταμπέλα.", "empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.", "empty_column.home.public_timeline": "η δημόσια ροή", "empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", - "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.lists": "Δεν έχεις καμία λίστα ακόμα. Μόλις φτιάξεις μια, θα εμφανιστεί εδώ.", + "empty_column.mutes": "Δεν έχεις αποσιωπήσει κανένα χρήστη ακόμα.", "empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Αλληλεπίδρασε με άλλους χρήστες για να ξεκινήσεις την κουβέντα.", "empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο, ή ακολούθησε χειροκίνητα χρήστες από άλλα instances για να τη γεμίσεις", "follow_request.authorize": "Ενέκρινε", @@ -141,32 +140,32 @@ "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων", "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", "keyboard_shortcuts.back": "για επιστροφή πίσω", - "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.blocked": "άνοιγμα λίστας αποκλεισμένων χρηστών", "keyboard_shortcuts.boost": "για προώθηση", "keyboard_shortcuts.column": "για εστίαση μιας κατάστασης σε μια από τις στήλες", "keyboard_shortcuts.compose": "για εστίαση στην περιοχή κειμένου συγγραφής", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "άνοιγμα κολώνας απευθείας μηνυμάτων", "keyboard_shortcuts.down": "για κίνηση προς τα κάτω στη λίστα", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "για σημείωση αγαπημένου", - "keyboard_shortcuts.favourites": "to open favourites list", - "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.favourites": "άνοιγμα λίστας αγαπημένων", + "keyboard_shortcuts.federated": "άνοιγμα ομοσπονδιακής ροής", "keyboard_shortcuts.heading": "Keyboard Shortcuts", - "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.home": "άνοιγμα αρχικής ροής", "keyboard_shortcuts.hotkey": "Συντόμευση", "keyboard_shortcuts.legend": "για να εμφανίσεις αυτόν τον οδηγό", - "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.local": "άνοιγμα τοπικής ροής", "keyboard_shortcuts.mention": "για να αναφέρεις το συγγραφέα", - "keyboard_shortcuts.muted": "to open muted users list", - "keyboard_shortcuts.my_profile": "to open your profile", - "keyboard_shortcuts.notifications": "to open notifications column", - "keyboard_shortcuts.pinned": "to open pinned toots list", - "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.muted": "άνοιγμα λίστας αποσιωπημενων χρηστών", + "keyboard_shortcuts.my_profile": "άνοιγμα του προφίλ σου", + "keyboard_shortcuts.notifications": "άνοιγμα κολώνας ειδοποιήσεων", + "keyboard_shortcuts.pinned": "άνοιγμα λίστας καρφιτσωμένων τουτ", + "keyboard_shortcuts.profile": "άνοιγμα προφίλ συγγραφέα", "keyboard_shortcuts.reply": "για απάντηση", - "keyboard_shortcuts.requests": "to open follow requests list", + "keyboard_shortcuts.requests": "άνοιγμα λίστας αιτημάτων παρακολούθησης", "keyboard_shortcuts.search": "για εστίαση αναζήτησης", - "keyboard_shortcuts.start": "to open \"get started\" column", + "keyboard_shortcuts.start": "άνοιγμα κολώνας \"Ξεκινώντας\"", "keyboard_shortcuts.toggle_hidden": "για εμφάνιση/απόκρυψη κειμένου πίσω από την προειδοποίηση", "keyboard_shortcuts.toot": "για δημιουργία ολοκαίνουριου τουτ", "keyboard_shortcuts.unfocus": "για την απο-εστίαση του πεδίου σύνθεσης/αναζήτησης", @@ -187,10 +186,10 @@ "missing_indicator.label": "Δε βρέθηκε", "missing_indicator.sublabel": "Αδύνατη η εύρεση αυτού του πόρου", "mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.apps": "Εφαρμογές φορητών συσκευών", "navigation_bar.blocks": "Αποκλεισμένοι χρήστες", "navigation_bar.community_timeline": "Τοπική ροή", - "navigation_bar.compose": "Compose new toot", + "navigation_bar.compose": "Γράψε νέο τουτ", "navigation_bar.direct": "Προσωπικά μηνύματα", "navigation_bar.discover": "Ανακάλυψη", "navigation_bar.domain_blocks": "Κρυμμένοι τομείς", @@ -283,7 +282,7 @@ "status.cancel_reblog_private": "Ακύρωσε την προώθηση", "status.cannot_reblog": "Αυτή η δημοσίευση δεν μπορεί να προωθηθεί", "status.delete": "Διαγραφή", - "status.detailed_status": "Detailed conversation view", + "status.detailed_status": "Προβολή λεπτομερειών συζήτησης", "status.direct": "Προσωπικό μήνυμα προς @{name}", "status.embed": "Ενσωμάτωσε", "status.favourite": "Σημείωσε ως αγαπημένο", @@ -297,11 +296,11 @@ "status.open": "Διεύρυνε αυτή την κατάσταση", "status.pin": "Καρφίτσωσε στο προφίλ", "status.pinned": "Καρφιτσωμένο τουτ", - "status.read_more": "Read more", + "status.read_more": "Περισσότερα", "status.reblog": "Προώθησε", "status.reblog_private": "Προώθησε στους αρχικούς παραλήπτες", "status.reblogged_by": "{name} προώθησε", - "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", + "status.reblogs.empty": "Κανείς δεν προώθησε αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.", "status.redraft": "Σβήσε & ξαναγράψε", "status.reply": "Απάντησε", "status.replyAll": "Απάντησε στην συζήτηση", @@ -315,6 +314,8 @@ "status.show_more_all": "Δείξε περισσότερα για όλα", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Ομοσπονδιακή", "tabs_bar.home": "Αρχική", "tabs_bar.local_timeline": "Τοπικά", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 949ce6da7..42be2db76 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.last_message": "Last message:", "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", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 19e7a21e5..0522ce95b 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Ne plu sekvi", "confirmations.unfollow.message": "Ĉu vi certas, ke vi volas ĉesi sekvi {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Enkorpigu ĉi tiun mesaĝon en vian retejon per kopio de la suba kodo.", "embed.preview": "Ĝi aperos tiel:", "emoji_button.activity": "Agadoj", @@ -315,6 +314,8 @@ "status.show_more_all": "Grandigi ĉiujn", "status.unmute_conversation": "Malsilentigi konversacion", "status.unpin": "Depingli de profilo", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Fratara tempolinio", "tabs_bar.home": "Hejmo", "tabs_bar.local_timeline": "Loka tempolinio", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 1a71a1023..f06ac11a4 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Dejar de seguir", "confirmations.unfollow.message": "¿Estás seguro de que quieres dejar de seguir a {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Añade este toot a tu sitio web con el siguiente código.", "embed.preview": "Así es como se verá:", "emoji_button.activity": "Actividad", @@ -315,6 +314,8 @@ "status.show_more_all": "Mostrar más para todo", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federado", "tabs_bar.home": "Inicio", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index f088c07a8..300e7eae4 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Utzi jarraitzeari", "confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?", - "conversation.last_message": "Last message:", "embed.instructions": "Txertatu mezu hau zure webgunean beheko kodea kopatuz.", "embed.preview": "Hau da izango duen itxura:", "emoji_button.activity": "Jarduera", @@ -315,6 +314,8 @@ "status.show_more_all": "Erakutsi denetarik gehiago", "status.unmute_conversation": "Desmututu elkarrizketa", "status.unpin": "Desfinkatu profiletik", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federatua", "tabs_bar.home": "Hasiera", "tabs_bar.local_timeline": "Lokala", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 6a7964606..7198931c4 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -58,8 +58,8 @@ "column.public": "نوشته‌های همه‌جا", "column_back_button.label": "بازگشت", "column_header.hide_settings": "نهفتن تنظیمات", - "column_header.moveLeft_settings": "انتقال ستون به چپ", - "column_header.moveRight_settings": "انتقال ستون به راست", + "column_header.moveLeft_settings": "انتقال ستون به راست", + "column_header.moveRight_settings": "انتقال ستون به چپ", "column_header.pin": "ثابت‌کردن", "column_header.show_settings": "نمایش تنظیمات", "column_header.unpin": "رهاکردن", @@ -91,11 +91,10 @@ "confirmations.mute.message": "آیا واقعاً می‌خواهید {name} را بی‌صدا کنید؟", "confirmations.redraft.confirm": "پاک‌کردن و بازنویسی", "confirmations.redraft.message": "آیا واقعاً می‌خواهید این نوشته را پاک کنید و آن را از نو بنویسید؟ با این کار بازبوق‌ها و پسندیده‌شدن‌های آن از دست می‌رود و پاسخ‌ها به آن بی‌مرجع می‌شود.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "پاسخ", + "confirmations.reply.message": "اگر الان پاسخ دهید، چیزی که در حال نوشتنش بودید پاک خواهد شد. آیا همین را می‌خواهید؟", "confirmations.unfollow.confirm": "لغو پیگیری", "confirmations.unfollow.message": "آیا واقعاً می‌خواهید به پیگیری از {name} پایان دهید؟", - "conversation.last_message": "Last message:", "embed.instructions": "برای جاگذاری این نوشته در سایت خودتان، کد زیر را کپی کنید.", "embed.preview": "نوشتهٔ جاگذاری‌شده این گونه به نظر خواهد رسید:", "emoji_button.activity": "فعالیت", @@ -297,7 +296,7 @@ "status.open": "این نوشته را باز کن", "status.pin": "نوشتهٔ ثابت نمایه", "status.pinned": "بوق ثابت", - "status.read_more": "Read more", + "status.read_more": "بیشتر بخوانید", "status.reblog": "بازبوقیدن", "status.reblog_private": "بازبوق به مخاطبان اولیه", "status.reblogged_by": "‫{name}‬ بازبوقید", @@ -315,6 +314,8 @@ "status.show_more_all": "نمایش بیشتر همه", "status.unmute_conversation": "باصداکردن گفتگو", "status.unpin": "برداشتن نوشتهٔ ثابت نمایه", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "همگانی", "tabs_bar.home": "خانه", "tabs_bar.local_timeline": "محلی", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 5a6752ce1..fc623dab8 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Lakkaa seuraamasta", "confirmations.unfollow.message": "Haluatko varmasti lakata seuraamasta käyttäjää {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Upota statuspäivitys sivullesi kopioimalla alla oleva koodi.", "embed.preview": "Se tulee näyttämään tältä:", "emoji_button.activity": "Aktiviteetit", @@ -315,6 +314,8 @@ "status.show_more_all": "Näytä lisää kaikista", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Yleinen", "tabs_bar.home": "Koti", "tabs_bar.local_timeline": "Paikallinen", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 4371e166c..d8b16672b 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -10,9 +10,9 @@ "account.endorse": "Figure sur le profil", "account.follow": "Suivre", "account.followers": "Abonné⋅e⋅s", - "account.followers.empty": "Personne ne suit cet utilisateur pour l'instant.", + "account.followers.empty": "Personne ne suit cet utilisateur pour l’instant.", "account.follows": "Abonnements", - "account.follows.empty": "Cet utilisateur ne suit personne pour l'instant.", + "account.follows.empty": "Cet utilisateur ne suit personne pour l’instant.", "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", @@ -91,11 +91,10 @@ "confirmations.mute.message": "Confirmez-vous le masquage de {name} ?", "confirmations.redraft.confirm": "Effacer et ré-écrire", "confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le ré-écrire ? Ses partages ainsi que ses mises en favori seront perdu·e·s et ses réponses seront orphelines.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Répondre", + "confirmations.reply.message": "Répondre maintenant écrasera le message que vous êtes en train de composer. Voulez-vous vraiment continuer ?", "confirmations.unfollow.confirm": "Ne plus suivre", "confirmations.unfollow.message": "Voulez-vous arrêter de suivre {name} ?", - "conversation.last_message": "Last message:", "embed.instructions": "Intégrez ce statut à votre site en copiant le code ci-dessous.", "embed.preview": "Il apparaîtra comme cela :", "emoji_button.activity": "Activités", @@ -112,19 +111,19 @@ "emoji_button.search_results": "Résultats de la recherche", "emoji_button.symbols": "Symboles", "emoji_button.travel": "Lieux & Voyages", - "empty_column.blocks": "Vous n'avez bloqué aucun utilisateur pour le moment.", + "empty_column.blocks": "Vous n’avez bloqué aucun utilisateur pour le moment.", "empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !", "empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.", - "empty_column.domain_blocks": "Il n'y a aucun domaine caché pour le moment.", - "empty_column.favourited_statuses": "Vous n'avez aucun pouet favoris pour le moment. Lorsque vous en mettrez un en favori, il apparaîtra ici.", - "empty_column.favourites": "Personne n'a encore mis ce pouet en favori. Lorsque quelqu'un le fera, il apparaîtra ici.", - "empty_column.follow_requests": "Vous n'avez pas encore de demande de suivi. Lorsque vous en recevrez une, elle apparaîtra ici.", + "empty_column.domain_blocks": "Il n’y a aucun domaine caché pour le moment.", + "empty_column.favourited_statuses": "Vous n’avez aucun pouet favoris pour le moment. Lorsque vous en mettrez un en favori, il apparaîtra ici.", + "empty_column.favourites": "Personne n’a encore mis ce pouet en favori. Lorsque quelqu’un le fera, il apparaîtra ici.", + "empty_column.follow_requests": "Vous n’avez pas encore de demande de suivi. Lorsque vous en recevrez une, elle apparaîtra ici.", "empty_column.hashtag": "Il n’y a encore aucun contenu associé à ce hashtag.", "empty_column.home": "Vous ne suivez personne. Visitez {public} ou utilisez la recherche pour trouver d’autres personnes à suivre.", "empty_column.home.public_timeline": "le fil public", "empty_column.list": "Il n’y a rien dans cette liste pour l’instant. Dès que des personnes de cette liste publieront de nouveaux statuts, ils apparaîtront ici.", - "empty_column.lists": "Vous n'avez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.", - "empty_column.mutes": "Vous n'avez pas encore mis des utilisateurs en silence.", + "empty_column.lists": "Vous n’avez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.", + "empty_column.mutes": "Vous n’avez pas encore mis des utilisateurs en silence.", "empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres personnes pour débuter la conversation.", "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", @@ -141,7 +140,7 @@ "home.column_settings.show_reblogs": "Afficher les partages", "home.column_settings.show_replies": "Afficher les réponses", "keyboard_shortcuts.back": "revenir en arrière", - "keyboard_shortcuts.blocked": "pour ouvrir une liste d'utilisateurs bloqués", + "keyboard_shortcuts.blocked": "pour ouvrir une liste d’utilisateurs bloqués", "keyboard_shortcuts.boost": "partager", "keyboard_shortcuts.column": "focaliser un statut dans l’une des colonnes", "keyboard_shortcuts.compose": "pour centrer la zone de rédaction", @@ -153,7 +152,7 @@ "keyboard_shortcuts.favourites": "pour ouvrir une liste de favoris", "keyboard_shortcuts.federated": "pour ouvrir le fil public global", "keyboard_shortcuts.heading": "Raccourcis clavier", - "keyboard_shortcuts.home": "pour ouvrir l'accueil", + "keyboard_shortcuts.home": "pour ouvrir l’accueil", "keyboard_shortcuts.hotkey": "Raccourci", "keyboard_shortcuts.legend": "pour afficher cette légende", "keyboard_shortcuts.local": "pour ouvrir le fil public local", @@ -297,11 +296,11 @@ "status.open": "Déplier ce statut", "status.pin": "Épingler sur le profil", "status.pinned": "Pouet épinglé", - "status.read_more": "Read more", + "status.read_more": "En savoir plus", "status.reblog": "Partager", "status.reblog_private": "Booster vers l’audience originale", "status.reblogged_by": "{name} a partagé :", - "status.reblogs.empty": "Personne n'a encore partagé ce pouet. Lorsque quelqu'un le fera, il apparaîtra ici.", + "status.reblogs.empty": "Personne n’a encore partagé ce pouet. Lorsque quelqu’un le fera, il apparaîtra ici.", "status.redraft": "Effacer et ré-écrire", "status.reply": "Répondre", "status.replyAll": "Répondre au fil", @@ -315,6 +314,8 @@ "status.show_more_all": "Tout déplier", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Fil public global", "tabs_bar.home": "Accueil", "tabs_bar.local_timeline": "Fil public local", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index f3b1a533b..2f8b76d3a 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -7,15 +7,15 @@ "account.disclaimer_full": "A información inferior podería mostrar un perfil incompleto da usuaria.", "account.domain_blocked": "Dominio agochado", "account.edit_profile": "Editar perfil", - "account.endorse": "Feature on profile", + "account.endorse": "Mostrado no perfil", "account.follow": "Seguir", "account.followers": "Seguidoras", - "account.followers.empty": "No one follows this user yet.", + "account.followers.empty": "Ninguén está a seguir esta usuaria por agora.", "account.follows": "Seguindo", - "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows.empty": "Esta usuaria aínda non segue a ninguén.", "account.follows_you": "Séguena", "account.hide_reblogs": "Ocultar repeticións de @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "A propiedade de esta ligazón foi comprobada en {date}", "account.media": "Medios", "account.mention": "Mencionar @{name}", "account.moved_to": "{name} marchou a:", @@ -30,7 +30,7 @@ "account.show_reblogs": "Mostrar repeticións de @{name}", "account.unblock": "Desbloquear @{name}", "account.unblock_domain": "Non ocultar {domain}", - "account.unendorse": "Don't feature on profile", + "account.unendorse": "Non mostrar no perfil", "account.unfollow": "Non seguir", "account.unmute": "Non acalar @{name}", "account.unmute_notifications": "Desbloquear as notificacións de @{name}", @@ -64,9 +64,9 @@ "column_header.show_settings": "Mostras axustes", "column_header.unpin": "Soltar", "column_subheading.settings": "Axustes", - "community.column_settings.media_only": "Media Only", + "community.column_settings.media_only": "Só medios", "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": "Coñecer máis", "compose_form.hashtag_warning": "Esta mensaxe non será listada baixo ningunha etiqueta xa que está marcada como non listada. Só os toots públicos poden buscarse por etiquetas.", "compose_form.lock_disclaimer": "A súa conta non está {locked}. Calquera pode seguila para ver as súas mensaxes só-para-seguidoras.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -91,11 +91,10 @@ "confirmations.mute.message": "Está segura de que quere acalar a {name}?", "confirmations.redraft.confirm": "Eliminar e reescribir", "confirmations.redraft.message": "Está segura de querer eliminar este estado e voltalo a escribir? Perderá réplicas e favoritas, e as respostas ao orixinal quedarán orfas.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Respostar", + "confirmations.reply.message": "Respostando agora sobreescribirá a mensaxe que está a compoñer. Segura de querer proceder?", "confirmations.unfollow.confirm": "Deixar de seguir", "confirmations.unfollow.message": "Quere deixar de seguir a {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Copie o código inferior para incrustar no seu sitio web este estado.", "embed.preview": "Así será mostrado:", "emoji_button.activity": "Actividade", @@ -112,61 +111,61 @@ "emoji_button.search_results": "Resultados da busca", "emoji_button.symbols": "Símbolos", "emoji_button.travel": "Viaxes e Lugares", - "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.blocks": "Non bloqueou ningunha usuaria polo de agora.", "empty_column.community": "A liña temporal local está baldeira. Escriba algo de xeito público para que rule!", "empty_column.direct": "Aínda non ten mensaxes directas. Cando envíe ou reciba unha, aparecerá aquí.", - "empty_column.domain_blocks": "There are no hidden domains yet.", - "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", - "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.domain_blocks": "Aínda non ocultou ningún dominio.", + "empty_column.favourited_statuses": "Aínda non ten toots favoritos. Cando favoreza algún, aparecerá aquí.", + "empty_column.favourites": "Ninguén favoreceu este toot polo momento. Cando o faga alguén, aparecerán aquí.", + "empty_column.follow_requests": "Non ten peticións de seguimento. Cando reciba unha, mostrarase aquí.", "empty_column.hashtag": "Aínda non hai nada con esta etiqueta.", "empty_column.home": "A súa liña temporal de inicio está baldeira! Visite {public} ou utilice a busca para atopar outras usuarias.", "empty_column.home.public_timeline": "a liña temporal pública", "empty_column.list": "Aínda non hai nada en esta lista. Cando as usuarias incluídas na lista publiquen mensaxes, aparecerán aquí.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", - "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.lists": "Aínda non ten listas. Cando cree unha, mostrarase aquí.", + "empty_column.mutes": "Non acalou ningunha usuaria polo de agora.", "empty_column.notifications": "Aínda non ten notificacións. Interactúe con outras para iniciar unha conversa.", "empty_column.public": "Nada por aquí! Escriba algo de xeito público, ou siga manualmente usuarias de outras instancias para ir enchéndoa", "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", - "getting_started.developers": "Developers", + "getting_started.developers": "Desenvolvedoras", "getting_started.documentation": "Documentation", - "getting_started.find_friends": "Find friends from Twitter", + "getting_started.find_friends": "Atope amigos da Twitter", "getting_started.heading": "Comezando", - "getting_started.invite": "Invite people", + "getting_started.invite": "Convide a xente", "getting_started.open_source_notice": "Mastodon é software de código aberto. Pode contribuír ou informar de fallos en GitHub en {github}.", - "getting_started.security": "Security", - "getting_started.terms": "Terms of service", + "getting_started.security": "Seguridade", + "getting_started.terms": "Termos do servizo", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar repeticións", "home.column_settings.show_replies": "Mostrar respostas", "keyboard_shortcuts.back": "voltar atrás", - "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.blocked": "abrir lista de usuarias bloqueadas", "keyboard_shortcuts.boost": "promover", "keyboard_shortcuts.column": "destacar un estado en unha das columnas", "keyboard_shortcuts.compose": "Foco no área de escritura", "keyboard_shortcuts.description": "Descrición", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "abrir columna de mensaxes directas", "keyboard_shortcuts.down": "ir hacia abaixo na lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "marcar como favorito", - "keyboard_shortcuts.favourites": "to open favourites list", - "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.favourites": "abrir lista de favoritos", + "keyboard_shortcuts.federated": "abrir liña temporal federada", "keyboard_shortcuts.heading": "Atallos do teclado", - "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.home": "abrir liña temporal de inicio", "keyboard_shortcuts.hotkey": "Tecla de acceso directo", "keyboard_shortcuts.legend": "para mostrar esta lenda", - "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.local": "abrir liña temporal local", "keyboard_shortcuts.mention": "para mencionar o autor", - "keyboard_shortcuts.muted": "to open muted users list", - "keyboard_shortcuts.my_profile": "to open your profile", - "keyboard_shortcuts.notifications": "to open notifications column", - "keyboard_shortcuts.pinned": "to open pinned toots list", - "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.muted": "abrir lista de usuarias acaladas", + "keyboard_shortcuts.my_profile": "abrir o seu perfil", + "keyboard_shortcuts.notifications": "abrir columna de notificacións", + "keyboard_shortcuts.pinned": "abrir lista de toots fixados", + "keyboard_shortcuts.profile": "abrir perfil da autora", "keyboard_shortcuts.reply": "para responder", - "keyboard_shortcuts.requests": "to open follow requests list", + "keyboard_shortcuts.requests": "abrir lista de peticións de seguimento", "keyboard_shortcuts.search": "para centrar a busca", - "keyboard_shortcuts.start": "to open \"get started\" column", + "keyboard_shortcuts.start": "abrir columna \"comezando\"", "keyboard_shortcuts.toggle_hidden": "mostrar/agochar un texto detrás do AC", "keyboard_shortcuts.toot": "escribir un toot novo", "keyboard_shortcuts.unfocus": "quitar o foco do área de escritura/busca", @@ -187,16 +186,16 @@ "missing_indicator.label": "Non atopado", "missing_indicator.sublabel": "Non se puido atopar o recurso", "mute_modal.hide_notifications": "Esconder notificacións deste usuario?", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.apps": "Apps móbiles", "navigation_bar.blocks": "Usuarias bloqueadas", "navigation_bar.community_timeline": "Liña temporal local", - "navigation_bar.compose": "Compose new toot", + "navigation_bar.compose": "Escribir novo toot", "navigation_bar.direct": "Mensaxes directas", - "navigation_bar.discover": "Discover", + "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios agochados", "navigation_bar.edit_profile": "Editar perfil", "navigation_bar.favourites": "Favoritas", - "navigation_bar.filters": "Muted words", + "navigation_bar.filters": "Palabras acaladas", "navigation_bar.follow_requests": "Peticións de seguimento", "navigation_bar.info": "Sobre esta instancia", "navigation_bar.keyboard_shortcuts": "Atallos", @@ -207,7 +206,7 @@ "navigation_bar.pins": "Mensaxes fixadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Liña temporal federada", - "navigation_bar.security": "Security", + "navigation_bar.security": "Seguridade", "notification.favourite": "{name} marcou como favorito o seu estado", "notification.follow": "{name} está a seguila", "notification.mention": "{name} mencionoute", @@ -222,7 +221,7 @@ "notifications.column_settings.reblog": "Promocións:", "notifications.column_settings.show": "Mostrar en columna", "notifications.column_settings.sound": "Reproducir son", - "notifications.group": "{count} notifications", + "notifications.group": "{count} notificacións", "onboarding.done": "Feito", "onboarding.next": "Seguinte", "onboarding.page_five.public_timelines": "A liña de tempo local mostra as publicacións públicas de todos en {domain}. A liña de tempo federada mostra as publicacións públicas de todos os que as persoas en {domain} seguen. Estas son as Liñas de tempo públicas, unha boa forma de descubrir novas persoas.", @@ -283,11 +282,11 @@ "status.cancel_reblog_private": "Non promover", "status.cannot_reblog": "Esta mensaxe non pode ser promovida", "status.delete": "Eliminar", - "status.detailed_status": "Detailed conversation view", + "status.detailed_status": "Vista detallada da conversa", "status.direct": "Mensaxe directa @{name}", "status.embed": "Incrustar", "status.favourite": "Favorita", - "status.filtered": "Filtered", + "status.filtered": "Filtrado", "status.load_more": "Cargar máis", "status.media_hidden": "Medios ocultos", "status.mention": "Mencionar @{name}", @@ -297,12 +296,12 @@ "status.open": "Expandir este estado", "status.pin": "Fixar no perfil", "status.pinned": "Toot fixado", - "status.read_more": "Read more", + "status.read_more": "Lea máis", "status.reblog": "Promover", "status.reblog_private": "Promover a audiencia orixinal", "status.reblogged_by": "{name} promoveu", - "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", - "status.redraft": "Delete & re-draft", + "status.reblogs.empty": "Ninguén promoveu este toot polo de agora. Cando alguén o faga, mostraránse aquí.", + "status.redraft": "Eliminar & reescribir", "status.reply": "Resposta", "status.replyAll": "Resposta a conversa", "status.report": "Informar @{name}", @@ -315,12 +314,14 @@ "status.show_more_all": "Mostrar máis para todas", "status.unmute_conversation": "Non acalar a conversa", "status.unpin": "Despegar do perfil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federado", "tabs_bar.home": "Inicio", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificacións", "tabs_bar.search": "Buscar", - "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking", + "trends.count_by_accounts": "{count} {rawCount, plural, one {person} outras {people}} conversando", "ui.beforeunload": "O borrador perderase se sae de Mastodon.", "upload_area.title": "Arrastre e solte para subir", "upload_button.label": "Engadir medios (JPEG, PNG, GIF, WebM, MP4, MOV)", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index e20d4cd9a..1ef20f231 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "להפסיק מעקב", "confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", "emoji_button.activity": "פעילות", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "ציר זמן בין-קהילתי", "tabs_bar.home": "בבית", "tabs_bar.local_timeline": "ציר זמן מקומי", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index f3808d061..c9b8e7f75 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.last_message": "Last message:", "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": "Aktivnost", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Poništi utišavanje razgovora", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federalni", "tabs_bar.home": "Dom", "tabs_bar.local_timeline": "Lokalno", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 0ffb07173..66a1d4c09 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Követés visszavonása", "confirmations.unfollow.message": "Biztos benne, hogy vissza szeretné vonni {name} követését?", - "conversation.last_message": "Last message:", "embed.instructions": "Ágyazza be ezen státuszt weboldalába az alábbi kód másolásával.", "embed.preview": "Így fog kinézni:", "emoji_button.activity": "Aktivitás", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Beszélgetés némításának elvonása", "status.unpin": "Kitűzés eltávolítása a profilról", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federált", "tabs_bar.home": "Kezdőlap", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index b4f19c697..e7d251a35 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Ապահետեւել", "confirmations.unfollow.message": "Վստա՞հ ես, որ ուզում ես այլեւս չհետեւել {name}֊ին։", - "conversation.last_message": "Last message:", "embed.instructions": "Այս թութը քո կայքում ներդնելու համար կարող ես պատճենել ներքոհիշյալ կոդը։", "embed.preview": "Ահա, թե ինչ տեսք կունենա այն՝", "emoji_button.activity": "Զբաղմունքներ", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Ապալռեցնել խոսակցությունը", "status.unpin": "Հանել անձնական էջից", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Դաշնային", "tabs_bar.home": "Հիմնական", "tabs_bar.local_timeline": "Տեղական", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 6d82269f4..1c84ed061 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Berhenti mengikuti", "confirmations.unfollow.message": "Apakah anda ingin berhenti mengikuti {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Sematkan status ini di website anda dengan menyalin kode di bawah ini.", "embed.preview": "Seperti ini nantinya:", "emoji_button.activity": "Aktivitas", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Gabungan", "tabs_bar.home": "Beranda", "tabs_bar.local_timeline": "Lokal", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 3df7e05ad..9963a52a5 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.last_message": "Last message:", "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", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federata", "tabs_bar.home": "Hemo", "tabs_bar.local_timeline": "Lokala", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 10d71c173..711a360a9 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -15,7 +15,7 @@ "account.follows.empty": "Questo utente non segue ancora nessuno.", "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.media": "Media", "account.mention": "Menziona @{name}", "account.moved_to": "{name} si è trasferito su:", @@ -91,11 +91,10 @@ "confirmations.mute.message": "Sei sicuro di voler silenziare {name}?", "confirmations.redraft.confirm": "Cancella e riscrivi", "confirmations.redraft.message": "Sei sicuro di voler cancellare questo stato e riscriverlo? Perderai tutte le risposte, condivisioni e preferiti.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Rispondi", + "confirmations.reply.message": "Se rispondi ora, il messaggio che stai componendo sarà sovrascritto. Sei sicuro di voler continuare?", "confirmations.unfollow.confirm": "Smetti di seguire", "confirmations.unfollow.message": "Sei sicuro che non vuoi più seguire {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Inserisci questo status nel tuo sito copiando il codice qui sotto.", "embed.preview": "Ecco come apparirà:", "emoji_button.activity": "Attività", @@ -297,7 +296,7 @@ "status.open": "Espandi questo post", "status.pin": "Fissa in cima sul profilo", "status.pinned": "Toot fissato in cima", - "status.read_more": "Read more", + "status.read_more": "Leggi altro", "status.reblog": "Condividi", "status.reblog_private": "Condividi con i destinatari iniziali", "status.reblogged_by": "{name} ha condiviso", @@ -315,6 +314,8 @@ "status.show_more_all": "Mostra di più per tutti", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federazione", "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Locale", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index e6f050cc6..f60724025 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -91,11 +91,10 @@ "confirmations.mute.message": "本当に{name}さんをミュートしますか?", "confirmations.redraft.confirm": "削除して下書きに戻す", "confirmations.redraft.message": "本当にこのトゥートを削除して下書きに戻しますか? このトゥートへのお気に入り登録やブーストは失われ、返信は孤立することになります。", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "返信", + "confirmations.reply.message": "今返信すると現在作成中のメッセージが上書きされます。本当に実行しますか?", "confirmations.unfollow.confirm": "フォロー解除", "confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?", - "conversation.last_message": "Last message:", "embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。", "embed.preview": "表示例:", "emoji_button.activity": "活動", @@ -297,7 +296,7 @@ "status.open": "詳細を表示", "status.pin": "プロフィールに固定表示", "status.pinned": "固定されたトゥート", - "status.read_more": "Read more", + "status.read_more": "もっと見る", "status.reblog": "ブースト", "status.reblog_private": "ブースト", "status.reblogged_by": "{name}さんがブースト", @@ -315,6 +314,8 @@ "status.show_more_all": "全て見る", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールの固定表示を解除", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "連合", "tabs_bar.home": "ホーム", "tabs_bar.local_timeline": "ローカル", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index d09371705..9d6d0d66d 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "ნუღარ მიჰყვები", "confirmations.unfollow.message": "დარწმუნებული ხართ, აღარ გსურთ მიჰყვებოდეთ {name}-ს?", - "conversation.last_message": "Last message:", "embed.instructions": "ეს სტატუსი ჩასვით თქვენს ვებ-საიტზე შემდეგი კოდის კოპირებით.", "embed.preview": "ესაა თუ როგორც გამოჩნდება:", "emoji_button.activity": "აქტივობა", @@ -315,6 +314,8 @@ "status.show_more_all": "აჩვენე მეტი ყველაზე", "status.unmute_conversation": "საუბარზე გაჩუმების მოშორება", "status.unpin": "პროფილიდან პინის მოშორება", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "ფედერალური", "tabs_bar.home": "სახლი", "tabs_bar.local_timeline": "ლოკალური", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 678433ff6..c779017f3 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -15,7 +15,7 @@ "account.follows.empty": "이 유저는 아직 아무도 팔로우 하고 있지 않습니다.", "account.follows_you": "날 팔로우합니다", "account.hide_reblogs": "@{name}의 부스트를 숨기기", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨", "account.media": "미디어", "account.mention": "@{name}에게 글쓰기", "account.moved_to": "{name}는 계정을 이동했습니다:", @@ -91,11 +91,10 @@ "confirmations.mute.message": "정말로 {name}를 뮤트하시겠습니까?", "confirmations.redraft.confirm": "삭제하고 다시 쓰기", "confirmations.redraft.message": "정말로 이 포스트를 삭제하고 다시 쓰시겠습니까? 해당 포스트에 대한 부스트와 즐겨찾기를 잃게 되고 원본에 대한 답장은 연결 되지 않습니다.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "답글", + "confirmations.reply.message": "답글을 달기 위해 현재 작성 중인 메시지가 덮어 씌워집니다. 진행하시겠습니까?", "confirmations.unfollow.confirm": "언팔로우", "confirmations.unfollow.message": "정말로 {name}를 언팔로우하시겠습니까?", - "conversation.last_message": "Last message:", "embed.instructions": "아래의 코드를 복사하여 대화를 원하는 곳으로 공유하세요.", "embed.preview": "다음과 같이 표시됩니다:", "emoji_button.activity": "활동", @@ -297,7 +296,7 @@ "status.open": "상세 정보 표시", "status.pin": "고정", "status.pinned": "고정 된 툿", - "status.read_more": "Read more", + "status.read_more": "더 보기", "status.reblog": "부스트", "status.reblog_private": "원래의 수신자들에게 부스트", "status.reblogged_by": "{name}님이 부스트 했습니다", @@ -315,6 +314,8 @@ "status.show_more_all": "모두 펼치기", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "연합", "tabs_bar.home": "홈", "tabs_bar.local_timeline": "로컬", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 6433f6211..7a8ff6868 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -15,7 +15,7 @@ "account.follows.empty": "Deze gebruiker volgt nog niemand.", "account.follows_you": "Volgt jou", "account.hide_reblogs": "Verberg boosts van @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", "account.media": "Media", "account.mention": "Vermeld @{name}", "account.moved_to": "{name} is verhuisd naar:", @@ -91,11 +91,10 @@ "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 de boosts en favorieten, en reacties op de originele toot zitten niet meer aan de nieuwe toot vast.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Reageren", + "confirmations.reply.message": "Door nu te reageren overschrijf je de toot die je op dit moment aan het schrijven bent. Weet je zeker dat je verder wil gaan?", "confirmations.unfollow.confirm": "Ontvolgen", "confirmations.unfollow.message": "Weet je het zeker dat je {name} wilt ontvolgen?", - "conversation.last_message": "Last message:", "embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.", "embed.preview": "Zo komt het eruit te zien:", "emoji_button.activity": "Activiteiten", @@ -297,7 +296,7 @@ "status.open": "Toot volledig tonen", "status.pin": "Aan profielpagina vastmaken", "status.pinned": "Vastgemaakte toot", - "status.read_more": "Read more", + "status.read_more": "Meer lezen", "status.reblog": "Boost", "status.reblog_private": "Boost naar oorspronkelijke ontvangers", "status.reblogged_by": "{name} boostte", @@ -315,6 +314,8 @@ "status.show_more_all": "Alles meer tonen", "status.unmute_conversation": "Conversatie niet langer negeren", "status.unpin": "Van profielpagina losmaken", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Globaal", "tabs_bar.home": "Start", "tabs_bar.local_timeline": "Lokaal", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 1105f2351..7c7e7600e 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Slutt å følge", "confirmations.unfollow.message": "Er du sikker på at du vil slutte å følge {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.", "embed.preview": "Slik kommer det til å se ut:", "emoji_button.activity": "Aktivitet", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Ikke demp samtale", "status.unpin": "Angre festing på profilen", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Felles", "tabs_bar.home": "Hjem", "tabs_bar.local_timeline": "Lokal", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index d95beb2b5..64ada60da 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -15,7 +15,7 @@ "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.", "account.follows_you": "Vos sèc", "account.hide_reblogs": "Rescondre los partatges de @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "La proprietat d’aqueste ligam foguèt verificada lo {date}", "account.media": "Mèdias", "account.mention": "Mencionar @{name}", "account.moved_to": "{name} a mudat los catons a :", @@ -91,11 +91,10 @@ "confirmations.mute.message": "Volètz vertadièrament rescondre {name} ?", "confirmations.redraft.confirm": "Escafar & tornar formular", "confirmations.redraft.message": "Volètz vertadièrament escafar aqueste estatut e lo reformular ? Tote sos partiments e favorits seràn perduts, e sas responsas seràn orfanèlas.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Respondre", + "confirmations.reply.message": "Respondre remplaçarà lo messatge que sètz a escriure. Volètz vertadièrament contunhar ?", "confirmations.unfollow.confirm": "Quitar de sègre", "confirmations.unfollow.message": "Volètz vertadièrament quitar de sègre {name} ?", - "conversation.last_message": "Last message:", "embed.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.", "embed.preview": "Semblarà aquò :", "emoji_button.activity": "Activitats", @@ -297,7 +296,7 @@ "status.open": "Desplegar aqueste estatut", "status.pin": "Penjar al perfil", "status.pinned": "Tut penjat", - "status.read_more": "Read more", + "status.read_more": "Ne legir mai", "status.reblog": "Partejar", "status.reblog_private": "Partejar a l’audiéncia d’origina", "status.reblogged_by": "{name} a partejat", @@ -315,6 +314,8 @@ "status.show_more_all": "Los desplegar totes", "status.unmute_conversation": "Tornar mostrar la conversacion", "status.unpin": "Tirar del perfil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Flux public global", "tabs_bar.home": "Acuèlh", "tabs_bar.local_timeline": "Flux public local", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 770932abf..b6410bbdf 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "W ten sposób utracisz wpis który obecnie tworzysz. Czy na pewno chcesz to zrobić?", "confirmations.unfollow.confirm": "Przestań śledzić", "confirmations.unfollow.message": "Czy na pewno zamierzasz przestać śledzić {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Osadź ten wpis na swojej stronie wklejając poniższy kod.", "embed.preview": "Tak będzie to wyglądać:", "emoji_button.activity": "Aktywność", @@ -315,6 +314,8 @@ "status.show_more_all": "Rozwiń wszystkie", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Globalne", "tabs_bar.home": "Strona główna", "tabs_bar.local_timeline": "Lokalne", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index ac67a770f..061d10f4d 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -10,12 +10,12 @@ "account.endorse": "Destacar no perfil", "account.follow": "Seguir", "account.followers": "Seguidores", - "account.followers.empty": "No one follows this user yet.", + "account.followers.empty": "Ninguém segue esse usuário no momento.", "account.follows": "Segue", - "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows.empty": "Esse usuário não segue ninguém no momento.", "account.follows_you": "Segue você", "account.hide_reblogs": "Esconder compartilhamentos de @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "A posse desse link foi verificada em {date}", "account.media": "Mídia", "account.mention": "Mencionar @{name}", "account.moved_to": "{name} se mudou para:", @@ -90,12 +90,11 @@ "confirmations.mute.confirm": "Silenciar", "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.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.redraft.message": "Você tem certeza que deseja apagar esse status e usá-lo como rascunho? Seus compartilhamentos e favoritos serão perdidos e as respostas ao toot original ficarão desconectadas.", + "confirmations.reply.confirm": "Responder", + "confirmations.reply.message": "Responder agora vai sobrescrever a mensagem que você está compondo. Você tem certeza que quer continuar?", "confirmations.unfollow.confirm": "Deixar de seguir", "confirmations.unfollow.message": "Você tem certeza de que quer deixar de seguir {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Incorpore esta postagem em seu site copiando o código abaixo.", "embed.preview": "Aqui está uma previsão de como ficará:", "emoji_button.activity": "Atividades", @@ -112,19 +111,19 @@ "emoji_button.search_results": "Resultados da busca", "emoji_button.symbols": "Símbolos", "emoji_button.travel": "Viagens & Lugares", - "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.blocks": "Você ainda não bloqueou nenhum usuário.", "empty_column.community": "A timeline local está vazia. Escreva algo publicamente para começar!", "empty_column.direct": "Você não tem nenhuma mensagem direta ainda. Quando você enviar ou receber uma, as mensagens aparecerão por aqui.", - "empty_column.domain_blocks": "There are no hidden domains yet.", - "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", - "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.domain_blocks": "Ainda não há nenhum domínio escondido.", + "empty_column.favourited_statuses": "Você ainda não tem nenhum toot favorito. Quando você favoritar um toot, ele aparecerá aqui.", + "empty_column.favourites": "Ninguém favoritou esse toot até agora. Quando alguém favoritar, a pessoa aparecerá aqui.", + "empty_column.follow_requests": "Você não tem nenhum pedido de seguir por agora. Quando você receber um, ele aparecerá aqui.", "empty_column.hashtag": "Ainda não há qualquer conteúdo com essa hashtag.", "empty_column.home": "Você ainda não segue usuário algum. Visite a timeline {public} ou use o buscador para procurar e conhecer outros usuários.", "empty_column.home.public_timeline": "global", "empty_column.list": "Ainda não há nada nesta lista. Quando membros dessa lista fizerem novas postagens, elas aparecerão aqui.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", - "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.lists": "Você ainda não tem nenhuma lista. Quando você criar uma, ela aparecerá aqui.", + "empty_column.mutes": "Você ainda não silenciou nenhum usuário.", "empty_column.notifications": "Você ainda não possui notificações. Interaja com outros usuários para começar a conversar.", "empty_column.public": "Não há nada aqui! Escreva algo publicamente ou siga manualmente usuários de outras instâncias", "follow_request.authorize": "Autorizar", @@ -141,32 +140,32 @@ "home.column_settings.show_reblogs": "Mostrar compartilhamentos", "home.column_settings.show_replies": "Mostrar as respostas", "keyboard_shortcuts.back": "para navegar de volta", - "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.blocked": "para abrir a lista de usuários bloqueados", "keyboard_shortcuts.boost": "para compartilhar", "keyboard_shortcuts.column": "Focar um status em uma das colunas", "keyboard_shortcuts.compose": "para focar a área de redação", "keyboard_shortcuts.description": "Descrição", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "para abrir a coluna de mensagens diretas", "keyboard_shortcuts.down": "para mover para baixo na lista", "keyboard_shortcuts.enter": "para expandir um status", "keyboard_shortcuts.favourite": "para adicionar aos favoritos", - "keyboard_shortcuts.favourites": "to open favourites list", - "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.favourites": "para abrir a lista de favoritos", + "keyboard_shortcuts.federated": "para abrir a timeline global", "keyboard_shortcuts.heading": "Atalhos de teclado", - "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.home": "para abrir a página inicial", "keyboard_shortcuts.hotkey": "Atalho", "keyboard_shortcuts.legend": "para mostrar essa legenda", - "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.local": "para abrir a timeline local", "keyboard_shortcuts.mention": "para mencionar o autor", - "keyboard_shortcuts.muted": "to open muted users list", - "keyboard_shortcuts.my_profile": "to open your profile", - "keyboard_shortcuts.notifications": "to open notifications column", - "keyboard_shortcuts.pinned": "to open pinned toots list", + "keyboard_shortcuts.muted": "para abrir a lista de usuários silenciados", + "keyboard_shortcuts.my_profile": "para abrir o seu perfil", + "keyboard_shortcuts.notifications": "para abrir a coluna de notificações", + "keyboard_shortcuts.pinned": "para abrir a lista de toots fixados", "keyboard_shortcuts.profile": "para abrir o perfil do autor", "keyboard_shortcuts.reply": "para responder", - "keyboard_shortcuts.requests": "to open follow requests list", + "keyboard_shortcuts.requests": "para abrir a lista de seguidores pendentes", "keyboard_shortcuts.search": "para focar a pesquisa", - "keyboard_shortcuts.start": "to open \"get started\" column", + "keyboard_shortcuts.start": "para abrir a coluna \"primeiros passos\"", "keyboard_shortcuts.toggle_hidden": "mostrar/esconder o texto com aviso de conteúdo", "keyboard_shortcuts.toot": "para compor um novo toot", "keyboard_shortcuts.unfocus": "para remover o foco da área de composição/pesquisa", @@ -190,7 +189,7 @@ "navigation_bar.apps": "Apps", "navigation_bar.blocks": "Usuários bloqueados", "navigation_bar.community_timeline": "Local", - "navigation_bar.compose": "Compose new toot", + "navigation_bar.compose": "Compor um novo toot", "navigation_bar.direct": "Mensagens diretas", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios escondidos", @@ -283,7 +282,7 @@ "status.cancel_reblog_private": "Desfazer compartilhamento", "status.cannot_reblog": "Esta postagem não pode ser compartilhada", "status.delete": "Excluir", - "status.detailed_status": "Detailed conversation view", + "status.detailed_status": "Visão detalhada da conversa", "status.direct": "Enviar mensagem direta a @{name}", "status.embed": "Incorporar", "status.favourite": "Adicionar aos favoritos", @@ -297,11 +296,11 @@ "status.open": "Expandir", "status.pin": "Fixar no perfil", "status.pinned": "Toot fixado", - "status.read_more": "Read more", + "status.read_more": "Ler mais", "status.reblog": "Compartilhar", "status.reblog_private": "Compartilhar com a audiência original", "status.reblogged_by": "{name} compartilhou", - "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", + "status.reblogs.empty": "Ninguém compartilhou esse toot até agora. Quando alguém o fizer, eles aparecerão aqui.", "status.redraft": "Apagar & usar como rascunho", "status.reply": "Responder", "status.replyAll": "Responder à sequência", @@ -315,6 +314,8 @@ "status.show_more_all": "Mostrar mais para todas as mensagens", "status.unmute_conversation": "Desativar silêncio desta conversa", "status.unpin": "Desafixar do perfil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Global", "tabs_bar.home": "Página inicial", "tabs_bar.local_timeline": "Local", @@ -323,7 +324,7 @@ "trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre", "ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.", "upload_area.title": "Arraste e solte para enviar", - "upload_button.label": "Adicionar mídia", + "upload_button.label": "Adicionar mídia (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Descreva a imagem para deficientes visuais", "upload_form.focus": "Ajustar foco", "upload_form.undo": "Remover", diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json index b2bf0f01d..adb10dd07 100644 --- a/app/javascript/mastodon/locales/pt.json +++ b/app/javascript/mastodon/locales/pt.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Deixar de seguir", "confirmations.unfollow.message": "De certeza que queres deixar de seguir {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Publicar este post num outro site copiando o código abaixo.", "embed.preview": "Podes ver aqui como irá ficar:", "emoji_button.activity": "Actividade", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Global", "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index c5f2c7607..2a6479b91 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Nu mai urmări", "confirmations.unfollow.message": "Ești sigur că nu mai vrei să îl urmărești pe {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Inserează această postare pe site-ul tău adăugând codul de mai jos.", "embed.preview": "Cam așa va arăta:", "emoji_button.activity": "Activitate", @@ -315,6 +314,8 @@ "status.show_more_all": "Arată mai mult pentru toți", "status.unmute_conversation": "Repornește conversația", "status.unpin": "Eliberează din profil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Global", "tabs_bar.home": "Acasă", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index b283b0976..cd65adcb5 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Отписаться", "confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Встройте этот статус на Вашем сайте, скопировав код внизу.", "embed.preview": "Так это будет выглядеть:", "emoji_button.activity": "Занятия", @@ -315,6 +314,8 @@ "status.show_more_all": "Развернуть для всех", "status.unmute_conversation": "Снять глушение с треда", "status.unpin": "Открепить от профиля", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Глобальная", "tabs_bar.home": "Главная", "tabs_bar.local_timeline": "Локальная", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index c89922de8..cca2e3c62 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Nesledovať", "confirmations.unfollow.message": "Naozaj chcete prestať sledovať {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.", "embed.preview": "Tu je ako to bude vyzerať:", "emoji_button.activity": "Aktivita", @@ -315,6 +314,8 @@ "status.show_more_all": "Všetkým ukáž viac", "status.unmute_conversation": "Prestať ignorovať konverzáciu", "status.unpin": "Odopnúť z profilu", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federovaná", "tabs_bar.home": "Domov", "tabs_bar.local_timeline": "Lokálna", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index cb03849c2..175a34efd 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -7,15 +7,15 @@ "account.disclaimer_full": "Spodnje informacije lahko nepopolno prikazujejo profil uporabnika.", "account.domain_blocked": "Skrita domena", "account.edit_profile": "Uredi profil", - "account.endorse": "Feature on profile", + "account.endorse": "Zmožnost profila", "account.follow": "Sledi", "account.followers": "Sledilci", - "account.followers.empty": "No one follows this user yet.", + "account.followers.empty": "Nihče ne sledi tega uporabnika.", "account.follows": "Sledi", - "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Ti sledi", "account.hide_reblogs": "Skrij napuhke od @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.media": "Mediji", "account.mention": "Omeni @{name}", "account.moved_to": "{name} se je premaknil na:", @@ -64,9 +64,9 @@ "column_header.show_settings": "Prikaži nastavitve", "column_header.unpin": "Odpni", "column_subheading.settings": "Nastavitve", - "community.column_settings.media_only": "Media Only", + "community.column_settings.media_only": "Samo mediji", "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": "Nauči se več", "compose_form.hashtag_warning": "Ta tut ne bo naveden pod nobenim hashtagom, ker ni dodan hashtag. Samo javne tute lahko iščete pod hashtagom.", "compose_form.lock_disclaimer": "Vaš račun ni {locked}. Vsakdo vam lahko sledi in si ogleda objave, ki so namenjene samo sledilcem.", "compose_form.lock_disclaimer.lock": "zaklenjen", @@ -89,13 +89,12 @@ "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.message": "Ali ste prepričani, da želite utišati {name}?", - "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.confirm": "Izbriši in preoblikuj", "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.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.message": "Odgovarjanje bo prepisalo sporočilo, ki ga trenutno sestavljate. Ali ste prepričani, da želite nadaljevati?", "confirmations.unfollow.confirm": "Prenehaj slediti", "confirmations.unfollow.message": "Ali ste prepričani, da ne želite več slediti {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Vstavi ta status na svojo spletno stran tako, da kopirate spodnjo kodo.", "embed.preview": "Tukaj je, kako bo izgledalo:", "emoji_button.activity": "Dejavnost", @@ -112,10 +111,10 @@ "emoji_button.search_results": "Rezultati iskanja", "emoji_button.symbols": "Simboli", "emoji_button.travel": "Potovanja in Kraji", - "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.blocks": "Niste še blokirali nobenega uporabnika.", "empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!", "empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga pošljete ali prejmete, se prikaže tukaj.", - "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.domain_blocks": "Še vedno ni skritih domen.", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", @@ -315,6 +314,8 @@ "status.show_more_all": "Prikaži več za vse", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Združeno", "tabs_bar.home": "Domov", "tabs_bar.local_timeline": "Lokalno", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 4eab0a4ab..6020512c4 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Otprati", "confirmations.unfollow.message": "Da li ste sigurni da želite da otpratite korisnika {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Ugradi ovaj status na Vaš veb sajt kopiranjem koda ispod.", "embed.preview": "Ovako će da izgleda:", "emoji_button.activity": "Aktivnost", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Uključi prepisku", "status.unpin": "Otkači sa profila", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federisano", "tabs_bar.home": "Početna", "tabs_bar.local_timeline": "Lokalno", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index c5c33fb0c..41d9e12b0 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Отпрати", "confirmations.unfollow.message": "Да ли сте сигурни да желите да отпратите корисника {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Угради овај статус на Ваш веб сајт копирањем кода испод.", "embed.preview": "Овако ће да изгледа:", "emoji_button.activity": "Активност", @@ -315,6 +314,8 @@ "status.show_more_all": "Прикажи више за све", "status.unmute_conversation": "Укључи преписку", "status.unpin": "Откачи са профила", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Федерисано", "tabs_bar.home": "Почетна", "tabs_bar.local_timeline": "Локално", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 68fdf8d4e..dbe9f709a 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Sluta följa", "confirmations.unfollow.message": "Är du säker på att du vill sluta följa {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Bädda in den här statusen på din webbplats genom att kopiera koden nedan.", "embed.preview": "Här ser du hur det kommer att se ut:", "emoji_button.activity": "Aktivitet", @@ -315,6 +314,8 @@ "status.show_more_all": "Visa mer för alla", "status.unmute_conversation": "Öppna konversation", "status.unpin": "Ångra fäst i profil", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Förenad", "tabs_bar.home": "Hem", "tabs_bar.local_timeline": "Lokal", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 38cf67e18..803e004cc 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.last_message": "Last message:", "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", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index eead75ff5..af036e300 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "అనుసరించవద్దు", "confirmations.unfollow.message": "{name}ను మీరు ఖచ్చితంగా అనుసరించవద్దనుకుంటున్నారా?", - "conversation.last_message": "Last message:", "embed.instructions": "దిగువ కోడ్ను కాపీ చేయడం ద్వారా మీ వెబ్సైట్లో ఈ స్టేటస్ ని పొందుపరచండి.", "embed.preview": "అది ఈ క్రింది విధంగా కనిపిస్తుంది:", "emoji_button.activity": "కార్యకలాపాలు", @@ -315,6 +314,8 @@ "status.show_more_all": "అన్నిటికీ ఇంకా చూపించు", "status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి", "status.unpin": "ప్రొఫైల్ నుండి పీకివేయు", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "సమాఖ్య", "tabs_bar.home": "హోమ్", "tabs_bar.local_timeline": "స్థానిక", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 052f6b16a..fe36a966c 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.last_message": "Last message:", "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", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index fccbc55ec..323617f1d 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.last_message": "Last message:", "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": "Aktivite", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federe", "tabs_bar.home": "Ana sayfa", "tabs_bar.local_timeline": "Yerel", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 6c2e8380b..cdc13c574 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Відписатися", "confirmations.unfollow.message": "Ви впевнені, що хочете відписатися від {name}?", - "conversation.last_message": "Last message:", "embed.instructions": "Інтегруйте цей статус на вашому вебсайті, скопіювавши код нижче.", "embed.preview": "Ось як він виглядатиме:", "emoji_button.activity": "Заняття", @@ -315,6 +314,8 @@ "status.show_more_all": "Show more for all", "status.unmute_conversation": "Зняти глушення з діалогу", "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Глобальна", "tabs_bar.home": "Головна", "tabs_bar.local_timeline": "Локальна", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index b7937fc00..9fee25e15 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "取消关注", "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?", - "conversation.last_message": "Last message:", "embed.instructions": "要在你的网站上嵌入这条嘟文,请复制以下代码。", "embed.preview": "它会像这样显示出来:", "emoji_button.activity": "活动", @@ -315,6 +314,8 @@ "status.show_more_all": "显示所有内容", "status.unmute_conversation": "不再隐藏此对话", "status.unpin": "在个人资料页面取消置顶", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "跨站", "tabs_bar.home": "主页", "tabs_bar.local_timeline": "本站", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index af106312f..26eba48f8 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "取消關注", "confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?", - "conversation.last_message": "Last message:", "embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。", "embed.preview": "看上去會是這樣:", "emoji_button.activity": "活動", @@ -315,6 +314,8 @@ "status.show_more_all": "顯示更多這類文章", "status.unmute_conversation": "解禁對話", "status.unpin": "解除置頂", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "跨站", "tabs_bar.home": "主頁", "tabs_bar.local_timeline": "本站", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 454fd80db..6d4a9a0bb 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -95,7 +95,6 @@ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "取消關注", "confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?", - "conversation.last_message": "Last message:", "embed.instructions": "要內嵌此嘟文,請將以下代碼貼進你的網站。", "embed.preview": "看上去會變成這樣:", "emoji_button.activity": "活動", @@ -315,6 +314,8 @@ "status.show_more_all": "顯示更多這類嘟文", "status.unmute_conversation": "解除此對話的靜音", "status.unpin": "解除置頂", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "其他站點", "tabs_bar.home": "主頁", "tabs_bar.local_timeline": "本站", diff --git a/config/locales/activerecord.cy.yml b/config/locales/activerecord.cy.yml index 55eb78e74..265530124 100644 --- a/config/locales/activerecord.cy.yml +++ b/config/locales/activerecord.cy.yml @@ -10,4 +10,4 @@ cy: status: attributes: reblog: - taken: o'r statws sy'n bodoli'n barod + taken: o'r statws yn bodoli'n barod diff --git a/config/locales/ar.yml b/config/locales/ar.yml index afbb32088..095b1f584 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -120,7 +120,7 @@ ar: most_recent: الأحدث title: الترتيب outbox_url: رابط صندوق الصادر - perform_full_suspension: تعطيل الحساب بالكامل + perform_full_suspension: تعطيل profile_url: رابط الملف الشخصي promote: ترقية protocol: البروتوكول @@ -169,6 +169,7 @@ ar: create_domain_block: "%{name} قام بحجب نطاق %{target}" create_email_domain_block: "%{name} قد قام بحظر نطاق البريد الإلكتروني %{target}" demote_user: "%{name} قد قام بإنزال الرتبة الوظيفية لـ %{target}" + destroy_custom_emoji: قام %{name} بحذف الإيموجي %{target} destroy_domain_block: "%{name} قام بإلغاء الحجب عن النطاق %{target}" destroy_email_domain_block: قام %{name} بإضافة نطاق البريد الإلكتروني %{target} إلى اللائحة البيضاء destroy_status: لقد قام %{name} بحذف منشور %{target} @@ -254,6 +255,7 @@ ar: title: حجب نطاق جديد reject_media: رفض ملفات الوسائط reject_media_hint: يزيل ملفات الوسائط المخزنة محليًا ويرفض تنزيل أي ملفات في المستقبل. غير ذي صلة للتعليق + reject_reports: رفض التقارير severities: noop: لا شيء silence: إخفاء أو كتم @@ -361,7 +363,7 @@ ar: desc_html: أسماء النطاقات التي إلتقى بها مثيل الخادوم على البيئة الموحَّدة فيديفرس title: نشر عدد مثيلات الخوادم التي تم مصادفتها preview_sensitive_media: - desc_html: روابط المُعَاينة على مواقع الويب الأخرى ستقوم بعرض صُوَر مصغّرة حتى و إن كانت الوسائط حساسة. + desc_html: روابط المُعَاينة على مواقع الويب الأخرى ستقوم بعرض صُوَر مصغّرة حتى و إن كانت الوسائط حساسة title: إظهار الصور الحساسة في مُعاينات أوبن غراف registrations: closed_message: @@ -559,6 +561,7 @@ ar: resources: الموارد generic: changes_saved_msg: تم حفظ التعديلات بنجاح ! + copy: نسخ save_changes: حفظ التغييرات validation_errors: هناك شيء ليس على ما يُرام! يُرجى معاينة الأخطاء الـ %{count} التالية imports: @@ -804,8 +807,11 @@ ar: tips: نصائح title: أهلاً بك، %{name} ! users: + follow_limit_reached: لا يمكنك متابعة أكثر مِن %{limit} أشخاص invalid_email: عنوان البريد الإلكتروني غير صالح invalid_otp_token: رمز المصادقة بخطوتين غير صالح otp_lost_help_html: إن فقدتَهُما ، يمكنك الإتصال بـ %{email} seamless_external_login: لقد قمت بتسجيل الدخول عبر خدمة خارجية، إنّ إعدادات الكلمة السرية و البريد الإلكتروني غير متوفرة. signed_in_as: 'تم تسجيل دخولك بصفة :' + verification: + verification: التحقق diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 9813aea6f..91c6dfb61 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -48,11 +48,11 @@ bg: half_a_minute: Току-що less_than_x_minutes: "%{count} мин." less_than_x_seconds: Току-що - over_x_years: "%{count} г." + over_x_years: "%{count} г" x_days: "%{count} дни" - x_minutes: "%{count} мин." - x_months: "%{count} м." - x_seconds: "%{count} сек." + x_minutes: "%{count} мин" + x_months: "%{count} м" + x_seconds: "%{count} сек" exports: blocks: Вашите блокирания csv: CSV @@ -64,7 +64,7 @@ bg: validation_errors: Нещо все още не е наред! Моля, прегледай грешките по-долу imports: preface: Можеш да импортираш някои данни, като например всички хора, които следваш или блокираш в акаунта си на тази инстанция, от файлове, създадени чрез експорт в друга инстанция. - success: Твоите данни бяха успешно качени и ще бъдат обработени впоследствие. + success: Твоите данни бяха успешно качени и ще бъдат обработени впоследствие types: blocking: Списък на блокираните following: Списък на последователите diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 74f76163c..b74d7a00b 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -48,6 +48,7 @@ ca: other: Seguidors following: Seguint joined: Unit des de %{date} + link_verified_on: La propietat d'aquest enllaç s'ha verificat el %{date} media: Mèdia moved_html: "%{name} s'ha mogut a %{new_profile_link}:" network_hidden: Aquesta informació no està disponible @@ -120,13 +121,14 @@ ca: moderation_notes: Notes de moderació most_recent_activity: Activitat més recent most_recent_ip: IP més recent + no_limits_imposed: Sense límits imposats not_subscribed: No subscrit order: alphabetic: Alfabètic most_recent: Més recent title: Ordre outbox_url: URL de la bústia de sortida - perform_full_suspension: Aplica una suspensió completa + perform_full_suspension: Suspèn profile_url: URL del perfil promote: Promociona protocol: Protocol @@ -155,8 +157,10 @@ ca: report: informe targeted_reports: Informes realitzats sobre aquest compte silence: Silenci + silenced: Silenciat statuses: Estats subscribe: Subscriu + suspended: Suspès title: Comptes unconfirmed_email: Correu electrònic sense confirmar undo_silenced: Deixa de silenciar @@ -173,6 +177,7 @@ ca: create_domain_block: "%{name} ha blocat el domini %{target}" create_email_domain_block: "%{name} ha afegit a la llista negra el domini del correu electrònic %{target}" demote_user: "%{name} ha degradat l'usuari %{target}" + destroy_custom_emoji: "%{name} ha destruït l'emoji %{target}" destroy_domain_block: "%{name} ha desblocat el domini %{target}" destroy_email_domain_block: "%{name} ha afegit a la llista negra el domini de correu electrònic %{target}" destroy_status: "%{name} eliminat l'estat per %{target}" @@ -240,8 +245,8 @@ ca: total_users: usuaris en total trends: Tendències week_interactions: interaccions d'aquesta setmana - week_users_active: actiu aquesta setmana - week_users_new: usuaris aquesta setmana + week_users_active: usuaris actius aquesta setmana + week_users_new: nous usuaris aquest setmana domain_blocks: add_new: Afegeix created_msg: El bloqueig de domini ara s'està processant @@ -258,6 +263,8 @@ ca: title: Bloqueig de domini nou reject_media: Rebutja els fitxers multimèdia reject_media_hint: Elimina els fitxers multimèdia emmagatzemats localment i impedeix baixar-ne cap en el futur. Irrellevant en les suspensions + reject_reports: Rebutja informes + reject_reports_hint: Ignora tots els informes procedents d'aquest domini. No és rellevant per a les suspensions severities: noop: Cap silence: Silenci @@ -300,8 +307,13 @@ ca: title: Convida relays: add_new: Afegiu un nou relay + delete: Esborra description_html: Un relay de federació és un servidor intermediari que intercanvia grans volums de toots públics entre servidors que es subscriuen i publiquen en ell. Pot ajudar a servidors petits i mitjans a descobrir contingut del fedivers, no fent necessari que els usuaris locals manualment segueixin altres persones de servidors remots. + disable: Inhabilita + disabled: Desactivat + enable: Activat enable_hint: Una vegada habilitat, el teu servidor es subscriurà a tots els toots públics d'aquest relay i començarà a enviar-hi tots els toots públics d'aquest servidor. + enabled: Activat inbox_url: URL del Relay pending: S'està esperant l'aprovació del relay save_and_enable: Desa i activa @@ -357,6 +369,9 @@ ca: hero: desc_html: Es mostra en pàgina frontal. Recomanat 600x100px al menys. Si no es configura es mostrarà el de la instància title: Imatge d’heroi + mascot: + desc_html: Es mostra a diverses pàgines. Es recomana com a mínim 293 × 205px. Si no està configurat, torna a la mascota predeterminada + title: Imatge de la mascota peers_api_enabled: desc_html: Els noms de domini que ha trobat aquesta instància al fediverse title: Publica la llista d'instàncies descobertes @@ -450,7 +465,7 @@ ca: warning: Aneu amb compte amb aquestes dades. No les compartiu mai amb ningú! your_token: El teu identificador d'accés auth: - agreement_html: En inscriure't, acceptes seguir els nostres termes del servei i la nostra política de privadesa. + agreement_html: Al fer clic en "Registre" acceptes respectar els nostres termes del servei i la nostra política de privadesa. change_password: Contrasenya confirm_email: Confirmar correu electrònic delete_account: Suprimeix el compte @@ -565,6 +580,7 @@ ca: resources: Recursos generic: changes_saved_msg: Els canvis s'han desat correctament! + copy: Copia save_changes: Desa els canvis validation_errors: one: Alguna cosa no va bé! Si us plau, revisa l'error @@ -906,8 +922,12 @@ ca: tips: Consells title: Benvingut a bord, %{name}! users: + follow_limit_reached: No pots seguir més de %{limit} persones invalid_email: L'adreça de correu no és correcta invalid_otp_token: El codi de dos factors no és correcte otp_lost_help_html: Si has perdut l'accés a tots dos pots contactar per %{email} seamless_external_login: Has iniciat sessió via un servei extern per tant els ajustos de contrasenya i correu electrònic no estan disponibles. signed_in_as: 'Sessió iniciada com a:' + verification: + explanation_html: 'Pots verificar-te com a propietari dels enllaços a les metadades del teu perfil. Per això, el lloc web enllaçat ha de contenir un enllaç al teu perfil de Mastodon. El vincle ha de tenir l''atribut rel="me". El contingut del text de l''enllaç no importa. Aquí tens un exemple:' + verification: Verificació diff --git a/config/locales/co.yml b/config/locales/co.yml index 7b810e2ed..9306c6c33 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -128,7 +128,7 @@ co: most_recent: Più ricente title: Urdine outbox_url: URL di l’outbox - perform_full_suspension: Fà una suspensione cumpleta + perform_full_suspension: Suspende profile_url: URL di u prufile promote: Prumove protocol: Prutucollu @@ -177,6 +177,7 @@ co: create_domain_block: "%{name} hà bluccatu u duminiu %{target}" create_email_domain_block: "%{name} hà messu u duminiu e-mail %{target} nant’a lista nera" demote_user: "%{name} hà ritrugradatu l’utilizatore %{target}" + destroy_custom_emoji: "%{name} hà sguassatu l'emoji %{target}" destroy_domain_block: "%{name} hà sbluccatu u duminiu %{target}" destroy_email_domain_block: "%{name} hà messu u duminiu e-mail %{target} nant’a lista bianca" destroy_status: "%{name} hà toltu u statutu di %{target}" @@ -262,6 +263,8 @@ co: title: Novu blucchime di duminiu reject_media: Righjittà i fugliali media reject_media_hint: Sguassa tutti i media caricati è ricusa caricamenti futuri. Inutile per una suspensione + reject_reports: Righjittà i rapporti + reject_reports_hint: Ignurà tutti i signalamenti chì venenu d'issu duminiu. Senz'oghjettu pè e suspensione severities: noop: Nisuna silence: Silenzà @@ -366,6 +369,9 @@ co: hero: desc_html: Affissatu nant’a pagina d’accolta. Ricumandemu almenu 600x100px. S’ellu ùn hè micca definiti, a vignetta di l’istanza sarà usata title: Ritrattu di cuprendula + mascot: + desc_html: Affissata nant'à parechje pagine. Almenu 293x205px ricumandatu. S'ella hè lasciata viota, a mascotta predefinita sarà utilizata + title: Ritrattu di a mascotta peers_api_enabled: desc_html: Indirizzi st’istanza hà vistu indè u fediverse title: Pubblicà a lista d’istanza cunnisciute @@ -574,6 +580,7 @@ co: resources: Risorze generic: changes_saved_msg: Cambiamenti salvati! + copy: Cupià save_changes: Salvà e mudificazione validation_errors: one: Qualcosa ùn và bè! Verificate u prublemu quì sottu @@ -915,6 +922,7 @@ co: tips: Cunsiglii title: Benvenutu·a, %{name}! users: + follow_limit_reached: Ùn pidete seguità più di %{limit} conti invalid_email: L’indirizzu e-mail ùn hè currettu invalid_otp_token: U codice d’identificazione ùn hè currettu otp_lost_help_html: S’è voi avete persu i dui, pudete cuntattà %{email} diff --git a/config/locales/cs.yml b/config/locales/cs.yml index c73c4fee1..05f65653b 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -16,7 +16,7 @@ cs:

Dobré místo pro pravidla

Rozšířený popis ještě nebyl nastaven.

features: - humane_approach_body: Mastodon, poučen z chyb jiných sociálních sítí, se snaží bojovat se zneužíváním sociálních sítí vytvářením etických možností. + humane_approach_body: Mastodon se učí z chyb jiných sociálních sítí a volením etických rozhodnutí při designu se snaží bojovat s jejich zneužíváním. humane_approach_title: Lidštější přístup not_a_product_body: Mastodon není komerční síť. Žádné reklamy, žádné dolování dat, žádné hranice. Žádná centrální autorita. not_a_product_title: Jste osoba, ne produkt @@ -25,7 +25,7 @@ cs: within_reach_body: Několik aplikací pro iOS, Android a jiné platformy vám díky jednoduchému API ekosystému dovolují držet krok s vašimi přáteli, ať už jste kdekoliv. within_reach_title: Vždy v dosahu generic_description: "%{domain} je jedním ze serverů v síti" - hosted_on: Mastodon hostovaný na %{domain} + hosted_on: Instance Mastodon na adrese %{domain} learn_more: Zjistit více other_instances: Seznam instancí privacy_policy: Zásady soukromí @@ -104,7 +104,7 @@ cs: title: Umístění login_status: Stav přihlášení media_attachments: Mediální přílohy - memorialize: Změnit na "in memoriam" + memorialize: Změnit na „in memoriam“ moderation: all: Vše silenced: Utišen/a @@ -120,7 +120,7 @@ cs: most_recent: Nejnovější title: Pořadí outbox_url: URL odchozích zpráv - perform_full_suspension: Provést plnou suspenzaci + perform_full_suspension: Suspendovat profile_url: URL profilu promote: Povýšit protocol: Protokol @@ -169,6 +169,7 @@ cs: create_domain_block: "%{name} zablokoval/a doménu %{target}" create_email_domain_block: "%{name} přidal/a e-mailovou doménu %{target} na černou listinu" demote_user: "%{name} degradoval/a uživatele %{target}" + destroy_custom_emoji: "%{name} zničil/a emoji %{target}" destroy_domain_block: "%{name} odblokoval/a doménu %{target}" destroy_email_domain_block: "%{name} odebral/a e-mailovou doménu %{target} z černé listiny" destroy_status: "%{name} odstranil/a příspěvek uživatele %{target}" @@ -177,7 +178,7 @@ cs: disable_user: "%{name} zakázal/a přihlašování pro uživatele %{target}" enable_custom_emoji: "%{name} povolil/a emoji %{target}" enable_user: "%{name} povolil/a přihlašování pro uživatele %{target}" - memorialize_account: '%{name} změnil/a účet %{target} na stránku "in memoriam"' + memorialize_account: "%{name} změnil/a účet %{target} na stránku „in memoriam“" promote_user: "%{name} povýšil/a uživatele %{target}" remove_avatar_user: "%{name} odstranil/a avatar uživatele %{target}" reopen_report: "%{name} znovuotevřel/a nahlášení %{target}" @@ -254,6 +255,8 @@ cs: title: Nová doménová blokace reject_media: Odmítat mediální soubory reject_media_hint: Odstraní lokálně uložené soubory a odmítne jejich stažení v budoucnosti. Irelevantní pro suspenzace + reject_reports: Odmítnout nahlášení + reject_reports_hint: Ignorovat všechna nahlášení pocházející z této domény. Nepodstatné pro suspenzace severities: noop: Žádné silence: Utišit @@ -354,8 +357,11 @@ cs: desc_html: Pozměnit vzhled pomocí šablony CSS načtené na každé stránce title: Vlastní CSS hero: - desc_html: Zobrazuje se na hlavní stránce. Doporučuje se rozlišení alespoň 600x100px. Pokud toto není nastavené, bude zobrazena miniatura instance + desc_html: Zobrazuje se na hlavní stránce. Doporučuje se rozlišení alespoň 600x100 px. Pokud toto není nastaveno, bude zobrazena miniatura instance title: Hlavní obrázek + mascot: + desc_html: Zobrazuje se na hlavní stránce. Doporučuje se rozlišení alespoň 293x205 px. Pokud toto není nastaveno, bude zobrazen výchozí maskot + title: Obrázek maskota peers_api_enabled: desc_html: Domény, na které tato instance narazila ve fediverse title: Zveřejnit seznam objevených instancí @@ -562,6 +568,7 @@ cs: resources: Zdroje generic: changes_saved_msg: Změny byly úspěšně uloženy! + copy: Kopírovat save_changes: Uložit změny validation_errors: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže imports: @@ -614,7 +621,7 @@ cs: mention: "%{name} vás zmínil/a v:" new_followers_summary: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Hurá! subject: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418" - title: Ve vaší absenci... + title: Ve vaší nepřítomnosti... favourite: body: 'Váš příspěvek si oblíbil/a %{name}:' subject: "%{name} si oblíbil/a váš příspěvek" @@ -745,7 +752,7 @@ cs: reblog: Nelze připnout boostnutí show_more: Zobrazit více sign_in_to_participate: Chcete-li se účastnit této konverzace, přihlaste se - title: '%{name}: "%{quote}"' + title: "%{name}: „%{quote}“" visibilities: private: Pouze pro sledovatele private_long: Zobrazit pouze sledovatelům @@ -764,7 +771,7 @@ cs:
  • Základní informace o účtu: Pokud se na tomto serveru zaregistrujete, můžeme vás požádat o zadání uživatelského jména, e-mailové adresy a hesla. Můžete také zadat dodatečné profilové informace, jako například zobrazované jméno a krátký životopis, a nahrát si profilovou fotografii a hlavičkový obrázek. Uživatelské i zobrazované jméno, životopis, profilová fotografie a hlavičkový obrázek jsou vždy uvedeny veřejně.
  • -
  • Příspěvky, sledovatelé a další veřejné informace: Seznam lidí, které sledujete, je uveden veřejně, totéž platí i pro vaše sledovatele. Když sem nahrajete zprávu, bude uloženo datum a čas, společně s aplikací, ze které jste zprávu odeslali. Zprávy mohou obsahovat mediální přílohy, jako jsou obrázky a videa. Veřejné a nezobrazované příspěvky jsou dostupné veřejně. Pokud na vašem profilu uvedete příspěvek, je to také veřejně dostupná informace. Vaše příspěvky jsou doručeny vašim sledovatelům, což v některých případech znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Pokud příspěvky smažete, bude tohle taktéž doručeno vašim sledovatelům. Akce znovusdílení nebo oblíbení jiného příspěvku je vždy veřejná.
  • +
  • Příspěvky, sledovatelé a další veřejné informace: Seznam lidí, které sledujete, je uveden veřejně, totéž platí i pro vaše sledovatele. Když sem nahrajete zprávu, bude uloženo datum a čas, společně s aplikací, ze které jste zprávu odeslali. Zprávy mohou obsahovat mediální přílohy, jako jsou obrázky a videa. Veřejné a neuvedené příspěvky jsou dostupné veřejně. Pokud na vašem profilu uvedete příspěvek, je to také veřejně dostupná informace. Vaše příspěvky jsou doručeny vašim sledovatelům, což v některých případech znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Pokud příspěvky smažete, bude tohle taktéž doručeno vašim sledovatelům. Akce znovusdílení nebo oblíbení jiného příspěvku je vždy veřejná.
  • Příspěvky přímé a pouze pro sledovatele: Všechny příspěvky jsou uloženy a zpracovány na serveru. Příspěvky pouze pro sledovatele jsou doručeny vašim sledovatelům a uživateům v nich zmíněných a přímé příspěvky jsou doručeny pouze uživatelům v nich zmíněných. V některých případech tohle znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Snažíme se omezit přístup k těmto příspěvkům pouze na autorizované uživatele, ovšem jiné servery tak nemusejí učinit. Proto je důležité posoudit servery, ke kterým vaši sledovatelé patří. V nastavení si můžete zapnout volbu pro manuální schvalování či odmítnutí nových sledovatelů. Prosím mějte na paměti, že operátoři tohoto serveru a kteréhokoliv přijímacího serveru mohou tyto zprávy vidět a příjemci mohou vytvořit jejich snímek, zkopírovat je, nebo je jinak sdílet. Nesdílejte přes Mastodon jakékoliv nebezpečné informace.
  • IP adresy a další metadata: Když se přihlásíte, zaznamenáváme IP adresu, ze které se přihlašujete, jakožto i název vašeho webového prohlížeče. Všechny vaše webové relace jsou v nastavení přístupné k vašemu posouzení a odvolání. Nejpozdější IP adresa použita je uložena maximálně do 12 měsíců. Můžeme také uchovávat serverové záznamy, které obsahují IP adresy každého požadavku odeslaného na náš server.
@@ -824,7 +831,7 @@ cs:

Používání stránky dětmi

-

Pokud se tento server nachází v EU nebo EHP: Naše stránka, produkty a služby jsou všechny směřovány na lidi, kterým je alespoň 16 let. Pokud je vám méně než 16, dle požadavků nařízení GDPR (Obecné nařízení o ochě sobních údajů) tuto stránku nepoužívejte.

+

Pokud se tento server nachází v EU nebo EHP: Naše stránka, produkty a služby jsou všechny směřovány na lidi, kterým je alespoň 16 let. Pokud je vám méně než 16, dle požadavků nařízení GDPR (Obecné nařízení o ochraně sobních údajů) tuto stránku nepoužívejte.

Pokud se tento server nachází v USA: Naše stránka, produkty a služby jsou všechny směřovány na lidi, kterým je alespoň 13 let. Pokud je vám méně než 13, dle požadavků zákona COPPA (Children's Online Privacy Protection Act) tuto stránku nepoužívejte.

@@ -836,7 +843,7 @@ cs:

Rozhodneme-li se naše zásady soukromí změnit, zveřejníme tyto změny na této stránce.

-

Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 7 března 2018.

+

Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 7. března 2018.

Původně adaptováno ze zásad soukromí Discourse.

title: Podmínky používání a zásady soukromí %{instance} @@ -874,13 +881,13 @@ cs: edit_profile_step: Můžete si přizpůsobit svůj profil nahráním avataru a obrázku na hlavičce, změnou zobrazovaného jména a dalších. Chcete-li posoudit nové sledovatele předtím, než vás mohou sledovat, můžete svůj účet uzamknout. explanation: Zde je pár tipů na začátek final_action: Začněte přispívat - final_step: 'Začněte psát! I když nemáte sledovatele, mohou vaše zprávy vidět jiní lidé, například na místní časové ose a mezi hashtagy. Můžete se ostatním představit pomocí hashtagu #introductions.' + final_step: 'Začněte přispívat! I když nemáte sledovatele, mohou vaše zprávy vidět jiní lidé, například na místní časové ose a mezi hashtagy. Můžete se ostatním představit pomocí hashtagu #introductions.' full_handle: Vaše celá adresa profilu full_handle_hint: Tohle je, co byste řekl/a svým přátelům, aby vám mohli posílat zprávy nebo vás sledovat z jiné instance. review_preferences_action: Změnit nastavení review_preferences_step: Nezapomeňte si nastavit své volby, například jaké e-maily chcete přijímat či jak soukromé mají být vaše příspěvky ve výchozím stavu. Nemáte-li epilepsii, můžete si nastavit automatické přehrávání obrázků GIF. subject: Vítejte na Mastodonu - tip_bridge_html: Pokud přicházíte z Twitteru, můžete najít vaše přátele na Mastodonu pomocí mostové aplikace. Funguje ovšem pouze, pokud ji oni někdy také použili! + tip_bridge_html: Pokud přicházíte z Twitteru, můžete najít vaše přátele na Mastodonu pomocí mostové aplikace. Funguje ovšem pouze, pokud ji oni také někdy použili! tip_federated_timeline: Federovaná časová osa je náhled celé sítě Mastodon. Zahrnuje ovšem pouze lidi, které sledují vaši sousedé, takže není úplná. tip_following: Administrátora/y serveru sledujete automaticky. Chcete-li najít další zajímavé lidi, podívejte se na místní a federované časové osy. tip_local_timeline: Místní časová osa je náhled lidí na %{instance}. Toto jsou vaši nejbližší sousedé! @@ -888,6 +895,7 @@ cs: tips: Tipy title: Vítejte na palubě, %{name}! users: + follow_limit_reached: Nemůžete sledovat více než %{limit} lidí invalid_email: E-mailová adresa je neplatná invalid_otp_token: Neplatný kód pro dvoufaktorovou autentikaci otp_lost_help_html: Pokud jste ztratil/a přístup k oběma, můžete se spojit %{email} diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 3bf256ac5..a4df28b61 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1,13 +1,13 @@ --- cy: about: - about_hashtag_html: Dyma dŵtiau cyhoeddus wedi eu tagio gyda #%{hashtag}. Gallwch ryngweithio gyda nhw os oes gennych gyfrif yn unrhyw le yn y bydysawd. + about_hashtag_html: Dyma dŵtiau cyhoeddus wedi eu tagio gyda #%{hashtag}. Gallwch ryngweithio gyda nhw os oes gennych gyfrif yn unrhyw le yn y ffeddysawd. about_mastodon_html: Mae Mastodon yn rwydwaith cymdeithasol sy'n seiliedig ar brotocolau gwe a meddalwedd cod agored rhad ac am ddim. Yn debyg i e-bost mae'n ddatganoledig. about_this: Ynghylch administered_by: 'Gweinyddir gan:' api: API apps: Apiau symudol - closed_registrations: '' + closed_registrations: Mae cofrestru wedi cau ar yr achos hwn ar hyn o bryd. Fodd bynnag, mae modd ffeindio achos arall er mwyn creu cyfrif arno a chael mynediad at union yr un rhwydwaith o'r man hwnnw. contact: Cyswllt contact_missing: Heb ei osod contact_unavailable: Ddim yn berthnasol @@ -18,20 +18,20 @@ cy: features: humane_approach_body: Gan ddysgu o fethiannau rhwydweithiau eraill, mae Mastodon yn anelu i wneud penderfyniadau dylunio moesol i ymladd camddefnydd o gyfryngau cymdeithasol. humane_approach_title: Agwedd fwy dynol - not_a_product_body: Nid yw Mastodon yn rhwydwaith fasnachol. Nid oes hysbysebion, cloddio data na gerddi caeedig. Nid oes awdurdod canolog. - not_a_product_title: Rwyt yn berson, nid yn gynnyrch + not_a_product_body: Nid yw Mastodon yn rwydwaith masnachol. Nid oes hysbysebion, cloddio data na gerddi caeedig. Nid oes awdurdod canolog. + not_a_product_title: Rwyt yn berson, nid yn beth real_conversation_body: Gyda'r modd i ddefnyddio hyd at 500 o nodau a chefnogaeth ar gyfer cynnwys gronynnol a rhybuddion cyfryngau, mae modd i chi fynegi'ch hun yn y ffordd yr hoffech chi. real_conversation_title: Wedi ei adeiladu ar gyfer sgyrsiau go iawn within_reach_body: Nifer o apiau ar gyfer iOS, Android, a nifer blatfformau eraill diolch i amgylchedd API hygyrch i ddatblygwyr sy'n caniatau i chi gadw mewn cysylltiad a'ch ffrindiau o unrhywle. within_reach_title: Bob tro o fewn gafael generic_description: Mae %{domain} yn un gweinydd yn y rhwydwaith hosted_on: Mastodon wedi ei weinyddu ar %{domain} - learn_more: Dysgwch fwy + learn_more: Dysu mwy other_instances: Rhestr achosion privacy_policy: Polisi preifatrwydd source_code: Cod ffynhonnell status_count_after: statws - status_count_before: Pwy ysgrifennodd + status_count_before: Ysgriffennwyd gan terms: Telerau gwasanaeth user_count_after: defnyddwyr user_count_before: Cartref i @@ -42,6 +42,7 @@ cy: followers: Dilynwyr following: Yn dilyn joined: Ymunodd %{date} + link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date} media: Cyfryngau moved_html: 'Mae %{name} wedi symud i %{new_profile_link}:' network_hidden: Nid yw'r wybodaeth hyn ar gael @@ -53,7 +54,7 @@ cy: posts: Tŵtiau posts_tab_heading: Tŵtiau posts_with_replies: Tŵtiau ac atebion - reserved_username: Mae'r enw defnyddior yn neilltuedig + reserved_username: Mae'r enw defnyddiwr ar gadw roles: admin: Gweinyddwr bot: Bot @@ -70,7 +71,7 @@ cy: avatar: Afatar by_domain: Parth change_email: - changed_msg: E-bost cyfri wedi ei newid yn llwyddiannus! + changed_msg: E-bost cyfrif wedi ei newid yn llwyddiannus! current_email: E-bost Cyfredol label: Newid E-bost new_email: E-bost Newydd @@ -112,20 +113,21 @@ cy: moderation_notes: Nodiadau cymedroli most_recent_activity: Gweithgarwch diweddaraf most_recent_ip: IP diweddaraf + no_limits_imposed: Dim terfynau wedi'i gosod not_subscribed: Heb danysgrifio order: alphabetic: Allfabetig - most_recent: Mwyaf diweddaraf - title: Trefn + most_recent: Diweddaraf + title: Trefnu outbox_url: Allflwch URL - perform_full_suspension: Ataliwch yn llwyr + perform_full_suspension: Atal profile_url: URL proffil promote: Hyrwyddo protocol: Protocol public: Cyhoeddus push_subscription_expires: Tanysgrifiad PuSH yn dod i ben - redownload: Adnewyddwch afatar - remove_avatar: Dilëwch afatar + redownload: Adnewyddu afatar + remove_avatar: Dileu afatar resend_confirmation: already_confirmed: Mae'r defnyddiwr hwn wedi ei gadarnhau yn barod send: Ailanfonwch e-bost cadarnhad @@ -147,8 +149,10 @@ cy: report: adrodd targeted_reports: Adroddiadau am y cyfri hwn silence: Tawelu + silenced: Tawelwyd statuses: Statysau subscribe: Tanysgrifio + suspended: Ataliwyd title: Cyfrifon unconfirmed_email: E-bost heb ei gadarnhau undo_silenced: Dadwneud tawelu @@ -165,7 +169,9 @@ cy: create_domain_block: Blociodd %{name} y parth %{target} create_email_domain_block: Cosbrestrwyd parth e-bost %{target} gan %{name} demote_user: Diraddiodd %{name} y defnyddiwr %{target} + destroy_custom_emoji: Dinistriodd %{name} emoji %{target} destroy_domain_block: Dadflociodd %{name} y parth %{target} + destroy_email_domain_block: Gwynrestrodd %{name} parth e-bost %{target} destroy_status: Cafodd %{name} wared ar statws gan %{target} disable_2fa_user: Diffoddodd %{name} ar ofyniad dau gam ar gyfer y defnyddiwr %{target} disable_custom_emoji: Diffoddodd %{name} emoji %{target} @@ -194,23 +200,24 @@ cy: copy_failed_msg: Methwyd i greu copi lleol o'r emoji hwnnw created_msg: Llwyddwyd i greu emoji! delete: Dileu - destroyed_msg: Llwyddwyd i ddinistrio emoji! + destroyed_msg: Llwyddwyd i ddinistrio emojo! disable: Diffodd - disabled_msg: Llwyddwyd i ddiffodd ye emoji hwnnw + disabled_msg: Llwyddwyd i ddiffodd yr emoji hwnnw emoji: Emoji enable: Galluogi - enabled_msg: Llwyddwyd i ganiatau yr emoji hwnnw + enabled_msg: Llwyddwyd i alluogi yr emoji hwnnw image_hint: PNG hyd at 50KB listed: Rhestredig new: title: Ychwanegu emoji personol newydd overwrite: Trosysgrifio + shortcode: Byrgod shortcode_hint: O leiaf 2 nodyn, dim ond nodau alffaniwmerig a tanlinellau - title: Emoji personol - unlisted: Heb ei restru - update_failed_msg: Ni allwyd diweddaru'r emoji hwnnw + title: Emoji unigryw + unlisted: Heb eu rhestru + update_failed_msg: Methwyd a diweddaru'r emoji hwnnw updated_msg: Llwyddwyd i ddiweddaru'r emoji! - upload: Lanlwytho + upload: Uwchlwytho dashboard: backlog: tasgau heb eu cwblhau config: Cyfluniad @@ -219,7 +226,7 @@ cy: feature_registrations: Cofrestriadau feature_relay: Relái ffederasiwn features: Nodweddion - hidden_service: Ffedarasiwn a gwasanaethau cudd + hidden_service: Ffederasiwn a gwasanaethau cudd open_reports: adroddiadau agored recent_users: Defnyddwyr diweddar search: Chwilio testun llawn @@ -245,12 +252,14 @@ cy: noop: Dim silence: Tawelwch suspend: Atal - title: Bloc parth newydd + title: Blocio parth newydd reject_media: Gwrthod dogfennau cyfryngau reject_media_hint: Dileu dogfennau cyfryngau wedi eu cadw yn lleol ac yn gwrthod i lawrlwytho unrhyw rai yn y dyfodol. Amherthnasol i ataliadau + reject_reports: Gwrthod adroddiadau + reject_reports_hint: Anwybyddu'r holl adroddiadau sy'n dod o'r parth hwn. Amherthnasol i ataliadau severities: noop: Dim - silence: Tawelwch + silence: Tawelu suspend: Atal severity: Difrifoldeb show: @@ -258,7 +267,7 @@ cy: retroactive: silence: Dad-dawelu pob cyfri presennol o'r parth hwn suspend: Dad-atal pob cyfrif o'r parth hwn sy'n bodoli - title: Dadwneud bloc parth ar gyfer %{domain} + title: Dadwneud blocio parth ar gyfer %{domain} undo: Dadwneud title: Blociau parth undo: Dadwneud @@ -273,12 +282,13 @@ cy: title: Cofnod newydd yng nghosbrestr e-byst title: Cosbrestr e-bost instances: - account_count: Cyfrifon hysbys + account_count: Cyfrifau hysbys domain_name: Parth reset: Ailosod search: Chwilio title: Achosion hysbys invites: + deactivate_all: Diffodd pob un filter: all: Pob available: Ar gael @@ -287,11 +297,19 @@ cy: title: Gwahoddiadau relays: add_new: Ychwanegau relái newydd + delete: Dileu + description_html: Mae relái ffederasiwn yn weinydd ganol sy'n cyfnewid niferoedd ucheol o dŵtiau cyhoeddus rhwng gweinyddwyr sydd wedi tanysgrifio ac yn cyhoeddi iddo. Gall helpu weinyddwyr bach a cymhedrol eu maint i ddarganfod cynnwys o'r ffedysawd, fel arall bydd gofyn ara ddefnyddwyr lleol yn dilyn unigolion ar weinyddwyr eraill a llaw. + disable: Diffodd + disabled: Wedi'i ddiffodd + enable: Galluogi + enable_hint: Unwaith y bydd wedi ei alluogi, bydd eich gweinydd yn tanysgrifio i holl dŵtiau cyhoeddus o'r relai hwn, ac yn dechrau anfon tŵtiau y gweinydd hwn ato. + enabled: Wedi ei alluogi inbox_url: URL relái pending: Aros am gymeradywaeth i'r relái save_and_enable: Cadw a galluogi setup: Sefydlu cysylltiad relái status: Statws + title: Cyfnewidwyr report_notes: created_msg: Llwyddwyd i greu nodyn adroddiad! destroyed_msg: Llwyddwyd i ddileu nodyn adroddiad! @@ -299,23 +317,24 @@ cy: account: note: nodyn report: adroddiad - action_taken_by: Gwnathpwyd hyn gan + action_taken_by: Gwnaethpwyd hyn gan are_you_sure: Ydych chi'n sicr? assign_to_self: Aseinio i mi assigned: Cymedrolwr wedi'i aseinio comment: none: Dim created_at: Adroddwyd - mark_as_resolved: Nodwch wedi ei ddatrys - mark_as_unresolved: Nodwch heb ei ddatrys + mark_as_resolved: Nodi fel wedi'i ddatrys + mark_as_unresolved: Nodi fel heb ei ddatrys notes: - create: Ychwanegwch nodyn - create_and_resolve: Datruswch a nodyn - create_and_unresolve: Ailagorwch a nodyn - delete: Dilëwch + create: Ychwanegu nodyn + create_and_resolve: Datrys gyda nodyn + create_and_unresolve: Ailagor gyda nodyn + delete: Dileu placeholder: Disgrifiwch pa weithredoedd sydd wedi eu cymryd, neu unrhyw ddiweddariadau eraill... - reopen: Ailagorwch adroddiad + reopen: Ailagor adroddiad report: 'Adroddiad #%{id}' + reported_account: Cyfrif wedi ei adrodd reported_by: Adroddwyd gan resolved: Wedi ei ddatrys resolved_msg: Llwyddwyd i ddatrys yr adroddiad! @@ -326,41 +345,66 @@ cy: updated_at: Diweddarwyd settings: activity_api_enabled: - title: Cyhoeddwch ystatedgau agregau am weithgaredd defnyddwyr + desc_html: Niferoedd o statysau wedi eu postio'n lleol, defnyddwyr gweithredol, a cofrestradau newydd mewn bwcedi wythnosol + title: Cyhoeddi ystatedgau cyfangronedig am weithgaredd defnyddwyr bootstrap_timeline_accounts: + desc_html: Gwahanu sawl enw defnyddiwr a coma. Dim ond cyfrifoedd lleol a cyfrifoedd heb eu cloi fydd yn gweithio. Tra bod yn aros yn wag yr hyn sy'n rhagosodedig yw'r holl weinyddwyr lleol. title: Dilyn diofyn i ddefnyddwyr newydd contact_information: email: E-bost busnes username: Enw defnyddiwr cyswllt custom_css: - desc_html: Addaswch wedd gyda CSS wedi lwytho ar bob tudalen + desc_html: Addasu gwedd gyda CSS wedi lwytho ar bob tudalen + title: CSS wedi'i addasu hero: desc_html: Yn cael ei arddangos ar y dudadlen flaen. Awgrymir 600x100px oleia. Pan nad yw wedi ei osod, mae'n ymddangos fel mân-lun yr achos title: Delwedd arwr + mascot: + desc_html: I'w arddangos ar nifer o dudalennau. Awgrymir 293x205px o leiaf. Pan nad yw wedi ei osod, cwympo nôl i'r mascot rhagosodedig + title: Llun mascot peers_api_enabled: desc_html: Enwau parth y mae'r achos hwn wedi dod ar ei draws yn y ffedysawd title: Cyhoeddi rhestr o achosion dargynfyddiedig + preview_sensitive_media: + desc_html: Bydd rhagolygon ar wefannau eraill yn dangos ciplun hyd yn oed os oes na gyfryngau wedi eu marcio'n sensitif + title: Dangos cyfryngau sensitif mewn rhagolygon OpenGraph registrations: + closed_message: + desc_html: I'w arddangos ar y dudalen flaen wedi i gofrestru cau. Mae modd defnyddio tagiau HTML + title: Neges gofrestru caeëdig deletion: - desc_html: Caniatewch i unrhywun i ddileu eu cyfrif + desc_html: Caniatau i unrhywun i ddileu eu cyfrif + title: Agor dileu cyfrif min_invite_role: disabled: Neb - title: Caniatewch wahoddiadau gan + title: Caniatau gwahoddiadau gan open: - desc_html: Caniatewch i unrhywun greu cyfrif - title: Agorwch cofrestru + desc_html: Caniatau i unrhywun greu cyfrif + title: Agor cofrestru + show_known_fediverse_at_about_page: + desc_html: Wedi'i ddewis, bydd yn dangos rhagolwg o dŵtiau o'r holl ffedysawd. Fel arall bydd ond yn dangos tŵtiau lleol. + title: Dangos ffedysawd hysbys ar ragolwg y ffrwd show_staff_badge: + desc_html: Dangos bathodyn staff ar dudalen defnyddiwr title: Dangos bathodyn staff site_description: + desc_html: Paragraff agoriadol ar y dudalen flaen. Disgrifiwch yr hyn sy'n arbennig am y gweinydd Mastodon hwn ac unrhywbeth arall o bwys. Mae modd defnyddio tagiau HTML <a> a <em>. title: Disgrifiad achos site_description_extended: - desc_html: Lle da ar gyfer eich côd ymddygiad, rheolau, canllawiau a phethau eraill sy'n gwneud eich achos yn whanol. Mae modd i chi ddefnyddio tagiau HTML + desc_html: Lle da ar gyfer eich cod ymddygiad, rheolau, canllawiau a phethau eraill sy'n gwneud eich achos yn whanol. Mae modd i chi ddefnyddio tagiau HTML + title: Gwybodaeth bellach wedi ei addasu site_short_description: + desc_html: Yn cael ei ddangos yn bar ar yr ochr a tagiau meto. Digrifiwch beth yw Mastodon a beth sy'n gwneud y gweinydd hwn mewn un paragraff. Os yn wag, wedi ei ragosod i ddangos i disgrifiad yr achos. title: Disgrifiad byr o'r achos + site_terms: + desc_html: Mae modd i chi ysgrifennu polisi preifatrwydd, termau gwasanaeth a cyfreitheg arall eich hun. Mae modd defnyddio tagiau HTML + title: Termau gwasanaeth wedi eu haddasu site_title: Enw'r achos thumbnail: + desc_html: Ceith ei ddefnyddio ar gyfer rhagolygon drwy OpenGraph a'r API. Argymhellir 1200x630px title: Mân-lun yr achos timeline_preview: + desc_html: Dangos ffrwd gyhoeddus ar y dudalen lanio title: Rhagolwg o'r ffrwd title: Gosodiadau'r wefan statuses: @@ -374,33 +418,44 @@ cy: title: Cyfryngau no_media: Dim cyfryngau no_status_selected: Ni newidwyd dim statws achos ni ddewiswyd dim un + title: Statysau cyfrif with_media: A chyfryngau subscriptions: + callback_url: URL galw-nôl confirmed: Wedi'i gadarnhau expires_in: Dod i ben ymhen + last_delivery: Danfoniad diwethaf title: WebSub topic: Pwnc suspensions: + bad_acct_msg: Nid yw'r gwerthoedd cadarnhau yn cyfateb. Ydych chi'n atal y cyfrif cywir? + hint_html: 'I gadarnhau atal y cyfrif, mewnbynwch %{value} yn y maes isod:' proceed: Parhau + title: Atal %{acct} + warning_html: 'Mi fydd atal y cyfrif hwn yn dileu data am byth o''r cyfrif hwn, gan gynnwys:' title: Gweinyddiaeth admin_mailer: new_report: body: Mae %{reporter} wedi cwyno am %{target} - body_remote: Mae rhywun o %{domain} wedi cwyno . am %{target} + body_remote: Mae rhywun o %{domain} wedi cwyno am %{target} subject: Cwyn newydd am %{instance} {#%{id}} application_mailer: notification_preferences: Newid gosodiadau e-bost salutation: "%{name}," + settings: 'Newid gosodiadau e-bost: %{link}' + view: 'Gweld:' view_profile: Gweld proffil view_status: Gweld statws applications: created: Cais wedi ei greu'n llwyddiannus destroyed: Cais wedi ei ddileu'n llwyddiannus + invalid_url: Mae'r URL a ddarparwyd yn annilys regenerate_token: Adfywio tocyn mynediad token_regenerated: Adfywiwyd y tocyn mynediad yn llwyddiannus warning: Byddwch yn ofalus a'r data hyn. Peidiwch a'i rannu byth! your_token: Eich tocyn mynediad auth: + agreement_html: Wrth glicio "Cofrestru" isod yr ydych yn cytuno i ddilyn y rheolau ar gyfer yr achos hwn a ein termau gwasanaeth. change_password: Cyfrinair confirm_email: Cadarnhau e-bost delete_account: Dileu cyfrif @@ -408,8 +463,8 @@ cy: didnt_get_confirmation: Heb dderbyn cyfarwyddiadau cadarnhau? forgot_password: Wedi anghofio'ch cyfrinair? invalid_reset_password_token: Tocyn ailosod cyfrinair yn annilys neu wedi dod i ben. Gwnewch gais am un newydd os gwelwch yn dda. - login: Mewngofnodwch - logout: Allgofnodwch + login: Mewngofnodi + logout: Allgofnodi migrate_account: Symud i gyfrif gwahanol migrate_account_html: Os hoffech chi ailgyfeirio'r cyfrif hwn at un gwahanol, mae modd ei ffurfweddu yma. or: neu @@ -417,42 +472,45 @@ cy: providers: cas: CAS saml: SAML - register: Cofrestrwch - register_elsewhere: Cofrestrwch ar weinydd gwahanol + register: Cofrestru + register_elsewhere: Cofrestru ar weinydd gwahanol resend_confirmation: Ailanfon cyfarwyddiadau cadarnhau - reset_password: Ailosodwch eich cyfrinair + reset_password: Ailosod cyfrinair security: Diogelwch - set_new_password: Gosodwch gyfrinair newydd + set_new_password: Gosod cyfrinair newydd authorize_follow: already_following: Yr ydych yn dilyn y cyfrif hwn yn barod error: Yn anffodus, roedd gwall tra'n edrych am y cyfrif anghysbell - follow: Dilynwch + follow: Dilyn follow_request: 'Yr ydych wedi anfon cais dilyn at:' following: 'Llwyddiant! Yr ydych yn awr yn dilyn:' post_follow: close: Neu, gallwch gau'r ffenest hon. - return: Dangoswch broffil y defnyddiwr + return: Dangos proffil y defnyddiwr web: I'r wê - title: Dilynwch %{acct} + title: Dilyn %{acct} datetime: distance_in_words: - about_x_hours: "%{count}h" - about_x_months: "%{count}mo" - about_x_years: "%{count}y" - almost_x_years: "%{count}y" + about_x_hours: "%{count}awr" + about_x_months: "%{count}mis" + about_x_years: "%{count}blwyddyn" + almost_x_years: "%{count}blwyddyn" half_a_minute: Newydd fod less_than_x_minutes: "%{count}m" less_than_x_seconds: Newydd fod - over_x_years: "%{count}y" - x_days: "%{count}d" + over_x_years: "%{count}blwyddyn" + x_days: "%{count}dydd" x_minutes: "%{count}m" - x_months: "%{count}mo" - x_seconds: "%{count}s" + x_months: "%{count}mis" + x_seconds: "%{count}eiliad" deletes: bad_password_msg: Go dda, hacwyr! Cyfrinair anghywir confirm_password: Mewnbynnwch eich cyfrinair presennol i gadarnhau mai chi sydd yno + description_html: Bydd hyn yn cael gwared ar gynnwys o'ch cyfrif am byth heb fodd i'w adfer ac yn diffodd y cyfrif. Caiff eich eich enw defnyddiwr ei gadw i atal unrhyw ddynwarediadau yn y dyfodol. proceed: Dileu cyfrif success_msg: Llwyddwyd i ddileu eich cyfrif + warning_html: Dim ond dileu cynnwys o'r achos hwn ellid bod yn sicr ei fod wedi ei ddileu. Mae cynnwys sydd wedi ei rannu'n eang yn debygol o adael olion. Ni fydd gweinyddwyr all-lein a gweinyddwyr sydd wedi dad-danysgrifio o'ch diwedderiadau ddim yn diweddaru eu cronfeydd data. + warning_title: Argaeledd cynnwys wedi'i rannu errors: '403': Nid oes gennych ganiatad i weld y dudalen hon. '404': Nid yw'r dudalen yr oeddech yn chwilio amdani'n bodoli. @@ -460,19 +518,24 @@ cy: '422': content: Methwyd i ddilysu diogelwch. A ydych chi'n blocio cwcîs? title: Methwyd i ddilysu diogelwch + '429': Crogwyd '500': content: Mae'n ddrwg gennym ni, ond fe aeth rhywbeth o'i le ar ein rhan ni. title: Nid yw'r dudalen hon yn gywir - noscript_html: I ddefnyddio ap gwê Mastodon, caniatewch JavaScript os gwlwch yn dda. Fel arall, gallwch drio un o'r apiau cynhenid ar gyfer Mastodon ar eich platfform. + noscript_html: I ddefnyddio ap gwe Mastodon, galluogwch JavaScript os gwlwch yn dda. Fel arall, gallwch drio un o'r apiau cynhenid ar gyfer Mastodon ar eich platfform. exports: archive_takeout: date: Dyddiad - download: Lawrlwythwch eich archif + download: Lawrlwytho eich archif + hint_html: Mae modd gwneud cais am archif o'ch twtiau a'ch cyfryngau. Bydd y data sy'n cael ei allforio ar fformat ActivityPub, a ellir ei ddarllen gyda unrhyw feddalwaedd sy'n cydymffurfio. Mae modd gwneud cais am archif bob 7 diwrnod. + in_progress: Cyfansoddi eich archif... + request: Gwneud cais am eich archif size: Maint blocks: Yr ydych yn blocio csv: CSV follows: Yr ydych yn dilyn mutes: Yr ydych yn tawelu + storage: Storio cyfryngau filters: contexts: home: Ffrwd gartref @@ -481,6 +544,9 @@ cy: thread: Sgyrsiau edit: title: Golygu hidlydd + errors: + invalid_context: Dim cyd-destun neu cyd-destun annilys wedi ei ddarparu + invalid_irreversible: Mae hidlo anadferadwy ond yn gweithio yng nghyd-destun cartref neu hysbysiadau index: delete: Dileu title: Hidlyddion @@ -488,8 +554,13 @@ cy: title: Ychwanegu hidlydd newydd followers: domain: Parth + explanation_html: Os ydych am sicrhau preifatrwydd eich tŵtiau, rhaid i chi fod yn ymwybodol o bwy sy'n eich dilyn. Mae eich tŵtiau preifat yn cael eu hanfon at bob achos lle mae gennych ddilynwyr. Efallai hoffech chi i'w hadolygu o bryd i'w gilydd, a chael gwared ar ddilynwyr os nad ydych yn credu i'r staff neu'r meddalwedd ar yr achosion hynny barchu eich preifatrwydd. followers_count: Nifer y dilynwyr - lock_link: Cloi eich cyfri + lock_link: Cloi eich cyfrif + purge: Dileu o dilynwyr + success: Yn y broses o ysgafn-flocio dilynwyr o %{count} parth... + true_privacy_html: Cofiwch mai ond amgryptio pen-i-ben all sicrhau gwir breifatrwydd. + unlocked_warning_html: Gall unrhywun eich dilyn yn syth i weld eich tŵtiau preifat. %{lock_link} i gael adolygu a gwrthod dilynwyr. unlocked_warning_title: Nid yw eich cyfrif wedi ei gloi footer: developers: Datblygwyr @@ -497,61 +568,339 @@ cy: resources: Adnoddau generic: changes_saved_msg: Llwyddwyd i gadw y newidiadau! + copy: Copïo save_changes: Cadw newidiadau validation_errors: Mae rhywbeth o'i le o hyd! Edrychwch ar y %{count} gwall isod os gwelwch yn dda imports: preface: Mae modd mewnforio data yr ydych wedi allforio o achos arall, megis rhestr o bobl yr ydych yn ei ddilyn neu yn blocio. - success: Uwchlwyddwyd eich data yn llwyddiannus ac fe fydd yn cael ei brosesu mewn da bryd + success: Uwchlwythwyd eich data yn llwyddiannus ac fe fydd yn cael ei brosesu mewn da bryd types: blocking: Rhestr blocio following: Rhestr dilyn muting: Rhestr tawelu upload: Uwchlwytho - in_memoriam_html: '' + in_memoriam_html: In Memoriam. invites: delete: Dadactifadu + expired: Wedi darfod expires_in: + '1800': 30 munud + '21600': 6 awr + '3600': 1 awr + '43200': 12 awr + '604800': 1 wythnos '86400': 1 dydd + expires_in_prompt: Byth + generate: Cynhyrchu + invited_by: 'Cawsoch eich gwahodd gan:' + max_uses: "%{count} defnydd" max_uses_prompt: Dim terfyn prompt: Cynhyrchwch a rhannwch ddolenni gyda eraill i ganiatau mynediad i'r achos hwn table: + expires_at: Darfod ar uses: Defnyddiau + title: Gwahodd pobl + lists: + errors: + limit: Yr ydych wedi cyrraedd uchafswm nifer y rhestrau posib + media_attachments: + validations: + images_and_video: Ni ellir ychwanegu fideo at statws sy'n cynnwys delweddau'n barod + too_many: Ni ellir ychwanegu mwy na 4 dogfen migrations: - currently_redirecting: '' + acct: enwdefnyddiwr@parth y cyfrif newydd + currently_redirecting: 'Mae eich proffil wedi ei osod i ailgyfeirio i:' proceed: Cadw + updated_msg: Diweddarwyd gosodiad mudo eich cyfrif yn llwyddiannus! moderation: title: Cymedroli notification_mailer: + digest: + action: Gweld holl hysbysiadau + body: Dyma grynodeb byr o'r holl negeseuon golloch chi ers eich ymweliad diwethaf ar %{since} + mention: 'Soniodd %{name} amdanoch chi:' + new_followers_summary: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! + subject: "%{count} hysbysiad newydd ers eich ymweliad diwethaf \U0001F418" + title: Yn eich absenoldeb... favourite: + body: 'Cafodd eich statws ei hoffi gan %{name}:' + subject: Hoffodd %{name} eich statws title: Ffefryn newydd + follow: + body: Mae %{name} bellach yn eich dilyn! + subject: Mae %{name} bellach yn eich dilyn + title: Dilynwr newydd + follow_request: + action: Rheoli ceisiadau dilyn + body: Mae %{name} wedi gwneud cais i'ch dilyn + subject: 'Dilynwr yn aros: %{name}' + title: Cais dilynwr newydd mention: action: Ateb + body: 'Caswoch eich sôn amdano gan %{name} yn:' + subject: Cawsoch eich sôn amdano gan %{name} + title: Crywbylliad newydd + reblog: + body: 'Cafodd eich statws ei fŵstio gan %{name}:' + subject: Bŵstiodd %{name} eich statws + title: Hwb newydd + number: + human: + decimal_units: + format: "%n%u" + units: + billion: B + million: M + quadrillion: Q + thousand: K + trillion: T pagination: + newer: Diweddarach next: Nesaf + older: Hŷn prev: Blaenorol + truncate: "…" preferences: languages: Ieithoedd other: Arall + publishing: Cyhoeddi web: Gwe + remote_follow: + acct: Mewnbynnwch eich enwdefnyddiwr@parth yr ydych eisiau gweithredu ohonno + missing_resource: Ni ellir canfod yr URL ailgyferio angenrheidiol i'ch cyfrif + no_account_html: Heb gyfrif? Mae modd i chi gofrestru yma + proceed: Ymlaen i ddilyn + prompt: 'Yr ydych am ddilyn:' + remote_interaction: + proceed: Ymlaen i ryngweithio + prompt: 'Rydych eisiau rhyngweithio a''r tŵt hwn:' remote_unfollow: error: Gwall title: Teitl + unfollowed: Dad-ddilynwyd sessions: + activity: Gweithgaredd ddiwethaf browser: Porwr browsers: - alipay: '' - blackberry: '' + alipay: Alipay + blackberry: Blackberry + chrome: Chrome + edge: Microsoft Edge + electron: Electron + firefox: Firefox + generic: Porwr anhysbys + ie: Internet Explorer + micro_messenger: MicroMessenger + nokia: Porwr Nokia S40 Ovi + opera: Opera + otter: Otter + phantom_js: PhantomJS + qq: Porwr QQ + safari: Safari + uc_browser: UCBrowser + weibo: Weibo current_session: Sesiwn cyfredol description: "%{browser} ar %{platform}" + explanation: Dyma'r porwyr gwê sydd wedi mewngofnodi i'ch cyfrif Mastododon ar hyn o bryd. + ip: IP + platforms: + adobe_air: Adobe Air + android: Android + blackberry: Blackberry + chrome_os: ChromeOS + firefox_os: Firefox OS + ios: iOS + linux: Linux + mac: Mac + other: platfform anhysbys + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone + revoke: Diddymu + revoke_success: Sesiwn wedi ei ddiddymu yn llwyddiannus title: Sesiynau + settings: + authorized_apps: Apiau awdurdodedig + back: Yn ôl i Mastodon + delete: Dileu cyfrif + development: Datblygu + edit_profile: Golygu proffil + export: Allforio data + followers: Dilynwyr awdurdodedig + import: Mewnforio + migrate: Mudo cyfrif + notifications: Hysbysiadau + preferences: Dewisiadau + settings: Gosodiadau + two_factor_authentication: Awdurdodi dau-gam + your_apps: Eich rhaglenni + statuses: + attached: + description: 'Ynghlwm: %{attached}' + image: "%{count} o luniau" + video: "%{count} fideo" + boosted_from_html: Wedi ei fŵstio %{acct_link} + content_warning: 'Rhybudd cynnwys: %{warning}' + disallowed_hashtags: 'yn cynnwys yr hashnod gwaharddedig: %{tags}' + language_detection: Canfod iaith yn awtomataidd + open_in_web: Agor yn y wê + over_character_limit: wedi mynd heibio'r uchafswm nodyn o %{max} + pin_errors: + limit: Yr ydych wedi pinio yr uchafswm posib o dŵtiau + ownership: Ni ellir pinio tŵt rhywun arall + private: Ni ellir pinio tŵt nad yw'n gyhoeddus + reblog: Ni ellir pinio bŵstiau + show_more: Dangos mwy + sign_in_to_participate: Mengofnodwch i gymryd rhan yn y sgwrs + title: '%{name}: "%{quote}"' + visibilities: + private: Dilynwyr yn unig + private_long: Dangos i ddilynwyr yn unig + public: Cyhoeddus + public_long: Gall pawb weld + unlisted: Heb ei restru + unlisted_long: Gall pawb weld, ond heb ei restru ar ffrydiau cyhoeddus + stream_entries: + pinned: Tŵt wedi'i binio + reblogged: bŵstiwyd + sensitive_content: Cynnwys sensitif + terms: + body_html: | +

Polisi Preifatrwydd

+

Pa wybodaeth ydyn ni'n ei gasglu?

+ +
    +
  • Gwybodaeth cyfrif sylfaenol: Os ydych yn cofrestru ar y gweinydd hwn, mae'n bosib y byddwch yn cael eich gofyn i fewnbynnu enw defnyddiwr, cyfeiriad e-bost a chyfrinair. Mae modd i chi hefyd fewnbynnu gwybodaeth ychwanegol megis enw arddangos a bywgraffiad ac uwchlwytho llun proffil a llun pennawd. Mae'r enw defnyddiwr, enw arddangos, bywgraffiad, llun proffil a'r llun pennawd wedi eu rhestru'n gyhoeddus bob tro.
  • +
  • Postio, dilyn a gwybodaeth gyhoeddus arall: Mae'r rhestr o bobl yr ydych yn dilyn wedi ei restru'n gyhoeddus, mae'r un peth yn wir am eich dilynwyr. Pan yr ydych yn mewnosod neges, mae'r dyddiad a'r amser yn cael ei gofnodi ynghyd a'r rhaglen y wnaethoch anfon y neges ohonni. Gall negeseuon gynnwys atodiadau cyfryngau, megis lluniau neu fideo. Mae negeseuon cyhoeddus a negeseuon heb eu rhestru ar gael yn gyhoeddus. Pan yr ydych yn nodweddu neges ar eich proffil, mae hynny hefyd yn wybodaeth sydd ar gael yn gyhoeddus. Mae eich negeseuon yn cael eu hanfon i'ch dilynwyr, mewn rhai achosion mae hyn yn golygu eu bod yn cael eu hanfon i amryw o weinyddwyr ac fe fydd copiau yn cael eu cadw yno. Pan yr ydych yn dileu negeseuon, mae hyn hefyd yn cael ei hanfon i'ch dilynwyr. Mae'r weithred o rannu neu hoffi neges arall yn gyhoeddus bob tro.
  • +
  • Negeseuon uniongyrchol a dilynwyr yn unig: Mae pob neges yn cael eu cadw a'u prosesu ar y gweinydd. Mae negeseuon dilynwyr yn unig yn cael eu hanfon i'ch dilynwyr a'r defnyddwyr sy'n cael eu crybwyll ynddynt tra bod negeseuon uniongyrchol yn cael eu hanfon at rheini sy'n cael crybwyll ynddynt yn unig. Mewn rhai achostion golyga hyn eu bod yn cael eu hanfon i weinyddwyr gwahanol a'u cadw yno. yr ydym yn gnweud ymgais ewyllys da i gyfyngu'r mynediad at y negeseuon yna i bobl ac awdurdod yn unig, ond mae'n bosib y bydd gweinyddwyr eraill yn methu a gwneud hyn. Mae'n bwysig felly i chi fod yn wyliadwrus o ba weinyddwyr y mae eich dilynwyr yn perthyn iddynt. Mae modd i chi osod y dewis i ganiatau a gwrthod dilynwyr newydd a llaw yn y gosodiadau. Cofiwch gall gweithredwyr y gweinydd ac unrhyw weinydd derbyn weld unrhyw negeseuon o'r fath, ac fe all y derbynwyr gymryd sgrinlin, copïo neu drwy ddulliau eraill rannu rhain. Peidiwch a rhannu unrhyw wybodaeth beryglus dros Mastodon.
  • +
  • IPs a mathau eraill o metadata: Pan yr ydych yn mewngofnodi, yr ydym yn cofnodi y cyfeiriad IP yr ydych yn mewngofnodi ohonno, ynghyd a enw eich rhaglen pori. Mae pob un sesiwn mewngofnodi ar gael i chi adolygu a gwrthod yn y gosodiadau. Mae'r cyfeiriad IP diweddaraf yn cael ei storio hyd at 12 mis. Mae'n bosib y byddwn hefyd yn cadw cofnodion gweinydd sy'n cynnwys y cyfeiriad IP am bob cais sy'n cael ei wneud i'n gweinydd.
  • +
+ +
+ +

Beth ydym yn defnyddio eich gywbodaeth ar ei gyfer?

+ +

Gall unrhyw wybodaeth yr ydym yn ei gasglu oddi wrthych gael ei ddefnyddio yn y ffyrdd canlynol:

+ +
    +
  • I ddarparu prif weithgaredd Mastodon. Gallwch ond rhyngweithio a chynnwys pobl eraill pan yr ydych wedi'ch mewngofnodi. Er enghraifft, gallwch ddilyn pobl eraill i weld eu negeseuon wedi cyfuno ar ffrwd gartref bersonol.
  • +
  • I helpu gyda goruwchwylio'r gymuned, er enghraifft drwy gymharu eich cyfeiriad IP gyda rhai eraill hysbys er mwyn sefydlu ymgais i geisio hepgor gwaharddiad neu droseddau eraill.
  • +
  • Gall y cyfeiriad e-bost yr ydych yn ei ddarparu gael ei ddefnyddio i anfon gwybodaeth atoch, hsybysiadau am bobl eraill yn rhyngweithio a'ch cynnwys neu'n anfon negeseuon atoch a/neu geisiadau neu gwestiynnau eraill.
  • +
+ +
+ +

Sut ydym yn amddiffyn eich gwybodaeth?

+ +

Mae gennym amryw o fesurau diogelwch er mwyn cynnal diogelwch eich gwybodaeth bersonol pan yr ydych yn mewnosod, cyflwyno neu'n cael mynediad at eich gwybodaeth bersonol. Ymysg pethau eraill, mae sesiwn eich porwr, ynghyd a'r traffig rhwng eich rhaglenni a'r API wedi eu diogelu gan SSL, ac mae'ch cyfrinair yn cael ei stwnshio drwy ddefnyddio algorithm cryf un-ffordd. Gallwch alluogi dilysu dau-gam er mwyn cryfhau diogelwch mynediad i'ch cyfrif ymhellach.

+ +
+ +

Beth yw ein polisi cadw data?

+ +

Gwnawn ymdrech ewyllys da i:

+ +
    +
  • Gadw cofnod gweinydd yn cynnwys y cyfeiriad IP o bob cais i'r gweinydd hwn, i'r graddau y mae cofnodion o'r fath yn cael eu cadw, am ddim mwy na 90 diwrnod.
  • +
  • Gadw cyfeiriadau IP a chysylltiad i ddefnyddwyr cofrestredig am ddim mwy na 12 mis.
  • +
+ +

Mae modd i chi wneud cais am, a lawrlwytho archif o'ch cynnwys, gan gynnwys eich tŵtiau, atodiadau cyfryngau, llun proffil a llun pennawd.

+ +

Mae modd i chi ddileu eich cyfrif heb ei adfer ar unrhyw bryd

+ +
+ +

Ydyn ni'n defnyddio cwcis?

+ +

Ydyn. Dogfennau bach sy'n cael eu trosglwyddo i ddisg galed eich cyfrifiadur drwy eich porwr gan wefan neu wasanaeth yw cwcis (os ydych yn eu caniatau). Galluoga'r cwcis hyn i'r wefan i adnabod eich porwr ac, os oes gennych gyfrif wedi ei gofrestru, ei gysylltu gyda'r cyfrif yr ydych wedi ei gofrestru.

+ +

Rydym yn defnyddio cwcis i ddeall a chadw eich dewisiadau ar gyfer ymweliadau yn y dyfodol.

+ +
+ +

Ydyn ni'n datgelu unrhyw wybodaeth i bartïoedd allanol?

+ +

Nid ydym yn gwerthu, cyfnewid neu mewn unrhyw ddull yn trosglwyddo i bartïoedd allanol eich gwybodaeth bersonol. Nid yw hyn yn cynnwys trydydd partïon yr ydym yn ymddiried ynddynt sy'n ein cynorthwyo i weithredu ein gwefan, cynnal ein busnes neu'ch gwasanaethu chi, cyhyd a bod y partïoedd hynny yn cytuno i gadw'r wybodaeth yma'n gyfrinachol. Mae'n bosib i ni ryddhau eich gwybodaeth pan yr ydym yn credu fod ei ryddhau yn briodol er mwyn cydymffurfio a'r gyfraith, gorfodi ein polisiau, neu i amddiffyn hawliau, eiddo neu diogelwch eraill.

+ +

Gall eich cynnwys cyhoeddus gael ei lawrlwytho gan weinyddwyr eraill yn y rhwydwaith. Mae eich tŵtiau cyhoeddus a'r rhai dilynwyr yn unig yn cael eu hanfon i'r gweinyddwyr sy'n lletya eich dilynwyr, tra bod negeseuon uniongrychol yn cael eu hanfon at weinyddwyr y derbynwyr, cyn belled a fod y dilynwyr neu'r derbynwyr hynny yn bodoli ar weinydd gwahanol i'r un hwn.

+ +

Pan yr ydych yn caniatau y rhaglen hwn i ddefnyddio'ch cyfrif, yn dibynnu ar sgôp yr hyn yr ydych yn caniatau, gallai gael mynediad at eich gwybodaeth proffil cyhoeddus, eich rhestr dilynwyr, eich dilynwyr, eich rhestrau, eich holl dŵtiau a'ch ffefrynnau. Ni all rhaglenni byth gael mynediad at eich cyfeiriad e-bost na chwaith eich cyfrinair.

+ +
+ +

Defnydd o'r wefan gan blant

+ +

Os yw'r gweinydd hwn yn yr UE neu'r EEA: Mae ein gwefan, ein nwyddau a'n gwasanaethau oll wedi eu cyfeirio at bobl sydd dros 16 mlwydd oed. Os ydych o dan 16, yn ôl gofyniad y GDPR (General Data Protection Regulation) peidiwch a defnyddio'r wefan hon.

+ +

Os yw'r gweinydd hwn yn UDA: Mae ein gwefan, ein nwyddau a'n gwasanaethau oll wedi eu cyfeirio at bobl sydd dros 13 mlwydd oed oleiaf. Os ydych o dan 13 mlwydd oed, yn ôl gofyniad COPPA (Children's Online Privacy Protection Act) peidiwch a defnyddio'r wefan hon.

+ +

Mae gofynion y gyfraith yn gallu bod yn wahanol os yw'r gweinydd hwn mewn awdurdodaeth wahanol.

+ +
+ +

Newidiadau i'n Polisi Preifatrwydd

+ +

Os ydyn yn penderfynnu i newid ein polisi preifatrwydd, fe wnawn ni roi'r newidiadau hynny ar y dudalen hon.

+ +

Mae'r ddogfen hon yn CC-BY-SA. Cafodd ei ddiweddaru diwethaf ar y 7fed o Fawrth, 2018.

+ +

Cafodd ei addasu yn wreiddiol o'rPolisi preifatrwydd disgwrs.

+ title: "%{instance} Termau Gwasanaeth a Polisi Preifatrwydd" themes: contrast: Cyferbyniad uchel - default: '' + default: Mastodon mastodon-light: Mastodon (golau) time: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" + two_factor_authentication: + code_hint: Mewnbynwch y côd a grewyd gan eich ap dilysu i gadarnhau + description_html: Os ydych yn galluogi awdurdodi dau-gam, bydd mewngofnodi yn gofyn i chi fod a'ch ffôn gerllaw er mwyn cynhyrchu tocyn i chi gael mewnbynnu. + disable: Diffodd + enable: Galluogi + enabled: Awdurdodi dau-gam wedi'i alluogi + enabled_success: Awdurdodi dau-gam wedi'i alluogi'n llwyddiannus + generate_recovery_codes: Cynhyrchu côdau adfer + instructions_html: "Sganiwch y côd QR yn Google Authenticator neu ap TOTP tebyg ar eich ffôn. O hyn ymlaen, bydd yr ap hwnnw yn cynhyrchu tocynnau y bydd rhaid i chi fewnbynnu tra'n mewngofnodi." + lost_recovery_codes: Mae côdau adfer yn caniatau i chi gael mynediad i'ch cyfrif eto os ydych yn colli'ch ffôn. Os ydych wedi colli eich côdau adfer, mae modd i chi gynhyrchu nhw eto yma. Bydd eich hen gôdau wedyn yn annilys. + manual_instructions: 'Os nad ydych yn gallu sganio côd QR ac angen ei fewnbynnu a llaw, dyma''r gyfrinach testun-plaen:' + recovery_codes: Creu copi wrth gefn o gôdau adfywio + recovery_codes_regenerated: Llwyddwyd i ail greu côdau adfywio + recovery_instructions_html: Os ydych byth yn colli mynediad i'ch ffôn, mae modd i chi ddefnyddio un o'r côdau adfywio isod i ennill mynediad i'ch cyfrif eto. Cadwch y côdau adfywio yn saff. Er enghraifft, gallwch eu argraffu a'u cadw gyda dogfennau eraill pwysig. + setup: Sefydlu + wrong_code: Roedd y cod y mewnbynnwyd yn annilys! A yw'r amser gweinydd ac amser dyfais yn gywir? user_mailer: + backup_ready: + explanation: Fe wnaethoch chi gais am gopi wrth gefn llawn o'ch cyfrif Mastodon. Mae nawr yn barod i'w lawrlwytho! + subject: Mae eich archif yn barod i'w lawrlwytho + title: Allfudo archif welcome: + edit_profile_action: Sefydlu proffil + edit_profile_step: Mae modd i chi addasu eich proffil drwy uwchlwytho afatar, pennawd, drwy newid eich enw arddangos a mwy. Os hoffech chi adolygu dilynwyr newydd cyn iddynt gael caniatad i'ch dilyn, mae modd i chi gloi eich cyfrif. + explanation: Dyma ambell nodyn i'ch helpu i ddechrau + final_action: Dechrau postio + final_step: 'Dechrau postio! Hyd yn oed heb ddilynwyr mae''n bosib i eraill weld eich negeseuon cyhoeddus, er enghraifft at y ffrwd leol ac mewn hashnodau. Mae''n bosib yr hoffech hi gyflwyno''ch hun ar yr hashnod #introductions.' + full_handle: Eich enw Mastodon llawn + full_handle_hint: Dyma'r hyn y bysech yn dweud wrth eich ffrindiau er mwyn iddyn nhw gael anfon neges atoch o achos arall. + review_preferences_action: Newid dewisiadau + review_preferences_step: Gwnewch yn siŵr i chi osod eich dewisiadau, megis pa e-byst hoffech eu derbyn, neu ba lefel preifatrwydd hoffech eich tŵtiau ragosod i. Os nad oes gennych salwch symud, gallwch ddewis i ganiatau chwarae GIFs yn awtomatig. subject: Croeso i Mastodon + tip_bridge_html: Os ydych yn dod o Twitter, mae modd i chi ganfod eich ffrindiau ar Mastodon drwy ddefnyddio'r 1ap pontio2. Mae hyn ond yn gweithio os ydynt hwythau yn defnyddio'r ap pontio hefyd! + tip_federated_timeline: Mae'r ffrwd ffederasiwn yn olwg firehose o'r rhwydwaith Mastodon. Ond mae ond yn cynnwys y bobl mae eich cymdogion wedi ymrestru iddynt, felly nid yw'n gyflawn. + tip_following: Rydych yn dilyn goruwchwyliwr eich gweinydd yn ddiofyn. I ganfod pobl mwy diddorol, edrychwch ar y ffrydiau lleol a'r rhai wedi ei ffedereiddio. + tip_local_timeline: Mae'r ffrwd leol yn olwg firehose o bobl ar %{instance}. Dyma eich cymdogion agosaf! + tip_mobile_webapp: Os yw eich porwr gwe yn cynnig i ch ychwanegu Mastodon i'ch sgrîn gartref, mae modd i chi dderbyn hysbysiadau push. Mewn sawl modd mae'n gweithio fel ap cynhenid! + tips: Awgrymiadau + title: Croeso, %{name}! + users: + follow_limit_reached: Nid oes modd i chi ddilyn mwy na %{limit} o bobl + invalid_email: Mae'r cyfeiriad e-bost hwn yn annilys + invalid_otp_token: Côd dau-ffactor annilys + otp_lost_help_html: Os colloch chi fynediad i'r ddau, mae modd i chi gysylltu a %{email} + seamless_external_login: Yr ydych wedi'ch mewngofnodi drwy wasanaeth allanol, felly nid yw gosodiadau cyfrinair ac e-bost ar gael. + signed_in_as: 'Wedi mewngofnodi fel:' + verification: + explanation_html: 'Mae modd i chi ddilysu eich hun fel perchenog y dolenni yn metadata eich proffil. Rhaid i''r wefan a dolen iddi gynnwys dolen yn ôl i''ch proffil Mastodon. Rhaid i''r ddolen yn ôl gael nodwedd rel="fi". Nid oes ots beth yw cynnwys testun y ddolen. Dyma enghraifft:' + verification: Dilysu diff --git a/config/locales/da.yml b/config/locales/da.yml index 0cd3e78f7..d9ce9d55d 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -48,6 +48,7 @@ da: other: Følgere following: Følger joined: Tilmeldt den %{date} + link_verified_on: Ejerskabet af dette link blev tjekket den %{date} media: Medier moved_html: "%{name} er flyttet til %{new_profile_link}:" network_hidden: Denne information er ikke tilgængelig @@ -126,7 +127,7 @@ da: most_recent: Seneste title: Rækkefølge outbox_url: Link til udgående - perform_full_suspension: Udfør fuld udelukkelse + perform_full_suspension: Udeluk profile_url: Link til profil promote: Forfrem protocol: Protokol @@ -155,8 +156,10 @@ da: report: anmeld targeted_reports: Anmeldelser fra denne konto silence: Dæmp + silenced: Dæmpet statuses: Statusser subscribe: Abonner + suspended: Udelukket title: Konti unconfirmed_email: Ikke-bekræftet email undo_silenced: Fortryd dæmpning @@ -258,6 +261,7 @@ da: title: Ny domæne blokering reject_media: Afvis medie filer reject_media_hint: Fjerner lokalt lagrede multimedie filer og nægter at hente nogen i fremtiden. Irrelevant for udelukkelser + reject_reports: Afvis anmeldelser severities: noop: Ingen silence: Dæmp diff --git a/config/locales/de.yml b/config/locales/de.yml index 12e015226..9c0773ffc 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -121,13 +121,14 @@ de: moderation_notes: Moderationsnotizen most_recent_activity: Letzte Aktivität most_recent_ip: Letzte IP-Adresse + no_limits_imposed: Keine Limits eingesetzt not_subscribed: Nicht abonniert order: alphabetic: Alphabetisch most_recent: Neueste title: Sortierung outbox_url: Postausgangs-URL - perform_full_suspension: Vollständige Sperre durchführen + perform_full_suspension: Sperren profile_url: Profil-URL promote: Befördern protocol: Protokoll @@ -176,6 +177,7 @@ de: create_domain_block: "%{name} hat die Domain %{target} blockiert" create_email_domain_block: "%{name} hat die E-Mail-Domain %{target} geblacklistet" demote_user: "%{name} stufte Benutzer:in %{target} herunter" + destroy_custom_emoji: "%{name} zerstörte Emoji %{target}" destroy_domain_block: "%{name} hat die Domain %{target} entblockt" destroy_email_domain_block: "%{name} hat die E-Mail-Domain %{target} gewhitelistet" destroy_status: "%{name} hat Status von %{target} entfernt" @@ -261,6 +263,8 @@ de: title: Neue Domain-Blockade reject_media: Mediendateien ablehnen reject_media_hint: Entfernt lokal gespeicherte Mediendateien und verhindert deren künftiges Herunterladen. Für Sperren irrelevant + reject_reports: Meldungen ablehnen + reject_reports_hint: Ignoriere alle Meldungen von dieser Domain. Irrelevant für Sperrungen severities: noop: Kein silence: Stummschaltung @@ -365,6 +369,9 @@ de: hero: desc_html: Wird auf der Startseite angezeigt. Mindestens 600x100px sind empfohlen. Wenn es nicht gesetzt wurde, wird das Instanz-Thumbnail dafür verwendet title: Bild für Startseite + mascot: + desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde wird es auf das Standard-Maskottchen zurückfallen + title: Maskottchen-Bild peers_api_enabled: desc_html: Domain-Namen dieser Instanz, die im Fediverse gefunden wurden title: Veröffentliche Liste von gefundenen Instanzen @@ -573,6 +580,7 @@ de: resources: Ressourcen generic: changes_saved_msg: Änderungen gespeichert! + copy: Kopieren save_changes: Änderungen speichern validation_errors: one: Etwas ist noch nicht ganz richtig! Bitte korrigiere den Fehler @@ -916,6 +924,7 @@ de: tips: Tipps title: Willkommen an Bord, %{name}! users: + follow_limit_reached: Du kannst nicht mehr als %{limit} Leuten folgen invalid_email: Ungültige E-Mail-Adresse invalid_otp_token: Ungültiger Zwei-Faktor-Authentisierungs-Code otp_lost_help_html: Wenn Du beides nicht mehr weißt, melde Dich bei uns unter der E-Mailadresse %{email} @@ -923,3 +932,4 @@ de: signed_in_as: 'Angemeldet als:' verification: explanation_html: 'Du kannst bestätigen, dass die Links in deinen Profil-Metadaten dir gehören. Dafür muss die verlinkte Website einen Link zurück auf dein Mastodon-Profil enthalten. Dieser Link muss ein rel="me"-Attribut enthalten. Der Linktext is dabei egal. Hier ist ein Beispiel:' + verification: Verifizierung diff --git a/config/locales/devise.cy.yml b/config/locales/devise.cy.yml index d7d694f14..7d96e57f9 100644 --- a/config/locales/devise.cy.yml +++ b/config/locales/devise.cy.yml @@ -6,10 +6,10 @@ cy: send_instructions: Byddwch yn derbyn e-bost a chyfarwyddiadau am sut i gadarnhau eich cyfeiriad e-bost mewn rhai munudau. Os na dderbynioch chi'r e-bost hwn, edrychwch yn eich ffolder sbam os gwelwch yn dda. send_paranoid_instructions: Os yw eich cyfeiriad e-bost yn bodoli yn ein bas data, byddwch yn derbyn e-bost a chyfarwyddiadau am sut i gadarnhau eich cyfeiriad ebost mewn rhai munudau. Os na dderbynioch chi'r e-bost hwn, edrychwch yn eich ffolder sbam os gwelwch yn dda. failure: - already_authenticated: Yr ydych yn barod wedi mewngofnodi. + already_authenticated: Yr ydych wedi mewngofnodi yn barod. inactive: Nid yw eich cyfrif yn weithredol eto. invalid: "%{authentication_keys} neu gyfrinair annilys." - last_attempt: Mae gennych un gyfle arall cyn i'ch cyfrif gael ei gloi. + last_attempt: Mae gennych un cyfle arall cyn i'ch cyfrif gael ei gloi. locked: Mae eich cyfrif wedi ei gloi. not_found_in_database: "%{authentication_keys} neu gyfrinair annilys." timeout: Mae eich sesiwn wedi dod i ben. Mewngofnodwch eto i barhau. @@ -19,29 +19,29 @@ cy: confirmation_instructions: action: Gwiriwch eich cyfeiriad e-bost explanation: Yr ydych wedi creu cyfrif ar %{host} gyda'r cyfrif e-bost hwn. Dim ond un clic sydd angen i'w wneud yn weithredol. Os nad chi oedd hyn, anwybyddwch yr e-bost hwn os gwelwch yn dda. - extra_html: Gwnewch yn siŵr i edrych ar reolau'r INSTANCE a ein telerau gwasanaeth. + extra_html: Gwnewch yn siŵr i edrych ar reolau'r achos a ein telerau gwasanaeth. subject: 'Mastodon: Canllawiau cadarnhau i %{instance}' - title: Gwiriwch cyfeiriad e-bost + title: Gwirio cyfeiriad e-bost email_changed: explanation: 'Mae''r cyfeiriad e-bost ar gyfer eich cyfrif yn cael ei newid i:' - extra: Os na wnaethoch chi newid eich e-bost, mae'n debygol fod rhywun wedi cael mynediad i'ch cyfrif. Newidwch eich cyfrinair yn syth os gwelwch yn dda neu cysylltwch a gweinydd yr INSTANCE os ydych wedi'ch cloi allan o'ch cyfrif. + extra: Os na wnaethoch chi newid eich e-bost, mae'n debygol fod rhywun wedi cael mynediad i'ch cyfrif. Newidwch eich cyfrinair yn syth os gwelwch yn dda neu cysylltwch a gweinydd yr achos os ydych wedi'ch cloi allan o'ch cyfrif. subject: 'Mastodon: Newidwyd e-bost' title: Cyfeiriad e-bost newydd password_change: explanation: Newidwyd cyfrinair eich cyfrif. - extra: Os na wnaethoch chi newid eich e-bost, mae'n debygol fod rhywun wedi cael mynediad i'ch cyfrif. Newidwch eich cyfrinair yn syth os gwelwch yn dda neu cysylltwch a gweinydd yr INSTANCE os ydych wedi'ch cloi allan o'ch cyfrif. + extra: Os na wnaethoch chi newid eich e-bost, mae'n debygol fod rhywun wedi cael mynediad i'ch cyfrif. Newidwch eich cyfrinair yn syth os gwelwch yn dda neu cysylltwch a gweinydd yr achos os ydych wedi'ch cloi allan o'ch cyfrif. subject: 'Mastodon: Newidwyd Cyfrinair' title: Newidwyd cyfrinair reconfirmation_instructions: explanation: Cadarnhewch y cyferiad newydd i newid eich e-bost. extra: Os nad chi wnaeth y newid hwn, anwybyddwch yr e-bost hwn os gwelwch yn dda. Ni fydd y cyfeiriad e-bost ar gyfer y cyfrif Mastodon yn newid nes eich bod yn mynd at y ddolen uchod. subject: 'Mastodon: Cadarnhewch e-bost i %{instance}' - title: Gwiriwch cyfeiriad e-bost + title: Gwirio cyfeiriad e-bost reset_password_instructions: action: Newid cyfrinair explanation: Gofynnoch am gyfrinair newydd i'ch cyfrif. extra: Os na wnaethoch gais am hyn, anwybyddwch yr e-bost hwn os gwelwch yn dda. Ni fydd eich cyfrinair yn newid nes i chi fynd at y ddolen uchod a chreu un newydd. - subject: 'Mastodon: Ailosodwch cyfarwyddiadau cyfrinair' + subject: 'Mastodon: Ailosod cyfarwyddiadau cyfrinair' title: Ailosod cyfrinair unlock_instructions: subject: 'Mastodon: Cyfarwyddiadau datgloi' @@ -55,24 +55,24 @@ cy: updated: Mae eich cyfrinair wedi ei newid yn llwyddiannus. Yr ydych wedi mewngofnodi. updated_not_active: Mae eich cyfrinair wedi ei newid yn llwyddiannus. registrations: - destroyed: Hwyl fawr! Mae eich cyfrif wedi ei ganslo'n llwyddiannus. Gobeithiwn eich gweld eto'n fuan. - signed_up: Croeso! Rydych wedi llwyddo i ymuno. + destroyed: Hwyl fawr! Mae eich cyfrif wedi ei ganslo'n llwyddiannus. Gobeithiwn eich gweld chi eto'n fuan. + signed_up: Croeso! Rydych wedi cofrestru'n llwyddiannus. signed_up_but_inactive: Yr ydych wedi cofrestru'n llwyddiannus. Fodd bynnag, ni allwn eich mewngofnodi achos nid yw eich cyfrif wedi ei actifadu eto. signed_up_but_locked: Yr ydych wedi cofrestru'n llwyddiannus. Fodd bynnag, ni allwn eich mewngofnodi achos fod eich cyfrif wedi ei gloi. signed_up_but_unconfirmed: Mae neges gyda dolen cadarnhau wedi ei anfon i'ch cyfeiriad e-bost. Dilynwch y ddolen er mwyn actifadu eich cyfrif. Edrychwch yn eich ffolder sbam os na dderbynioch chi'r e-bost hwn os gwelwch yn dda. - update_needs_confirmation: Rydych wedi diweddaru eich cyfrif yn llwyddiannus, ond mae angen i ni wirio eich cyfeiriad e-bost newydd. Edrychwch ar eich e-byst a dilynwch y ddolen gadarnhau er mwyn cadarnhau eich cyfeiriad e-bost newydd. Edrychwch ar eich ffolder sbam os na dderbynioch chi yr e-bost hwn. + update_needs_confirmation: Rydych wedi diweddaru eich cyfrif yn llwyddiannus, ond mae angen i ni wirio'ch cyfeiriad e-bost newydd. Edrychwch ar eich e-byst a dilynwch y ddolen gadarnhau er mwyn cadarnhau eich cyfeiriad e-bost newydd. Edrychwch ar eich ffolder sbam os na dderbynioch chi yr e-bost hwn. updated: Mae eich cyfrif wedi ei ddiweddaru yn llwyddiannus. sessions: already_signed_out: Allgofnodwyd yn llwyddiannus. signed_in: Mewngofnodwyd yn llwyddiannus. signed_out: Allgofnodwyd yn llwyddiannus. unlocks: - send_instructions: Mi fyddwch yn derbyn e-bost a cyfarwyddiadau ynghylch sut i ddatgloi eich cyfrif ymhen cwpl o funudau. Edrychwch yn eich ffolder sbam os na dderbynioch chi'r e-bost hwn os gwelwch yn dda. + send_instructions: Mi fyddwch yn derbyn e-bost a chyfarwyddiadau ynghylch sut i ddatgloi eich cyfrif ymhen cwpl o funudau. Edrychwch yn eich ffolder sbam os na dderbynioch chi'r e-bost hwn os gwelwch yn dda. send_paranoid_instructions: Os yw eich cyfrif yn bodoli, mi fyddwch yn derbyn e-bost a cyfarwyddiadau o sut i ddatgloi eich cyfrif ymhen cwpl o funudau. Edrychwch yn eich ffolder sbam os na dderbynioch chi'r e-bost hwn os gwelwch yn dda. unlocked: Mae eich cyfrif wedi ei ddatgloi'n llwyddiannus. Mewngofnodwch i barhau. errors: messages: - already_confirmed: wedi ei gadarnhau yn baros, ymgeisiwch fewngofnodi + already_confirmed: wedi ei gadarnhau yn barod, ymgeisiwch fewngofnodi confirmation_period_expired: angen ei gadarnhau o fewn %{period}, gwnewch gais am un newydd os gwelwch yn dda expired: wedi dod i ben, gwnewch gais am un newydd os gwelwch yn dda not_found: heb ei ganfod diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml index 050af3a0a..87d7a8660 100644 --- a/config/locales/doorkeeper.cy.yml +++ b/config/locales/doorkeeper.cy.yml @@ -5,7 +5,7 @@ cy: doorkeeper/application: name: Enw rhaglen redirect_uri: Ailgyfeirio URI - scopes: Cwmpasau + scopes: Rhinweddau website: Gwefan cais errors: models: @@ -27,18 +27,20 @@ cy: confirmations: destroy: Ydych chi'n sicr? edit: - title: Golygwch rhaglen + title: Golygwch y rhaglen form: error: Wps! Gwiriwch eich ffurflen am gamgymeriadau posib help: native_redirect_uri: Defnyddiwch %{native_redirect_uri} ar gyfer profion lleol redirect_uri: Defnyddiwch un llinell i bob URI + scopes: Gwahanwch rinweddau gyda gofodau. Gadewch yn wag i ddefnyddio y rhinweddau rhagosodiedig. index: application: Rhaglen + callback_url: URL galw-nôl delete: Dileu name: Enw new: Rhaglen newydd - scopes: Cwmpasau + scopes: Rhinweddau show: Dangoswch title: Eich rhaglenni new: @@ -46,7 +48,8 @@ cy: show: actions: Gweithredoedd application_id: Allwedd cleient - scopes: Cwmpasau + callback_urls: URLau galw-nôl + scopes: Rhinweddau secret: Cyfrinach Cleient title: 'Rhaglen: %{name}' authorizations: @@ -57,9 +60,10 @@ cy: title: Mae rhywbeth wedi mynd o'i le new: able_to: Mi fydd a'r gallu i + prompt: Mae'r ap %{client_name} yn gofyn caniatad i gal mynediad i'ch cyfrif title: Angen awdurdodi show: - title: Copiwch y côd awdurdodi a gludiwch i'r rhaglen + title: Copiwch y côd awdurdodi a gludiwch i'r rhaglen. authorized_applications: buttons: revoke: Diddymu @@ -68,19 +72,35 @@ cy: index: application: Rhaglen created_at: Awdurdodedig - scopes: Cwmpasau + date_format: "%Y-%m-%d %H:%M:%S" + scopes: Rhinweddau title: Eich rhaglenni awdurdodedig errors: messages: access_denied: Mae perchennog yr adnodd neu'r gweinydd awdurdodi wedi atal y cais. + credential_flow_not_configured: Llif meini prawf cyfrinair perchennog yr adnodd wedi methu achos fod Doorkeeper.configure.resource_owner_from_credentials heb ei ffurfweddu. + invalid_client: Methwyd dilysu cleient oherwydd cleient anhysbys, methiant i gynnwys dilysu cleient, neu defnydd o ddull dilysu nid yw'n cael ei gefnodi. + invalid_grant: Mae'r grant dilysu a ddarparwyd yn annilys, wedi dod i ben, wedi'i wrthod, ddim yn cyfateb a'r URI ailgyferio a ddefnyddiwyd yn y cais dilysu, neu wedi ei ddarparu i gleient arall. invalid_redirect_uri: Nid yw'r uri ailgyfeirio cynnwysiedig yn gyfredol. invalid_request: Nid yw'r cais yn cynnwys paramedr angenrheidiol, yn cynnwys paramader paramedr nad yw'n cael ei gefnogi, neu wedi ei gamffurfio mewn rhyw fodd arall. + invalid_resource_owner: Nid yw meini prawf perchennog yr adnodd yn ddilys, neu ni ellir canfod perchennog yr adnodd + invalid_scope: Mae'r sgôp a geisiwyd amdano yn annilys, anhysbys, neu'n gamffurfiedig. + invalid_token: + expired: Daeth y tocyn mynediad i ben + revoked: Gwrthodwyd y tocyn mynediad + unknown: Mae'r tocyn mynediad yn annilys + resource_owner_authenticator_not_configured: Methwyd canfod Perchenog Adnodd achos fod Doorkeeper.configure.resource_owner_authenticator heb ei gydffurfio. + server_error: Daeth y gweinydd awdurdodi ar draws gyflwr annisgwyl wnaeth ei atal rhag cyflawni'r cais. + temporarily_unavailable: Nid yw'r gweinydd awdurdodi yn gallu gweithredu y cais hwn ar hyn o bryd oherwydd gorlwytho dros dro neu gwaith cynnal a chadw ar y gweinydd hwn. + unauthorized_client: Nid yw'r cleient wedi ei awdurdodi i berfformio'r cais hwn yn defnyddio'r dull hwn. + unsupported_grant_type: Nid yw'r math o ganiatad awdurdodi yma'n cael ei gefnogi gan y gweinydd awdurdodi. + unsupported_response_type: Nid yw'r gweinydd awdurdodi yn cefnogi y math yma o ymateb. flash: applications: create: notice: Crewyd y rhaglen. destroy: - notice: Dilewyd y rhaglen. + notice: Dilëwyd y rhaglen. update: notice: Diweddarwyd y rhaglen. authorized_applications: @@ -94,24 +114,29 @@ cy: application: title: Mae awdurdodiad OAuth yn ofynnol scopes: - follow: addaswch berthnasau cyfrif - push: derbyniwch eich hysbysiadau PUSH - read: darllenwch holl ddata eich cyfrif - read:accounts: gwelwch wybodaeth y cyfrif - read:blocks: gwlewch eich blociau - read:favourites: gwelwch eich ffefrynnau - read:filters: gwelwch eich hidlwyr - read:follows: gwelwch eich dilynwyr - read:lists: gwelwch eich rhestrau - read:notifications: gwelwch eich hysbysiadau - read:reports: gwelwch eich adroddiadau - read:statuses: gwelwch pob statws - write: addaswch ddata eich cyfri - write:accounts: addaswch eich proffil - write:blocks: blociwch gyfrifon a parthau - write:filters: crewch hidlwyr - write:follows: dilynwch bobl - write:lists: crëwch restrau - write:media: uwchlwythwch ffeiliau cyfryngau - write:mutes: tawelwch bobl a sgyrsiau - write:notifications: cliriwch eich hysbysiadau + follow: addasu perthnasau cyfrif + push: derbyn eich hysbysiadau PUSH + read: darllen holl ddata eich cyfrif + read:accounts: gweld gwybodaeth y cyfrif + read:blocks: gweld eich blociau + read:favourites: gweld eich ffefrynnau + read:filters: gweld eich hidlwyr + read:follows: gweld eich dilynwyr + read:lists: gweld eich rhestrau + read:mutes: gweld y rheini wedi'i tewi + read:notifications: gweld eich hysbysiadau + read:reports: gweld eich adroddiadau + read:search: edrych ar eich rhan + read:statuses: gweld pob statws + write: addasu holl ddata eich cyfri + write:accounts: addasu eich proffil + write:blocks: blocio cyfrifon a parthau + write:favourites: hoff dŵtiau + write:filters: creu hidlwyr + write:follows: dilyn pobl + write:lists: creu rhestrau + write:media: uwchlwytho ffeiliau cyfryngau + write:mutes: tawelu pobl a sgyrsiau + write:notifications: clirio eich hysbysiadau + write:reports: adrodd pobl eraill + write:statuses: cyhoeddi tŵt diff --git a/config/locales/el.yml b/config/locales/el.yml index fbd8a6461..8f718a849 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -177,6 +177,7 @@ el: create_domain_block: Ο/Η %{name} μπλόκαρε τον τομέα %{target} create_email_domain_block: Ο/Η %{name} έβαλε τον τομέα email %{target} σε μαύρη λίστα demote_user: Ο/Η %{name} υποβίβασε το χρήστη %{target} + destroy_custom_emoji: Ο/Η %{name} κατέστρεψε το emoji %{target} destroy_domain_block: Ο/Η %{name} ξεμπλόκαρε τον τομέα %{target} destroy_email_domain_block: Ο/Η %{name} έβαλε τον τομέα email %{target} σε λευκή λίστα destroy_status: Ο/Η %{name} αφαίρεσε την κατάσταση του/της %{target} @@ -262,6 +263,8 @@ el: title: Αποκλεισμός νέου τομέα reject_media: Απόρριψη πολυμέσων reject_media_hint: Αφαιρεί τα τοπικά αποθηκευμένα αρχεία πολυμέσων και αποτρέπει τη λήψη άλλων στο μέλλον. Δεν έχει σημασία για τις αναστολές + reject_reports: Απόρριψη καταγγελιών + reject_reports_hint: Αγνόηση όσων καταγγελιών προέρχονται από αυτό τον τομέα. Δεν σχετίζεται με τις παύσεις severities: noop: Κανένα silence: Αποσιώπηση @@ -366,6 +369,9 @@ el: hero: desc_html: Εμφανίζεται στην μπροστινή σελίδα. Συνίσταται τουλάχιστον 600x100px. Όταν λείπει, χρησιμοποιείται η μικρογραφία του κόμβου title: Εικόνα ήρωα + mascot: + desc_html: Εμφάνιση σε πολλαπλές σελίδες. Προτεινόμενο 293x205px τουλάχιστον. Αν δεν έχει οριστεί, χρησιμοποιεί την προεπιλεγμένη μασκότ + title: Εικόνα μασκότ peers_api_enabled: desc_html: Ονόματα τομέων που αυτός ο κόμβος έχει ήδη συναντήσει στο fediverse title: Δημοσίευση λίστας κόμβων που έχουν ανακαλυφθεί @@ -574,6 +580,7 @@ el: resources: Πόροι generic: changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν! + copy: Αντιγραφή save_changes: Αποθήκευσε τις αλλαγές validation_errors: one: Κάτι δεν είναι εντάξει ακόμα! Για κοίταξε το παρακάτω σφάλμα @@ -914,6 +921,7 @@ el: tips: Συμβουλές title: Καλώς όρισες, %{name}! users: + follow_limit_reached: Δεν μπορείς να ακολουθήσεις περισσότερα από %{limit} άτομα invalid_email: Η διεύθυνση email είναι άκυρη invalid_otp_token: Άκυρος κωδικός πιστοποίησης 2 παραγόντων (2FA) otp_lost_help_html: Αν χάσεις και τα δύο, μπορείς να επικοινωνήσεις με τον/την %{email} diff --git a/config/locales/es.yml b/config/locales/es.yml index ccb7439ae..f7531161c 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -48,6 +48,7 @@ es: other: Seguidores following: Siguiendo joined: Se unió el %{date} + link_verified_on: La propiedad de este vínculo fue verificada el %{date} media: Media moved_html: "%{name} se ha trasladado a %{new_profile_link}:" network_hidden: Esta información no está disponible @@ -120,13 +121,14 @@ es: moderation_notes: Notas de moderación most_recent_activity: Actividad más reciente most_recent_ip: IP más reciente + no_limits_imposed: Sin límites impuestos not_subscribed: No se está suscrito order: alphabetic: Alfabético most_recent: Más reciente title: Orden outbox_url: URL de bandeja de salida - perform_full_suspension: Performar suspensión completa + perform_full_suspension: Suspender profile_url: URL del perfil promote: Promocionar protocol: Protocolo @@ -155,8 +157,10 @@ es: report: reportar targeted_reports: Reportes hechos sobre esta cuenta silence: Silenciar + silenced: Silenciado statuses: Estados subscribe: Suscribir + suspended: Susependido title: Cuentas unconfirmed_email: Correo electrónico sin confirmar undo_silenced: Des-silenciar @@ -173,6 +177,7 @@ es: create_domain_block: "%{name} bloqueó el dominio %{target}" create_email_domain_block: "%{name} puso en lista negra el dominio de correos %{target}" demote_user: "%{name} degradó al usuario %{target}" + destroy_custom_emoji: "%{name} destruyó el emoji %{target}" destroy_domain_block: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block: "%{name} puso en lista blanca el dominio de correos %{target}" destroy_status: "%{name} eliminó el estado de %{target}" @@ -258,6 +263,8 @@ es: title: Nuevo bloque de dominio reject_media: Rechazar archivos multimedia reject_media_hint: Remueve localmente archivos multimedia almacenados para descargar cualquiera en el futuro. Irrelevante para suspensiones + reject_reports: Rechazar informes + reject_reports_hint: Ignore todos los reportes de este dominio. Irrelevante para suspensiones severities: noop: Ninguno silence: Silenciar @@ -300,8 +307,13 @@ es: title: Invitaciones relays: add_new: Añadir un nuevo relés + delete: Borrar description_html: Un relés de federation es un servidor intermedio que intercambia grandes volúmenes de toots públicos entre servidores que se suscriben y publican en él. Puede ayudar a servidores pequeños y medianos a descubir contenido del fediverso, que de otra manera requeriría que los usuarios locales siguiesen manialmente a personas de servidores remotos. + disable: Deshabilitar + disabled: Deshabilitado + enable: Hablitar enable_hint: Una vez conectado, tu servidor se suscribirá a todos los toots públicos de este relés, y comenzará a enviar los toots públicos de este servidor hacia él. + enabled: Habilitado inbox_url: URL del relés pending: Esperando la aprobación del relés save_and_enable: Guardar y conectar @@ -357,6 +369,9 @@ es: hero: desc_html: Mostrado en la página principal. Recomendable al menos 600x100px. Por defecto se establece a la miniatura de la instancia title: Imagen de portada + mascot: + desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205px. Cuando no se especifica, se muestra la mascota por defecto + title: Imagen de la mascota peers_api_enabled: desc_html: Nombres de dominio que esta instancia ha encontrado en el fediverso title: Publicar lista de instancias descubiertas @@ -450,7 +465,7 @@ es: warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie! your_token: Tu token de acceso auth: - agreement_html: Al registrarte, acepta seguir las reglas de la instancia y nuestros términos de servicio. + agreement_html: Al hacer click en "Registrarse" acepta seguir las reglas de la instancia y nuestros términos de servicio. change_password: Contraseña confirm_email: Confirmar email delete_account: Borrar cuenta @@ -565,6 +580,7 @@ es: resources: Recursos generic: changes_saved_msg: "¡Cambios guardados con éxito!" + copy: Copiar save_changes: Guardar cambios validation_errors: one: "¡Algo no está bien! Por favor, revisa el error" @@ -825,8 +841,12 @@ es: tips: Tips title: Te damos la bienvenida a bordo, %{name}! users: + follow_limit_reached: No puedes seguir a más de %{limit} personas invalid_email: La dirección de correo es incorrecta invalid_otp_token: Código de dos factores incorrecto otp_lost_help_html: Si perdiste al acceso a ambos, puedes ponerte en contancto con %{email} seamless_external_login: Has iniciado sesión desde un servicio externo, así que los ajustes de contraseña y correo no están disponibles. signed_in_as: 'Sesión iniciada como:' + verification: + explanation_html: 'Puedes verificarte a ti mismo como el dueño de los links en los metadatos de tu perfil . Para eso, el sitio vinculado debe contener un vínculo a tu perfil de Mastodon. El vínculo en tu sitio debe tener un atributo rel="me". El texto del vínculo no importa. Aquí un ejemplo:' + verification: Verificación diff --git a/config/locales/eu.yml b/config/locales/eu.yml index f0ddb6adb..206b439b0 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -48,6 +48,7 @@ eu: other: jarraitzaile following: Jarraitzen joined: "%{date}(e)an elkartua" + link_verified_on: 'Esteka honen jabetzaren egiaztaketa data: %{date}' media: Multimedia moved_html: "%{name} hona lekualdatu da %{new_profile_link}:" network_hidden: Informazio hau ez dago eskuragarri @@ -120,13 +121,14 @@ eu: moderation_notes: Moderazio oharrak most_recent_activity: Azken jarduera most_recent_ip: Azken IP-a + no_limits_imposed: Ez da mugarik ezarri not_subscribed: Harpidetu gabe order: alphabetic: Alfabetikoa most_recent: Azkena title: Ordena outbox_url: Irteera ontziaren URL-a - perform_full_suspension: Aplikatu kanporatze osoa + perform_full_suspension: Kanporatu profile_url: Profilaren URL-a promote: Sustatu protocol: Protokoloa @@ -155,8 +157,10 @@ eu: report: salatu targeted_reports: Kontu honek egindako salaketak silence: Isilarazi + silenced: Isilarazita statuses: Mezuak subscribe: Harpidetu + suspended: Kanporatuta title: Kontuak unconfirmed_email: Baieztatu gabeko e-mail helbidea undo_silenced: Utzi isilarazteari @@ -173,6 +177,7 @@ eu: create_domain_block: "%{name}(e)k %{target} domeinua blokeatu du" create_email_domain_block: "%{name}(e)k %{target} e-mail helbideen domeinua zerrenda beltzean sartu du" demote_user: "%{name}(e)k %{target} mailaz jaitsi du" + destroy_custom_emoji: "%{name} erabiltzaileak %{target} emojia suntsitu du" destroy_domain_block: "%{name}(e)k %{target} domeinua desblokeatu du" destroy_email_domain_block: "%{name}(e)k %{target} e-mail helbideen domeinua zerrenda zurian sartu du" destroy_status: "%{name}(e)k %{target}(e)n egoera kendu du" @@ -258,6 +263,8 @@ eu: title: Domeinu blokeo berria reject_media: Ukatu multimedia fitxategiak reject_media_hint: Lokalki gordetako multimedia fitxategiak ezabatzen ditu eta etorkizunean fitxategi berriak deskargatzeari uko egingo dio. Ez du garrantzirik kanporaketetan + reject_reports: Errefusatu salaketak + reject_reports_hint: Ezikusi domeinu honetatik jasotako salaketak. Kanporatzeentzako garrantzirik gabekoa severities: noop: Bat ere ez silence: Isilarazi @@ -300,8 +307,13 @@ eu: title: Gonbidapenak relays: add_new: Gehitu hari berria + delete: Ezabatu description_html: "Federazio errele bat zerbitzari tartekari bat da, bertara harpidetutako eta bertan argitaratzen duten zerbitzarien artean toot publiko kopuru handiak banatzen ditu. Zerbitzari txiki eta ertainei Fedibertsoko edukia aurkitzen laguntzen die, bestela erabiltzaile lokalek eskuz jarraitu beharko lituzkete urruneko zerbitzarietako erabiltzaileak." + disable: Desgaitu + disabled: Desgaituta + enable: Gaitu enable_hint: Behin gaituta, zure zerbitzaria errele honetako toot publiko guztietara harpidetuko da, eta zerbitzari honetako toot publikoak errelera bidaltzen hasiko da. + enabled: Gaituta inbox_url: Errelearen URLa pending: Erreleak onartzearen zain save_and_enable: Gorde eta gaitu @@ -357,6 +369,9 @@ eu: hero: desc_html: Azaleko orrian bistaratua. Gutxienez 600x100px aholkatzen da. Ezartzen ez bada, instantziaren irudia hartuko du title: Azaleko irudia + mascot: + desc_html: Hainbat orritan bistaratua. Gutxienez 293x205px aholkatzen da. Ezarri ezean lehenetsitako maskota erakutsiko da + title: Maskotaren irudia peers_api_enabled: desc_html: Instantzia honek fedibertsuan aurkitutako domeinu-izenak title: Argitaratu aurkitutako instantzien zerrenda @@ -450,7 +465,7 @@ eu: warning: Kontuz datu hauekin, ez partekatu inoiz inorekin! your_token: Zure sarbide token-a auth: - agreement_html: Izena emanezinstantziaren arauak eta erabilera baldintzak onartzen dituzu. + agreement_html: '"Izena eman" botoia sakatzean instantziaren arauak eta erabilera baldintzak onartzen dituzu.' change_password: Pasahitza confirm_email: Berretsi e-mail helbidea delete_account: Ezabatu kontua @@ -565,6 +580,7 @@ eu: resources: Baliabideak generic: changes_saved_msg: Aldaketak ongi gorde dira! + copy: Kopiatu save_changes: Gorde aldaketak validation_errors: one: Zerbait ez dabil ongi! Egiaztatu beheko errorea mesedez @@ -906,8 +922,12 @@ eu: tips: Aholkuak title: Ongi etorri, %{name}! users: + follow_limit_reached: Ezin dituzu %{limit} pertsona baino gehiago jarraitu invalid_email: E-mail helbidea baliogabea da invalid_otp_token: Bi faktoreetako kode baliogabea otp_lost_help_html: 'Bietara sarbidea galdu baduzu, jarri kontaktuan hemen: %{email}' seamless_external_login: Kanpo zerbitzu baten bidez hasi duzu saioa, beraz pasahitza eta e-mail ezarpenak ez daude eskuragarri. signed_in_as: 'Saioa honela hasita:' + verification: + explanation_html: 'Ezin duzu zure burua zure profileko metadatuen esteken jabe gisa egiaztatu. Horretarako, estekatutako webgunean zure Mastodon profilera daraman esteka bat egon behar du. Mastodonera daraman esteka horrekderrigorrez rel="me" artibutua izan behar du . Estekaren testuak ez du axola. Hona adibide bat:' + verification: Egiaztaketa diff --git a/config/locales/fa.yml b/config/locales/fa.yml index a9cf5868f..4209a2c00 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -31,9 +31,9 @@ fa: privacy_policy: سیاست رازداری source_code: کدهای منبع status_count_after: - one: نوشته - other: نوشته - status_count_before: که جمعاً + one: چیز نوشته‌اند + other: چیز نوشته‌اند + status_count_before: که در کنار هم terms: شرایط کاربری user_count_after: one: کاربر @@ -48,6 +48,7 @@ fa: other: پیگیر following: پی می‌گیرد joined: کاربر از %{date} + link_verified_on: مالکیت این نشانی در تاریخ %{date} بررسی شد media: عکس و ویدیو moved_html: "%{name} حساب خود را به %{new_profile_link} منتقل کرده است:" network_hidden: این اطلاعات در دسترس نیست @@ -120,13 +121,14 @@ fa: moderation_notes: یادداشت مدیر most_recent_activity: آخرین فعالیت‌ها most_recent_ip: آخرین IP ها + no_limits_imposed: بدون محدودیت not_subscribed: عضو نیست order: alphabetic: الفبایی most_recent: تازه‌ترین‌ها title: ترتیب outbox_url: نشانی صندوق خروجی - perform_full_suspension: انجام تعلیق کامل + perform_full_suspension: تعلیق profile_url: نشانی نمایه promote: ترفیع‌دادن protocol: پروتکل @@ -155,8 +157,10 @@ fa: report: گزارش targeted_reports: گزارش‌ها دربارهٔ این حساب silence: بی‌صدا + silenced: بی‌صداشده statuses: نوشته‌ها subscribe: اشتراک + suspended: تعلیق‌شده title: حساب‌ها unconfirmed_email: ایمیل تأییدنشده undo_silenced: واگردانی بی‌صداکردن @@ -173,6 +177,7 @@ fa: create_domain_block: "%{name} دامین %{target} را مسدود کرد" create_email_domain_block: "%{name} دامین ایمیل %{target} را مسدود کرد" demote_user: "%{name} مقام کاربر %{target} را تنزل داد" + destroy_custom_emoji: "%{name} شکلک %{target} را حذف کرد" destroy_domain_block: "%{name} دامین %{target} را باز کرد" destroy_email_domain_block: "%{name} دامین ایمیل %{target} را باز کرد" destroy_status: "%{name} نوشته‌ای از %{target} را پاک کرد" @@ -258,6 +263,8 @@ fa: title: مسدودسازی دامین دیگر reject_media: نپذیرفتن پرونده‌های تصویری reject_media_hint: تصویرهای ذخیره‌شده در این‌جا را پاک می‌کند و جلوی دریافت تصویرها را در آینده می‌گیرد. بی‌تأثیر برای معلق‌شده‌ها + reject_reports: نپذیرفتن گزارش‌ها + reject_reports_hint: گزارش‌هایی را که از این دامین می‌آید نادیده می‌گیرد. بی‌تأثیر برای معلق‌شده‌ها severities: noop: هیچ silence: بی‌صداکردن @@ -300,8 +307,13 @@ fa: title: دعوت‌ها relays: add_new: افزودن رلهٔ تازه + delete: حذف description_html: یک رلهٔ میان‌سروری (federation relay) یک سرور میانجی است که حجم زیادی از بوق‌های عمومی را بین سرورهای گوناگونی که عضوش می‌شوند جابه‌جا می‌کند. رله‌ها به سرورهای کوچک و متوسط کمک می‌کنند تا مطالب عمومی بیشتری را بیابند. اگر رله نباشد، این مطالب عمومی تنها وقتی پیدا می‌شوند که کاربران محلی خودشان پیگیر کاربران روی سرورهای دیگر شوند. + disable: غیرفعال‌کردن + disabled: غیرفعال + enable: فعال‌سازی enable_hint: اگر فعال باشد، سرور شما عضو همهٔ بوق‌های عمومی‌ای را که از این رله می‌آید می‌گیرد، و بوق‌های عمومی این سرور را به آن می‌فرستند. + enabled: فعال inbox_url: نشانی رله pending: در انتظار پذیرش رله save_and_enable: ذخیره و فعال‌سازی @@ -357,6 +369,9 @@ fa: hero: desc_html: در صفحهٔ آغازین نمایش می‌یابد. دست‌کم ۶۰۰×۱۰۰ پیکسل توصیه می‌شود. اگر تعیین نشود، با تصویر بندانگشتی سرور جایگزین خواهد شد title: تصویر سربرگ + mascot: + desc_html: در صفحه‌های گوناگونی نمایش می‌یابد. دست‌کم ۲۹۳×۲۰۵ پیکسل. اگر تعیین نشود، با تصویر پیش‌فرض جایگزین خواهد شد + title: تصویر نماد peers_api_enabled: desc_html: دامین‌هایی که این سرور به آن‌ها برخورده است title: انتشار فهرست سرورهای یافته‌شده @@ -450,7 +465,7 @@ fa: warning: خیلی مواظب این اطلاعات باشید و آن را به هیچ کس ندهید! your_token: کد دسترسی شما auth: - agreement_html: پیش از عضو شدن باید قوانین این سرور و شرایط استفادهٔ ما را بپذیرید. + agreement_html: با کلیک روی دکمهٔ عضو شدن، شما قوانین این سرور و شرایط استفادهٔ ما را می‌پذیرید. change_password: رمز confirm_email: تأیید ایمیل delete_account: پاک‌کردن حساب @@ -565,6 +580,7 @@ fa: resources: منابع generic: changes_saved_msg: تغییرات با موفقیت ذخیره شدند! + copy: رونوشت save_changes: ذخیرهٔ تغییرات validation_errors: one: یک چیزی هنوز درست نیست! لطفاً خطاهای زیر را ببینید @@ -825,8 +841,12 @@ fa: tips: نکته‌ها title: خوش آمدید، کاربر %{name}! users: + follow_limit_reached: شما نمی‌توانید بیش از %{limit} نفر را پی بگیرید invalid_email: نشانی ایمیل نامعتبر است invalid_otp_token: کد ورود دومرحله‌ای نامعتبر است otp_lost_help_html: اگر شما دسترسی به هیچ‌کدامشان ندارید، باید با ایمیل %{email} تماس بگیرید seamless_external_login: شما با یک سرویس خارج از مجموعه وارد شده‌اید، به همین دلیل تنظیمات ایمیل و رمز برای شما در دسترس نیست. signed_in_as: 'واردشده به نام:' + verification: + explanation_html: 'شما می‌توانید خود را به عنوان مالک صفحه‌ای که در نمایه‌تان به آن پیوند داده‌اید تأیید کنید. برای این کار، صفحه‌ای که به آن پیوند داده‌اید، خودش باید پیوندی به نمایهٔ ماستدون شما داشته باشد. پیوند در آن صفحه باید عبارت rel="me" را به عنوان attribute در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:' + verification: تأیید diff --git a/config/locales/fi.yml b/config/locales/fi.yml index e62931129..c90490212 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -707,7 +707,7 @@ fi: edit_profile_step: Voit mukauttaa profiiliasi lataamalla profiilikuvan ja otsakekuvan, muuttamalla näyttönimeäsi ym. Jos haluat hyväksyä uudet seuraajat ennen kuin he voivat seurata sinua, voit lukita tilisi. explanation: Näillä vinkeillä pääset alkuun final_action: Ala julkaista - final_step: 'Ala julkaista! Vaikkei sinulla olisi seuraajia, monet voivat nähdä julkiset viestisi esimerkiksi paikallisella aikajanalla ja hashtagien avulla. Kannattaa esittäytyä! Käytä hashtagia #introductions. (Jos haluat esittäytyä myös suomeksi, se kannattaa tehdä erillisessä tuuttauksessa ja käyttää hashtagia #esittely.)' + final_step: 'Ala julkaista! Vaikkei sinulla olisi seuraajia, monet voivat nähdä julkiset viestisi esimerkiksi paikallisella aikajanalla ja hashtagien avulla. Kannattaa esittäytyä! Käytä hashtagia #introductions. (Jos haluat esittäytyä myös suomeksi, se kannattaa tehdä erillisessä tuuttauksessa ja käyttää hashtagia #esittely.).' full_handle: Koko käyttäjätunnuksesi full_handle_hint: Kerro tämä ystävillesi, niin he voivat lähettää sinulle viestejä tai löytää sinut toisen instanssin kautta. review_preferences_action: Muuta asetuksia diff --git a/config/locales/fr.yml b/config/locales/fr.yml index f0eaf8d3f..e3128b569 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -128,7 +128,7 @@ fr: most_recent: Plus récent title: Tri outbox_url: URL de sortie - perform_full_suspension: Effectuer une suspension complète + perform_full_suspension: Suspendre profile_url: URL du profil promote: Promouvoir protocol: Protocole @@ -177,6 +177,7 @@ fr: create_domain_block: "%{name} a bloqué le domaine %{target}" create_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste noire" demote_user: "%{name} a rétrogradé l’utilisateur·ice %{target}" + destroy_custom_emoji: "%{name} a détruit l'émoticône %{target}" destroy_domain_block: "%{name} a débloqué le domaine %{target}" destroy_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste blanche" destroy_status: "%{name} a enlevé le statut de %{target}" @@ -262,6 +263,8 @@ fr: title: Nouveau blocage de domaine reject_media: Fichiers média rejetés reject_media_hint: Supprime localement les fichiers média stockés et refuse d’en télécharger ultérieurement. Ne concerne pas les suspensions + reject_reports: Rapports de rejet + reject_reports_hint: Ignorez tous les rapports provenant de ce domaine. Sans objet pour les suspensions severities: noop: Aucune silence: Masquer @@ -366,6 +369,9 @@ fr: hero: desc_html: Affichée sur la page d’accueil. Au moins 600x100px recommandé. Lorsqu’elle n’est pas définie, se rabat sur la vignette de l’instance title: Image d’en-tête + mascot: + desc_html: Affiché sur plusieurs pages. Au moins 293×205px recommandé. Lorsqu'il n'est pas défini, retombe à la mascotte par défaut + title: Image de la mascotte peers_api_enabled: desc_html: Noms des domaines que cette instance a découvert dans le fediverse title: Publier la liste des instances découvertes @@ -574,6 +580,7 @@ fr: resources: Ressources generic: changes_saved_msg: Les modifications ont été enregistrées avec succès ! + copy: Copier save_changes: Enregistrer les modifications validation_errors: one: Quelque chose ne va pas ! Vérifiez l’erreur ci-dessous @@ -915,6 +922,7 @@ fr: tips: Astuces title: Bienvenue à bord, %{name} ! users: + follow_limit_reached: Vous ne pouvez pas suivre plus de %{limit} personnes invalid_email: L’adresse courriel est invalide invalid_otp_token: Le code d’authentification à deux facteurs est invalide otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email} diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 090796413..b9b9a37ad 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -22,7 +22,7 @@ gl: not_a_product_title: Vostede é unha persoa, non un producto real_conversation_body: Con 500 caracteres a súa disposición, soporte para contido polo miúdo e avisos sobre o contido, pode expresarse vostede con libertade. real_conversation_title: Construído para conversacións reais - within_reach_body: Existen múltiples aplicativos para iOS, Android e outras plataformas grazas a un entorno API amigable para o desenvolvedor que lle permite estar ao tanto cos seus amigos en calquer lugar. + within_reach_body: Existen múltiples aplicacións para iOS, Android e outras plataformas grazas a un entorno API amigable para o desenvolvedor que lle permite estar ao tanto cos seus amigos en calquer lugar. within_reach_title: Sempre en contacto generic_description: "%{domain} é un servidor na rede" hosted_on: Mastodon aloxado en %{domain} @@ -128,7 +128,7 @@ gl: most_recent: Máis recente title: Orde outbox_url: URL caixa de saída - perform_full_suspension: Suspender completamente + perform_full_suspension: Suspender profile_url: URL do perfil promote: Promocionar protocol: Protocolo @@ -177,6 +177,7 @@ gl: create_domain_block: "%{name} bloqueou o dominio %{target}" create_email_domain_block: "%{name} engadeu a lista negra o dominio de correo %{target}" demote_user: "%{name} degradou a usuaria %{target}" + destroy_custom_emoji: "%{name} destruíu emoji %{target}" destroy_domain_block: "%{name} desbloqueou o dominio %{target}" destroy_email_domain_block: "%{name} meteu na lista blanca de correo o dominio %{target}" destroy_status: "%{name} eliminou o estado de %{target}" @@ -262,6 +263,8 @@ gl: title: Novo bloqueo de dominio reject_media: Rexeitar ficheiros de medios reject_media_hint: Eliminar ficheiros de medios almacenados localmente e rexeita descargalos no futuro. Irrelevante para as suspensións + reject_reports: Rexeitar informes + reject_reports_hint: Ignorar todos os informes procedentes de este dominio. Irrelevante para as suspensións severities: noop: Ningún silence: Silenciar @@ -366,6 +369,9 @@ gl: hero: desc_html: Mostrado na portada. Recoméndase 600x100px como mínimo. Si non se establece, mostrará a imaxe por omisión da instancia title: Imáxe Heróe + mascot: + desc_html: Mostrado en varias páxinas. Recoméndase 293x205 como mínimo. Se non se establece publícase a mascota por omisión + title: Imaxe da mascota peers_api_enabled: desc_html: Nome de dominio que esta instancia atopou no fediverso title: Publicar lista de instancias descubertas @@ -470,7 +476,7 @@ gl: login: Conectar logout: Desconectar migrate_account: Mover a unha conta diferente - migrate_account_html: Si desexa redirixir esta conta hacia outra diferente, pode configuralo aquí. + migrate_account_html: Se desexa redirixir esta conta hacia outra diferente, pode configuralo aquí. or: ou or_log_in_with: ou conectar con providers: @@ -574,6 +580,7 @@ gl: resources: Recursos generic: changes_saved_msg: Cambios gardados correctamente!! + copy: Copiar save_changes: Gardar cambios validation_errors: one: Algo non está ben de todo! Por favor revise abaixo o erro @@ -734,7 +741,7 @@ gl: revoke_success: A sesión revocouse con éxito title: Sesións settings: - authorized_apps: Apps autorizados + authorized_apps: Apps autorizadas back: Voltar a Mastodon delete: Eliminación da conta development: Desenvolvemento @@ -747,7 +754,7 @@ gl: preferences: Preferencias settings: Axustes two_factor_authentication: Validar Doble Factor - your_apps: Os seus aplicativos + your_apps: As súas aplicacións statuses: attached: description: 'Axenado: %{attached}' @@ -915,6 +922,7 @@ gl: tips: Consellos title: Benvida, %{name}! users: + follow_limit_reached: Non pode seguir a máis de %{limit} persoas invalid_email: O enderezo de correo non é válido invalid_otp_token: Código de doble-factor non válido otp_lost_help_html: Si perde o acceso a ambos, pode contactar con %{email} diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 92d11f0d8..faa52fabc 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -420,7 +420,7 @@ hu: save_changes: Változások mentése validation_errors: one: Valami nincs rendjén! Kérlek tekintsd meg a hibát alant - other: Valami nincs rendjén! Kérlek tekintsd meg a %{count} darab hibát alant. + other: Valami nincs rendjén! Kérlek tekintsd meg a %{count} darab hibát alant imports: preface: Itt importálhatod egy másik instanciáról lementett adataidat, például követettjeid és letiltott felhasználóid listáját. success: Adataidat sikeresen feltöltöttük és feldolgozásukat megkezdtük diff --git a/config/locales/id.yml b/config/locales/id.yml index 8595fad99..38b08a257 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -18,7 +18,9 @@ id: nothing_here: Tidak ada apapun disini! people_followed_by: Orang yang diikuti %{name} people_who_follow: Orang-orang yang mengikuti %{name} - posts: Postingan + posts: + one: Toot + other: Toots unfollow: Berhenti mengikuti admin: accounts: @@ -182,7 +184,7 @@ id: '410': Halaman yang anda cari sudah tidak dapat ditemukan lagi. '422': content: Verifikasi keamanan gagal. Apa anda memblokir cookie? - title: Verifikasi keamanan gagal. + title: Verifikasi keamanan gagal exports: blocks: Anda blokir csv: CSV diff --git a/config/locales/io.yml b/config/locales/io.yml index d07997663..0c1e6520b 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -185,11 +185,11 @@ io: changes_saved_msg: Chanji senprobleme konservita! save_changes: Konservar la chanji validation_errors: - one: Ulo ne eventis senprobleme! Voluntez konsultar la suba eror-raporto. - other: Ulo ne eventis senprobleme! Voluntez konsultar la suba %{count} eror-raporti. + one: Ulo ne eventis senprobleme! Voluntez konsultar la suba eror-raporto + other: Ulo ne eventis senprobleme! Voluntez konsultar la suba %{count} eror-raporti imports: preface: Tu povas importacar kelka datumi, tal quala listi de omna homi quin tu sequas o blokusas, a tua konto di ca instaluro, per dosiero exportacita de altra instaluro. - success: Tua datumi esis senprobleme importacita ed esos traktita quale projetita. + success: Tua datumi esis senprobleme importacita ed esos traktita quale projetita types: blocking: Listo de blokusiti following: Listo de sequati diff --git a/config/locales/it.yml b/config/locales/it.yml index 6a831ab2c..4fffded5f 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -30,7 +30,9 @@ it: other_instances: Elenco istanze privacy_policy: Policy su la Privacy source_code: Codice sorgente - status_count_after: stati + status_count_after: + one: status + other: status status_count_before: Che hanno pubblicato terms: Termini di Servizio user_count_after: @@ -46,6 +48,7 @@ it: other: Seguaci following: Segui joined: Dal %{date} + link_verified_on: La proprietà di questo link è stata controllata il %{date} media: Media moved_html: "%{name} è stato spostato su %{new_profile_link}:" network_hidden: Questa informazione non e' disponibile @@ -118,13 +121,14 @@ it: moderation_notes: Note di moderazione most_recent_activity: Attività più recenti most_recent_ip: IP più recenti + no_limits_imposed: Nessun limite imposto not_subscribed: Non sottoscritto order: alphabetic: Alfabetico most_recent: Più recente title: Ordine outbox_url: URL outbox - perform_full_suspension: Esegui sospensione completa + perform_full_suspension: Sospendi profile_url: URL profilo promote: Promuovi protocol: Protocollo @@ -153,8 +157,10 @@ it: report: segnala targeted_reports: Rapporti che riguardano questo account silence: Silenzia + silenced: Silenziato statuses: Stati subscribe: Sottoscrivi + suspended: Sospeso title: Account unconfirmed_email: Email non confermata undo_silenced: Rimuovi silenzia @@ -171,6 +177,7 @@ it: create_domain_block: "%{name} ha bloccato il dominio %{target}" create_email_domain_block: "%{name} ha messo il dominio email %{target} nella blacklist" demote_user: "%{name} ha degradato l'utente %{target}" + destroy_custom_emoji: "%{name} ha distrutto l'emoji %{target}" destroy_domain_block: "%{name} ha sbloccato il dominio %{target}" destroy_email_domain_block: "%{name}ha messo il dominio email %{target} nella whitelist" destroy_status: "%{name} ha eliminato lo status di %{target}" @@ -249,12 +256,15 @@ it: create: Crea blocco hint: Il blocco dominio non previene la creazione di utenti nel database, ma applicherà automaticamente e retroattivamente metodi di moderazione specifici su quegli account. severity: + desc_html: "Silenzia rende i post di questo account invisibili a chiunque non lo stia seguendo. Sospendi elimina tutti i contenuti, media e dati del profilo dell'account. Usa Nessuno se vuoi solo bloccare i file media." noop: Nessuno silence: Silenzia suspend: Sospendi title: Nuovo blocco dominio reject_media: Rifiuta file media reject_media_hint: Rimuovi i file media salvati in locale e blocca i download futuri. Irrilevante per le sospensioni + reject_reports: Respingi rapporti + reject_reports_hint: Ignora tutti i rapporti provenienti da questo dominio. Irrilevante per sospensioni severities: noop: Nessuno silence: Silenzia @@ -279,6 +289,7 @@ it: domain: Dominio new: create: Aggiungi dominio + title: Nuova voce della lista nera delle email title: Lista nera email instances: account_count: Accounts conosciuti @@ -296,13 +307,22 @@ it: title: Inviti relays: add_new: Aggiungi ripetitore + delete: Cancella description_html: Un ripetitore di federazione è un server che fa da intermediario e scambia grandi quantità di toot pubblici tra server che si collegano e pubblicano su di esso. Può aiutare server piccoli e medi a ottenere contenuti dal fediverse, che altrimenti riceverebbero solo se i loro utenti locali seguissero altre persone su server remoti. + disable: Disabilita + disabled: Disabilitato + enable: Abilita enable_hint: Dopo l'attivazione, il vostro server riceverà tutti i toot pubblici da questo ripetitore, e inizierà a inviargli i suoi toot pubblici. + enabled: Abilitato inbox_url: Url Relay pending: In attesa dell'approvazione del ripetitore save_and_enable: Salva e attiva setup: Crea una connessione con un ripetitore + status: Status title: Ripetitori + report_notes: + created_msg: Nota rapporto creata! + destroyed_msg: Nota rapporto cancellata! reports: account: note: note @@ -313,6 +333,7 @@ it: assigned: Moderatore assegnato comment: none: Nessuno + created_at: Segnalato mark_as_resolved: Segna come risolto mark_as_unresolved: Segna come non risolto notes: @@ -320,10 +341,13 @@ it: create_and_resolve: Risolvi con nota create_and_unresolve: Riapri con nota delete: Elimina + placeholder: Descrivi quali azioni sono state intraprese, o ogni altro aggiornamento rilevante... reopen: Riapri rapporto report: 'Rapporto #%{id}' + reported_account: Account segnalato reported_by: Inviato da resolved: Risolto + resolved_msg: Rapporto risolto! status: Stato title: Rapporti unassign: Non assegnare @@ -334,15 +358,25 @@ it: desc_html: Conteggi degli status pubblicati localmente, degli utenti attivi e delle nuove registrazioni in gruppi settimanali title: Pubblica statistiche aggregate circa l'attività dell'utente bootstrap_timeline_accounts: + desc_html: Separa i nomi utente con virgola. Funziona solo con account locali e non bloccati. Quando vuoto, valido per tutti gli amministratori locali. title: Seguiti predefiniti per i nuovi utenti contact_information: username: Nome utente del contatto custom_css: desc_html: Modifica l'aspetto con il CSS caricato in ogni pagina title: CSS personalizzato + hero: + desc_html: Mostrata nella pagina iniziale. Almeno 600x100 px consigliati. Se non impostata, sarà usato il thumbnail dell'istanza + title: Immagine dell'eroe + mascot: + desc_html: Mostrata su più pagine. Almeno 293×205px consigliati. Se non impostata, sarò usata la mascotte predefinita + title: Immagine della mascotte peers_api_enabled: desc_html: Nomi di dominio che questa istanza ha incontrato nella fediverse title: Pubblica elenco di istanze scoperte + preview_sensitive_media: + desc_html: Le anteprime dei link su altri siti mostreranno un thumbnail anche se il media è segnato come sensibile + title: Mostra media sensibili nella anteprime OpenGraph registrations: closed_message: desc_html: Mostrato nella pagina iniziale quando le registrazioni sono chiuse. Puoi usare tag HTML @@ -362,12 +396,21 @@ it: show_staff_badge: title: Mostra badge staff site_description: + desc_html: Paragrafo introduttivo nella pagina iniziale. Descrive ciò che rende speciale questo server Mastodon e qualunque altra cosa sia importante dire. Potete usare marcatori HTML, in particolare <a> e <em>. title: Descrizione istanza + site_description_extended: + desc_html: Un posto adatto per pubblicare regole di comportamento, linee guida e altre cose specifiche della vostra istanza. Potete usare marcatori HTML + title: Informazioni estese personalizzate site_short_description: + desc_html: Mostrato nella barra laterale e nei tag meta. Descrive in un paragrafo che cos'è Mastodon e che cosa rende questo server speciale. Se vuoto, sarà usata la descrizione predefinita dell'istanza. title: Breve descrizione dell'istanza site_terms: + desc_html: Potete scrivere la vostra politica sulla privacy, condizioni del servizio o altre informazioni legali. Potete usare tag HTML title: Termini di servizio personalizzati site_title: Nome istanza + thumbnail: + desc_html: Usato per anteprime tramite OpenGraph e API. 1200x630px consigliati + title: Thumbnail dell'istanza timeline_preview: desc_html: Mostra la timeline pubblica sulla pagina iniziale title: Anteprima timeline @@ -382,6 +425,7 @@ it: media: title: Media no_media: Nessun media + no_status_selected: Nessun status è stato modificato perché nessuno era stato selezionato title: Gli status dell'account with_media: con media subscriptions: @@ -389,6 +433,12 @@ it: confirmed: Confermato expires_in: Scade in topic: Argomento + suspensions: + bad_acct_msg: Il valore di conferma non corrisponde. Stai sospendendo l'account giusto? + hint_html: 'Per confermare la sospensione dell''account, inserisci %{value} nel campo qui sotto:' + proceed: Continua + title: Sospendi %{acct} + warning_html: 'La sospensione dell''account comporta la cancellazione irreversibile dei suoi dati, che comprendono:' title: Amministrazione application_mailer: notification_preferences: Cambia preferenze email @@ -433,6 +483,7 @@ it: post_follow: close: Oppure puoi chiudere questa finestra. return: Mostra il profilo dell'utente + web: Vai al web title: Segui %{acct} datetime: distance_in_words: @@ -498,14 +549,17 @@ it: domain: Dominio explanation_html: Se vuoi garantire la privacy dei tuoi status, devi sapere chi ti sta seguendo. I tuoi status privati vengono inviati a tutte le istanze su cui hai dei seguaci. Puoi controllare chi sono i tuoi seguaci, ed eliminarli se non hai fiducia che la tua privacy venga rispettata dallo staff o dal software di quelle istanze. followers_count: Numero di seguaci + lock_link: Blocca il tuo account purge: Elimina dai seguaci true_privacy_html: Tieni presente che l'effettiva riservatezza si può ottenere solo con la crittografia end-to-end. unlocked_warning_html: Chiunque può seguirti per vedere immediatamente i tuoi status privati. %{lock_link} per poter esaminare e respingere gli utenti che vogliono seguirti. + unlocked_warning_title: Il tuo account non è bloccato footer: developers: Sviluppatori more: Altro… generic: changes_saved_msg: Modifiche effettuate con successo! + copy: Copia save_changes: Salva modifiche validation_errors: one: Qualcosa ancora non va bene! Per favore, controlla l'errore qui sotto @@ -617,6 +671,9 @@ it: no_account_html: Non hai un account? Puoi iscriverti qui proceed: Conferma prompt: 'Stai per seguire:' + remote_interaction: + proceed: Continua per interagire + prompt: 'Vuoi interagire con questo toot:' remote_unfollow: error: Errore title: Titolo @@ -626,13 +683,29 @@ it: browsers: blackberry: Blackberry chrome: Chrome + edge: Microsoft Edge firefox: Firefox generic: Browser sconosciuto + ie: Internet Explorer + opera: Opera + safari: Safari current_session: Sessione corrente description: "%{browser} su %{platform}" explanation: Questi sono i browser da cui attualmente è avvenuto l'accesso al tuo account Mastodon. + ip: IP platforms: + adobe_air: Adobe Air + android: Android + blackberry: Blackberry + chrome_os: ChromeOS + firefox_os: Firefox OS + ios: iOS + linux: Linux + mac: Mac other: piattaforma sconosciuta + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone title: Sessioni settings: authorized_apps: Applicazioni autorizzate @@ -671,6 +744,7 @@ it: private: Un toot non pubblico non può essere fissato in cima reblog: Un toot condiviso non può essere fissato in cima show_more: Mostra di più + sign_in_to_participate: Accedi per partecipare alla conversazione visibilities: private: Mostra solo ai tuoi seguaci private_long: Mostra solo ai seguaci @@ -687,6 +761,7 @@ it: themes: contrast: Contrasto elevato default: Mastodon + mastodon-light: Mastodon (chiaro) time: formats: default: "%b %d, %Y, %H:%M" @@ -701,6 +776,7 @@ it: instructions_html: "Scannerizza questo QR code con Google Authenticator o un'app TOTP simile sul tuo telefono. Da ora in poi, quell'applicazione genererà codici da inserire necessariamente per eseguire l'accesso." lost_recovery_codes: I codici di recupero ti permettono di accedere al tuo account se perdi il telefono. Se hai perso i tuoi codici di recupero, puoi rigenerarli qui. Quelli vecchi saranno annullati. manual_instructions: 'Se non puoi scannerizzare il QR code e hai bisogno di inserirlo manualmente, questo è il codice segreto in chiaro:' + recovery_codes: Codici di recupero del backup recovery_codes_regenerated: I codici di recupero sono stati rigenerati recovery_instructions_html: Se perdi il telefono, puoi usare uno dei codici di recupero qui sotto per riottenere l'accesso al tuo account. Conserva i codici di recupero in un posto sicuro. Ad esempio puoi stamparli e conservarli insieme ad altri documenti importanti. setup: Configura @@ -728,6 +804,11 @@ it: tips: Suggerimenti title: Benvenuto a bordo, %{name}! users: + follow_limit_reached: Non puoi seguire più di %{limit} persone invalid_email: L'indirizzo email inserito non è valido invalid_otp_token: Codice d'accesso non valido seamless_external_login: Ti sei collegato per mezzo di un servizio esterno, quindi le impostazioni di email e password non sono disponibili. + signed_in_as: 'Hai effettuato l''accesso come:' + verification: + explanation_html: 'Puoi certificare te stesso come proprietario dei link nei metadati del tuo profilo. Per farlo, il sito a cui punta il link deve contenere un link che punta al tuo profilo Mastodon. Il link di ritorno deve avere l''attributo rel="me". Il testo del link non ha importanza. Ecco un esempio:' + verification: Verifica diff --git a/config/locales/ja.yml b/config/locales/ja.yml index ea1d665da..90ff66acb 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -263,6 +263,8 @@ ja: title: 新規ドメインブロック reject_media: メディアファイルを拒否 reject_media_hint: ローカルに保存されたメディアファイルを削除し、今後のダウンロードを拒否します。停止とは無関係です + reject_reports: レポートを拒否 + reject_reports_hint: このドメインからのすべてのレポートを無視します。停止とは無関係です severities: noop: なし silence: サイレンス diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 5ac254df4..1b74405d2 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -481,7 +481,7 @@ ka: deletes: bad_password_msg: კარგად სცადეთ, ჰაკერებო! არასწორი პაროლი confirm_password: იდენტობის დასამოწმებლად შეიყვანეთ მიმდინარე პაროლი - description_html: ეს სამუდამოდ, დაუბრუნებლად გააუქმებს კონტენტს თქვენი ანგარიშიდან და მოახდენს მის დეაქტივაციას. მომხმარებლის სახელი კი, სამომავლო იმპერსონაციების შესაჩერებლად, გახდება რეზერვირებული + description_html: ეს სამუდამოდ, დაუბრუნებლად გააუქმებს კონტენტს თქვენი ანგარიშიდან და მოახდენს მის დეაქტივაციას. მომხმარებლის სახელი კი, სამომავლო იმპერსონაციების შესაჩერებლად, გახდება რეზერვირებული. proceed: ანგარიშის გაუქმება success_msg: თქვენი ანგარიში წარმატებით გაუქმდა warning_html: მოცულობის გაუქმება გარანტირებულია მხოლოდ ამ ინსტანციაზე. კონტენტი რომელიც ფართო მასშტაბით გაზიარდა უფრო დატოვებს კვალს. ოფლაინ სერვერები და სერვერები, რომლებმაც შეწყვიტეს თქვენი განახლებების გამოწერა არ განაახლებენ მონაცემთა ბაზებს. diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 9f9875a16..e1cb350d1 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -48,6 +48,7 @@ ko: other: 팔로워 following: 팔로잉 joined: "%{date}에 가입함" + link_verified_on: "%{date}에 이 링크의 소유가 확인되었습니다" media: 미디어 moved_html: "%{name}은 %{new_profile_link}으로 이동되었습니다:" network_hidden: 이 정보는 사용할 수 없습니다 @@ -120,13 +121,14 @@ ko: moderation_notes: 모더레이션 기록 most_recent_activity: 최근 활동 most_recent_ip: 최근 IP + no_limits_imposed: 제한 없음 not_subscribed: 구독하지 않음 order: alphabetic: 알파벳 순 most_recent: 최근 순 title: 순서 outbox_url: 발신함 URL - perform_full_suspension: 완전히 정지시키기 + perform_full_suspension: 정지시키기 profile_url: 프로필 URL promote: 모더레이터로 승급 protocol: 프로토콜 @@ -155,8 +157,10 @@ ko: report: 신고 targeted_reports: 이 계정에 대한 신고 silence: 침묵 + silenced: 침묵 됨 statuses: 툿 수 subscribe: 구독하기 + suspended: 정지 됨 title: 계정 unconfirmed_email: 미확인 된 이메일 주소 undo_silenced: 침묵 해제 @@ -173,6 +177,7 @@ ko: create_domain_block: "%{name}이 도메인 %{target}를 차단했습니다" create_email_domain_block: "%{name}이 이메일 도메인 %{target}를 차단했습니다" demote_user: "%{name}이 %{target}을 강등했습니다" + destroy_custom_emoji: "%{name}이 %{target} 에모지를 삭제함" destroy_domain_block: "%{name}이 도메인 %{target}의 차단을 해제했습니다" destroy_email_domain_block: "%{name}이 이메일 도메인 %{target}을 화이트리스트에 넣었습니다" destroy_status: "%{name}이 %{target}의 툿을 삭제했습니다" @@ -260,6 +265,8 @@ ko: title: 새로운 도메인 차단 reject_media: 미디어 파일 거부하기 reject_media_hint: 로컬에 저장된 미디어 파일을 삭제하고, 이후로도 다운로드를 거부합니다. 정지와는 관계 없습니다 + reject_reports: 신고 거부 + reject_reports_hint: 이 도메인으로부터의 모든 신고를 무시합니다. 정지와는 무관합니다 severities: noop: 없음 silence: 침묵 @@ -302,8 +309,13 @@ ko: title: 초대 relays: add_new: 릴레이 추가 + delete: 삭제 description_html: "연합 릴레이는 서버들 사이에서 많은 양의 공개 툿을 구독하고 중개하는 서버입니다. 이것은 중소 규모의 서버에서 연합우주를 발견하는 데에 도움을 줄 수 있습니다, 이제 로컬 유저들이 다른 서버의 유저들을 수동으로 팔로우 하지 않아도 됩니다." + disable: 비활성화 + disabled: 비활성화 됨 + enable: 활성화 enable_hint: 활성화 되면, 이 릴레이의 모든 공개 툿을 구독하고 이 서버의 공개 툿을 전송하게 됩니다. + enabled: 활성화 됨 inbox_url: 릴레이 URL pending: 릴레이의 승인 대기중 save_and_enable: 저장하고 활성화 @@ -352,13 +364,16 @@ ko: title: 새 유저가 팔로우 할 계정들 contact_information: email: 공개할 메일 주소를 입력 - username: 아이디를 입력 + username: 연락 받을 관리자 유저네임 custom_css: desc_html: 모든 페이지에 적용할 CSS title: 커스텀 CSS hero: desc_html: 프론트페이지에 표시 됩니다. 최소 600x100픽셀을 권장합니다. 만약 설정되지 않았다면, 인스턴스의 썸네일이 사용 됩니다 title: 히어로 이미지 + mascot: + desc_html: 여러 페이지에서 보여집니다. 최소 293x205px을 추천합니다. 설정 되지 않은 경우, 기본 마스코트가 사용 됩니다 + title: 마스코트 이미지 peers_api_enabled: desc_html: 이 인스턴스가 페디버스에서 만났던 도메인 네임들 title: 발견 된 인스턴스들의 리스트 발행 @@ -567,6 +582,7 @@ ko: resources: 리소스 generic: changes_saved_msg: 정상적으로 변경되었습니다! + copy: 복사 save_changes: 변경 사항을 저장 validation_errors: one: 오류가 발생했습니다. 아래 오류를 확인해 주십시오 @@ -908,8 +924,12 @@ ko: tips: 팁 title: 환영합니다 %{name} 님! users: + follow_limit_reached: 당신은 %{limit}명의 사람을 넘어서 팔로우 할 수 없습니다 invalid_email: 메일 주소가 올바르지 않습니다 invalid_otp_token: 2단계 인증 코드가 올바르지 않습니다 otp_lost_help_html: 만약 양쪽 모두를 잃어버렸다면 %{email}을 통해 복구할 수 있습니다 seamless_external_login: 외부 서비스를 이용해 로그인 했습니다, 패스워드와 이메일 설정을 할 수 없습니다. signed_in_as: '다음과 같이 로그인 중:' + verification: + explanation_html: '당신은 프로필 메타데이터의 링크 소유자임을 검증할 수 있습니다. 이것을 하기 위해서는, 링크 된 웹사이트에서 당신의 마스토돈 프로필을 역으로 링크해야 합니다. 역링크는 반드시 rel="me" 속성을 가지고 있어야 합니다. 링크의 텍스트는 상관이 없습니다. 여기 예시가 있습니다:' + verification: 검증 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 997df0164..ab5a72a66 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -48,6 +48,7 @@ nl: other: Volgers following: Volgend joined: Geregistreerd in %{date} + link_verified_on: Eigendom van deze link is gecontroleerd op %{date} media: Media moved_html: "%{name} is verhuisd naar %{new_profile_link}:" network_hidden: Deze informatie is niet beschikbaar @@ -120,13 +121,14 @@ nl: moderation_notes: Opmerkingen voor moderatoren most_recent_activity: Laatst actief most_recent_ip: Laatst gebruikt IP-adres + no_limits_imposed: Geen limieten ingesteld not_subscribed: Niet geabonneerd order: alphabetic: Alfabetisch most_recent: Meest recent title: Sorteren outbox_url: Outbox-URL - perform_full_suspension: Volledig opschorten + perform_full_suspension: Opschorten profile_url: Profiel-URL promote: Promoveren protocol: Protocol @@ -155,8 +157,10 @@ nl: report: gerapporteerd targeted_reports: Over dit account aangemaakte rapportages silence: Negeren + silenced: Genegeerd statuses: Toots subscribe: Abonneren + suspended: Opgeschort title: Accounts unconfirmed_email: Onbevestigd e-mailadres undo_silenced: Niet langer negeren @@ -173,6 +177,7 @@ nl: create_domain_block: Domein %{target} is door %{name} geblokkeerd create_email_domain_block: E-maildomein %{target} is door %{name} op de zwarte lijst geplaatst demote_user: Gebruiker %{target} is door %{name} gedegradeerd + destroy_custom_emoji: "%{name} verwijderde emoji %{target}" destroy_domain_block: Domein %{target} is door %{name} gedeblokkeerd destroy_email_domain_block: E-maildomein %{target} is door %{name} op de witte lijst geplaatst destroy_status: Toot van %{target} is door %{name} verwijderd @@ -258,6 +263,8 @@ nl: title: Nieuwe domeinblokkade reject_media: Mediabestanden verwerpen reject_media_hint: Verwijderd lokaal opgeslagen mediabestanden en weigert deze in de toekomst te downloaden. Irrelevant voor opgeschorte domeinen + reject_reports: Rapportages weigeren + reject_reports_hint: Alle rapportages die vanaf dit domein komen negeren. Irrelevant voor opgeschorte domeinen severities: noop: Geen silence: Negeren @@ -300,8 +307,13 @@ nl: title: Uitnodigingen relays: add_new: Nieuwe relayserver toevoegen + delete: Verwijderen description_html: Een federatierelay is een tussenliggende server die grote hoeveelheden openbare toots uitwisselt tussen servers die zich hierop hebben geabonneerd. Het kan kleine en middelgrote servers helpen om content uit de fediverse te ontdekken, waarvoor anders lokale gebruikers handmatig mensen van externe servers moeten volgen. + disable: Uitschakelen + disabled: Uitgeschakeld + enable: Inschakelen enable_hint: Eenmaal ingeschakeld gaat jouw server zich op alle openbare toots van deze relayserver abonneren en stuurt het de openbare toots van jouw server naar de relayserver. + enabled: Ingeschakeld inbox_url: Relay-URL pending: Aan het wachten op toestemming van de relayserver save_and_enable: Opslaan en inschakelen @@ -357,6 +369,9 @@ nl: hero: desc_html: Wordt op de voorpagina getoond. Tenminste 600x100px aanbevolen. Wanneer dit niet is ingesteld wordt de thumbnail van de Mastodonserver getoond title: Hero-afbeelding + mascot: + desc_html: Wordt op meerdere pagina's weergegeven. Tenminste 293×205px aanbevolen. Wanneer dit niet is ingesteld wordt de standaardmascotte getoond + title: Mascotte-afbeelding peers_api_enabled: desc_html: Domeinnamen die deze server in de fediverse is tegengekomen title: Lijst van bekende servers publiceren @@ -565,6 +580,7 @@ nl: resources: Hulpmiddelen generic: changes_saved_msg: Wijzigingen succesvol opgeslagen! + copy: Kopiëren save_changes: Wijzigingen opslaan validation_errors: one: Er is iets niet helemaal goed! Bekijk onderstaande fout @@ -906,8 +922,12 @@ nl: tips: Tips title: Welkom aan boord %{name}! users: + follow_limit_reached: Je kunt niet meer dan %{limit} accounts volgen invalid_email: E-mailadres is ongeldig invalid_otp_token: Ongeldige tweestaps-aanmeldcode otp_lost_help_html: Als je toegang tot beiden kwijt bent geraakt, neem dan contact op via %{email} seamless_external_login: Je bent ingelogd via een externe dienst, daarom zijn wachtwoorden en e-mailinstellingen niet beschikbaar. signed_in_as: 'Ingelogd als:' + verification: + explanation_html: 'Je kunt jezelf verifiëren als de eigenaar van de links in de metadata van jouw profiel. Hiervoor moet op de gelinkte website een link terug naar jouw Mastodonprofiel staan. Deze link moet het rel="me"-attribuut bevatten. De omschrijving van de link maakt niet uit. Hier is een voorbeeld:' + verification: Verificatie diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 01063ab57..0fb4684b1 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -48,6 +48,7 @@ oc: other: Seguidors following: Abonaments joined: Arribèt en %{date} + link_verified_on: La proprietat d’aqueste ligam foguèt verificada lo %{date} media: Mèdias moved_html: "%{name} a mudat a %{new_profile_link} :" network_hidden: Aquesta informacion es pas disponibla @@ -120,13 +121,14 @@ oc: moderation_notes: Nòtas de moderacion most_recent_activity: Activitat mai recenta most_recent_ip: IP mai recenta + no_limits_imposed: Cap de limit impausat not_subscribed: Pas seguidor order: alphabetic: Alfabetic most_recent: Mai recent title: Ordre outbox_url: URL Outbox - perform_full_suspension: Botar en tren la suspension complèta + perform_full_suspension: Suspendre profile_url: URL del perfil promote: Promòure protocol: Protocòl @@ -155,8 +157,10 @@ oc: report: rapòrt targeted_reports: Rapòrts faches tocant aqueste compte silence: Silenci + silenced: Rescondut statuses: Estatuts subscribe: S’abonar + suspended: Suspendut title: Comptes unconfirmed_email: Adreça pas confirmada undo_silenced: Levar lo silenci @@ -173,6 +177,7 @@ oc: create_domain_block: "%{name} bloquèt lo domeni %{target}" create_email_domain_block: "%{name} botèt a la lista nègra lo domeni de corrièl %{target}" demote_user: "%{name} retragradèt l‘utilizaire %{target}" + destroy_custom_emoji: "%{name} destruguèt l’emoji %{target}" destroy_domain_block: "%{name} desbloquèt lo domeni %{target}" destroy_email_domain_block: "%{name} botèt a la lista blanca lo domeni de corrièl %{target}" destroy_status: "%{name} levèt l‘estatut a %{target}" @@ -258,6 +263,8 @@ oc: title: Nòu blocatge domeni reject_media: Regetar los fichièrs mèdias reject_media_hint: Lèva los fichièrs gardats localament e regèta las demandas de telecargament dins lo futur. Servís pas a res per las suspensions + reject_reports: Regetar los senhalaments + reject_reports_hint: Ignorer totes los senhalaments que venon d’aqueste domeni. Pas pertiment per las suspensions severities: noop: Cap silence: Silenci @@ -300,8 +307,13 @@ oc: title: Convits relays: add_new: Ajustar un nòu relai + delete: Suprimir description_html: Un relai de federacion es un servidor intermediari qu’escàmbia de bèls volumes de tuts publics entre servidors que son abonats e i publican.Pòt ajudar de pichons e mejans servidors a trobar de contenguts del fediverse estant, qu’autrament demandariá als utilizaires locals de s’abonar manualament a d’autres monde marcats sus de servidors alonhats. + disable: Desactivar + disabled: Desactivat + enable: Activat enable_hint: Un còp activat, vòstre servidor s’abonarà a totes los tuts publics del relai estant, e començarà de mandar sos tuts publics a aqueste d’enlà. + enabled: Activat inbox_url: URL del relai pending: En espèra d’aprovacion del relai save_and_enable: Salvar e activar @@ -357,6 +369,9 @@ oc: hero: desc_html: Mostrat en primièra pagina. Almens 600x100px recomandat. S’es pas configurat l’imatge de l’instància serà mostrat title: Imatge de l’eròi + mascot: + desc_html: Mostrat sus mantun paginas. Almens 293×205px recomandat. S’es pas configurat, mostrarem la mascòta per defaut + title: Imatge de la mascòta peers_api_enabled: desc_html: Noms de domeni qu’aquesta instància a trobats pel fediverse title: Publica la lista de las instàncias conegudas @@ -621,6 +636,7 @@ oc: resources: Ressorsas generic: changes_saved_msg: Cambiaments ben realizats ! + copy: Copiar save_changes: Salvar los cambiaments validation_errors: one: I a quicòm que truca ! Mercés de corregir l’error çai-jos @@ -836,11 +852,12 @@ oc:

Politica de confidencialitat

Quinas informacions reculhèm ?

-
  • -
      Inforacions de basa del compte : se vos marcatz sus aqueste servidor, vos podèm demandar de picar un escais-nom, una adreça de corrièl e un senhal. Podètz tanben ajustar d’informacions de perfil addicionalas coma un nom de far veire, una biografia, un imatge de perfil e una banièra. L’escais-nom, lo nom d’afichatge, la biografia, l’imatge de perfil e la banièra son totjorn indicats per èsser vist publicament. -
    • Publicacions, abonaments e autras informacions publicas : La lista del monde que seguètz es visibla publicament, tot parièr per vòstres seguidors. Quand enviatz un messatge, la data e l’ora son gardats, l’aplicacion qu’avètz utilizada tanben. Los messatges pòdon conténer de mèdias juntats coma d’imatge e vidèos. Las publicacions publicas e pas listadas son disponiblas publicament. Quand penjatz una publicacion per vòstre perfil, aquò tanben es visible per tot lo monde. Vòstras publicacions son mandadas a vòstre seguidors, dins qualques cases aquò significa que passaràn per diferents servidors e seràn copiadas e gardadas sus aqueles servidors. Quand escafatz de publicacions, aquò es tanben mandat a vòstre seguidors. L’acion de partejar o d’ajustar als favorits una publicacion es totjorn quicòm de public.
    • -
    • Publicacions dirèctas e solament pels seguidors :
    • totas las publicacions son gardadas e tractadas pel servidor. Las publicacions pas que per vòstres seguidors son enviadas a vòstres seguidors e las personas mencionadas dedins, las publicacions dirèctas son pas qu’enviadas a las personas mencionadas. Dins qualques cases aquò significa que passaràn per diferents servidors, copiadas e gardadas sus eles. Ensagem de limitar l’accès a aquelas publicacions a monde autorizat, mas los demai servidors pòdon fracar a far parièr. A causa d’aquò es fòrça important de repassar los servidors d’apertenéncia de vòstres seguidors. Podètz activar una opcion per autorizar o regetar una demanda de seguiment dins los paramètres. Vos cal pas oblidar que’ls administrators dels servidors e dels servidors de recepcion pòdon veire aqueles messatges, e que’ls destinataris pòdon realizar de captura d’ecran, copiar e tornar partejar los messatges.Partegetz pas cap informacion perilhosa sus Mastodon
    • . -
    • Adreças IP e autras metadonadas : quand vos connectatz, enregistrem l’adreça IP qu’utilizatz per establir la connexion, e tanben lo nom de vòstre navigador. Totas las sessions de connexion son disponiblas per que las repassetz e tiretz dins los paramètres. Las darrièras adreças IP son salvagardas fins a 12 meses. Podèm tanben gardar de jornals d’audit del servidor que pòdon conténer las adreças IP de cada requèstas mandadas a nòstre servidor.
    • +
        +
      • Inforacions de basa del compte : se vos marcatz sus aqueste servidor, vos podèm demandar de picar un escais-nom, una adreça de corrièl e un senhal. Podètz tanben ajustar d’informacions de perfil addicionalas coma un nom de far veire, una biografia, un imatge de perfil e una banièra. L’escais-nom, lo nom d’afichatge, la biografia, l’imatge de perfil e la banièra son totjorn indicats per èsser vistes publicament.
      • +
      • Publicacions, abonaments e autras informacions publicas : La lista del monde que seguètz es visibla publicament, tot parièr per vòstres seguidors. Quand enviatz un messatge, la data e l’ora son gardats, l’aplicacion qu’avètz utilizada tanben. Los messatges pòdon conténer de mèdias juntats coma d’imatge e vidèos. Las publicacions publicas e pas listadas son disponiblas publicament. Quand penjatz una publicacion per vòstre perfil, aquò tanben es visible per tot lo monde. Vòstras publicacions son mandadas a vòstre seguidors, dins qualques cases aquò significa que passaràn per diferents servidors e seràn copiadas e gardadas sus aqueles servidors. Quand escafatz de publicacions, aquò es tanben mandat a vòstre seguidors. L’accion de partejar o d’ajustar als favorits una publicacion es totjorn quicòm de public.
      • +
      • Publicacions dirèctas e solament pels seguidors :
      • totas las publicacions son gardadas e tractadas pel servidor. Las publicacions pas que per vòstres seguidors son enviadas a vòstres seguidors e las personas mencionadas dedins, las publicacions dirèctas son pas qu’enviadas a las personas mencionadas. Dins qualques cases aquò significa que passaràn per diferents servidors, copiadas e gardadas sus eles. Ensagem de limitar l’accès a aquelas publicacions a monde autorizat, mas los demai servidors pòdon fracar a far parièr. A causa d’aquò es fòrça important de repassar los servidors d’apertenéncia de vòstres seguidors. Podètz activar una opcion per autorizar o regetar una demanda de seguiment dins los paramètres. Vos cal pas oblidar que’ls administrators dels servidors e dels servidors de recepcion pòdon veire aqueles messatges, e que’ls destinataris pòdon realizar de captura d’ecran, copiar e tornar partejar los messatges.Partegetz pas cap informacion perilhosa sus Mastodon
      • . +
      • Adreças IP e autras metadonadas : quand vos connectatz, enregistrem l’adreça IP qu’utilizatz per establir la connexion, e tanben lo nom de vòstre navigador. Totas las sessions de connexion son disponiblas per que las repassetz e tiretz dins los paramètres. Las darrièras adreças IP son salvagardas fins a 12 meses. Podèm tanben gardar de jornals d’audit del servidor que pòdon conténer las adreças IP de cada requèstas mandadas a nòstre servidor.
      • +

      @@ -867,9 +884,53 @@ oc:

      Farem esfòrces per :

        -
      • Gardar los jornals del servidor que contenon las adreças IP de totas las demandas al servidor pas mai de 90 jorns.
      • -
      • Gardar las adreças IP ligadas als utilizaires e lors publicacions pas mai de 12 messes.
      • +
      • Gardar los jornals del servidor que contenon las adreças IP de totas las demandas al servidor pas mai de 90 jorns.
      • +
      • Gardar las adreças IP ligadas als utilizaires e lors publicacions pas mai de 12 messes.
      + +

      Podètz demandar e telecargar vòstre archiu de contengut, amb vòstras publicacions, los mèdias enviats, l’imatge de perfil e l’imatge de bandièra.

      + +

      Podètz suprimir sens anullacion possibla vòstre compte quand volgatz.

      + +
      + + +

      Utilizem de cookies ?

      + +

      Òc-ben. Los cookies son de pichons fichièrs qu’un site o sos provesidors de servicis plaçan dins lo disc dur de vòstre ordenador via lo navigator Web (Se los acceptatz). Aqueles cookies permeton al site de reconéisser vòstre navigator e se tenètz un compte enregistrat de l’associar a vòstre compte.

      + +

      Empleguem de cookies per comprendre e enregistrar vòstras preferéncias per vòstras visitas venentas

      + +
      + +

      Divulguem d’informacions a de tèrces ?

      + + +

      Vendèm pas, comercem o qualque transferiment que siasque a de tèrces vòstras informacions personalas identificablas. Aquò inclutz pas los tèrces partits de confisança que nos assiston a menar nòstre site, menar nòstre afar o vos servir, baste que son d’acòrd per gardar aquelas informacions confidencialas. Pòt tanben arribar que liberèssem vòstras informacions quand cresèm qu’es apropriat d’o far per se sometre a la lei, per refortir nòstras politicas, o per protegir los dreches, proprietats o seguritat de qualqu’un o de nosautres.

      + +

      Vòstre contengut public pòt èsser telecargat per los autres servidors del malhum. Vòstras publicacions publicas e las dels seguidors solament son enviadas als servidors qu’albergan vòstres seguidors, los messatges dirèctes son mandats als servidors dels destinaris se son pas de vòstra instància.

      + +

      Quand autorizatz una aplicacion d’utilizar vòstre compte, segon l’encastre que volètz permetre, pòt accedir a l’informacion de vòstre perfil public, vòstra lista d’abonaments, vòstres seguidors, vòstras listas, totas vòstras publicacions e vòstres favorits. Las aplicacions pòdon pas jamai accedir a vòstra adreça electronica o vòstre senhal.

      + +
      + +

      Utilizacion del site pels enfants

      + +

      S’aqueste servidor es en EU o la EEA : òstre site, nòstres produches e servicis son totas a destinacion de monde de mai de 16 ans. S’avètz mens de 16 ans, per cumplir lo RGPD (Reglament General de Proteccion de Donadas) utilizetz pas aqueste site.

      + +

      S’aqueste servidor se tròba en los Estats Units : nòstre site, nòstres produches e servicis son totas a destinacion de monde de mai de 13 ans. S’avètz mens de 13 ans, per acontentar las exigéncias del COPPA (Children's Online Privacy Protection Act) utilizetz pas aqueste site.

      + +

      Las exigéncias legalas pòdon èsser diferentas se lo servidor es en una autra juridiccion

      + +
      + +

      Cambiament dins nòstra politica de confidencialitat

      + +

      Se decidèm de cambiar nòstra politica de confidencialitat, publicarem los cambiaments sus aquesta pagina.

      + +

      Aqueste document es jos licéncia CC-BY-SA. Darrièra mesa a jorn lo 4 de març de 2018

      + +

      Prima adaptacion de la politica de confidencialitat de Discourse.

      title: Condicions d’utilizacion e politica de confidencialitat de %{instance} themes: contrast: Fòrt contrast @@ -919,8 +980,12 @@ oc: tips: Astúcias title: Vos desirem la benvenguda a bòrd %{name} ! users: + follow_limit_reached: Podètz pas sègre mai de %{limit} personas invalid_email: L’adreça de corrièl es invalida invalid_otp_token: Còdi d’autentificacion en dos temps invalid otp_lost_help_html: Se perdatz l’accès al dos, podètz benlèu contactar %{email} seamless_external_login: Sètz connectat via un servici extèrn, los paramètres de senhal e de corrièl son doncas pas disponibles. signed_in_as: 'Session a :' + verification: + explanation_html: 'Podètz verificar vosautres meteisses coma proprietari dels ligams per las metadonadas de vòstre perfil. Per aquò far, lo site Web ligat deu conténer un ligam cap a vòstre perfil Mastodon. Lo ligam deu aver un atribut rel="me". Lo contengut tèxte del ligam impòrta pas. Vaquí un exemple :' + verification: Verificacion diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 74b2470bd..9c893b605 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -373,7 +373,7 @@ pl: desc_html: Modyfikuj wygląd pliku CSS ładowanego na każdej stronie title: Niestandardowy CSS hero: - desc_html: Wyświetlany na stronie głównej. Zalecany jest rozmiar przynajmniej 600x100 pikseli. Jeżeli nie ustawiony, zostanie użyta miniatura instancji. + desc_html: Wyświetlany na stronie głównej. Zalecany jest rozmiar przynajmniej 600x100 pikseli. Jeżeli nie ustawiony, zostanie użyta miniatura instancji title: Obraz bohatera mascot: desc_html: Wyświetlany na wielu stronach. Zalecany jest rozmiar przynajmniej 293px × 205px. Jeżeli nie ustawiono, zostanie użyta domyślna. diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 1ec00f85f..2b9bf747d 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -48,6 +48,7 @@ pt-BR: other: Seguidores following: Seguindo joined: Participa desde %{date} + link_verified_on: A posse desse link foi checada em %{date} media: Mídia moved_html: "%{name} se mudou para %{new_profile_link}:" network_hidden: Esta informação não está disponível @@ -120,13 +121,14 @@ pt-BR: moderation_notes: Notas de moderação most_recent_activity: Atividade mais recente most_recent_ip: IP mais recente + no_limits_imposed: Nenhum limite imposto not_subscribed: Não está inscrito order: alphabetic: Alfabética most_recent: Mais recente title: Ordem outbox_url: URL da caixa de saída - perform_full_suspension: Aplicar suspensão total + perform_full_suspension: Suspender profile_url: URL do perfil promote: Promover protocol: Protocolo @@ -155,8 +157,10 @@ pt-BR: report: relatórios targeted_reports: Denúncias feitas sobre esta conta silence: Silenciar + silenced: Silenciado statuses: Postagens subscribe: Inscrever-se + suspended: Suspenso title: Contas unconfirmed_email: E-mail não confirmado undo_silenced: Retirar silenciamento @@ -173,6 +177,7 @@ pt-BR: create_domain_block: "%{name} bloqueou o domínio %{target}" create_email_domain_block: "%{name} colocou o domínio de e-mail %{target} na lista negra" demote_user: "%{name} rebaixou o usuário %{target}" + destroy_custom_emoji: "%{name} destruiu emoji %{target}" destroy_domain_block: "%{name} desbloqueou o domínio %{target}" destroy_email_domain_block: "%{name} retirou o domínio de e-mail %{target} da lista negra" destroy_status: "%{name} removeu postagem feita por %{target}" @@ -258,6 +263,8 @@ pt-BR: title: Novo bloqueio de domínio reject_media: Rejeitar arquivos de mídia reject_media_hint: Remove arquivos de mídia armazenados localmente e recusa quaisquer outros no futuro. Irrelevante para suspensões + reject_reports: Rejeitar denúncias + reject_reports_hint: Ignorar todas as denúncias vindas deste domíno. Irrelevante para suspensões severities: noop: Nenhum silence: Silêncio @@ -300,9 +307,16 @@ pt-BR: title: Convites relays: add_new: Adicionar novo repetidor + delete: Excluir description_html: Um repetidor de federação é um servidor intermediário que troca um grande volume de toots públicos entre servidores que se inscrevem e publicam nele. O repetidor pode ser usado para ajudar servidores pequenos e médios a descobrir conteúdo do fediverso, que normalmente precisariam que usuários locais manualmente seguissem outras pessoas em servidores remotos. + disable: Desativar + disabled: Desabilitar + enable: Habilitar enable_hint: Uma vez habilitado, seu servidor vai se inscrever para receber todos os toots públicos desse repetidor; E vai começar a enviar todos os toots públicos desse servidor para o repetidor. + enabled: Habilitado inbox_url: URL do repetidor + pending: Esperando pela aprovação do repetidor + save_and_enable: Salvar e habilitar setup: Configurar uma conexão de repetidor status: Status title: Repetidores @@ -355,6 +369,9 @@ pt-BR: hero: desc_html: Aparece na página inicial. Ao menos 600x100px é recomendado. Se não estiver definido, o thumbnail da instância é usado no lugar title: Imagem de capa + mascot: + desc_html: Mostrado em diversas páginas. Ao menos 293×205px recomendado. Quando não está configurado, o mascote padrão é mostrado + title: Imagem do mascote peers_api_enabled: desc_html: Nomes de domínio que essa instância encontrou no fediverso title: Publicar lista de instâncias descobertas @@ -563,6 +580,7 @@ pt-BR: resources: Recursos generic: changes_saved_msg: Mudanças salvas com sucesso! + copy: Copiar save_changes: Salvar mudanças validation_errors: one: Algo não está certo! Por favor, reveja o erro abaixo @@ -904,8 +922,12 @@ pt-BR: tips: Dicas title: Boas-vindas a bordo, %{name}! users: + follow_limit_reached: Você não pode seguir mais que %{limit} pessoas invalid_email: O endereço de e-mail é inválido invalid_otp_token: Código de autenticação inválido otp_lost_help_html: Se você perder o acesso à ambos, você pode entrar em contato com %{email} seamless_external_login: Você está logado usando um serviço externo, então configurações de e-mail e senha não estão disponíveis. signed_in_as: 'Acesso como:' + verification: + explanation_html: 'Você pode verificar-se como tendo posse dos links nos metadados do seu perfil. Para isso, o site conectado deve conter um link de volta para o seu perfil do Mastodon. O link de volta deve conter um atributo rel="me". O conteúdo ou texto do link não importa. Aqui está um exemplo:' + verification: Verificação diff --git a/config/locales/ro.yml b/config/locales/ro.yml index c38094158..3a104e1d0 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -1,2 +1,7 @@ --- -ro: {} +ro: + accounts: + posts: + few: Toots + one: Toot + other: Toots diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 2eef00170..a3ac754f2 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -264,7 +264,7 @@ ru: suspend: Блокировка title: Новая доменная блокировка reject_media: Запретить медиаконтент - reject_media_hint: Удаляет локально хранимый медиаконтент и запрещает его загрузку в будущем. Не имеет значения в случае блокировки. + reject_media_hint: Удаляет локально хранимый медиаконтент и запрещает его загрузку в будущем. Не имеет значения в случае блокировки severities: noop: Ничего silence: Глушение @@ -401,7 +401,7 @@ ru: desc_html: Отображается в боковой панели и в тегах. Опишите, что такое Mastodon и что делает именно этот узел особенным. Если пусто, используется описание узла по умолчанию. title: Краткое описание узла site_terms: - desc_html: Вы можете добавить сюда собственную политику конфиденциальности, пользовательское соглашение и другие документы. Можно использовать теги HTML. + desc_html: Вы можете добавить сюда собственную политику конфиденциальности, пользовательское соглашение и другие документы. Можно использовать теги HTML title: Условия использования site_title: Название сайта thumbnail: @@ -521,7 +521,7 @@ ru: '410': Страница, которую Вы искали, больше не существует. '422': content: Проверка безопасности не удалась. Возможно, Вы блокируете cookies? - title: Проверка безопасности не удалась. + title: Проверка безопасности не удалась '429': Слишком много запросов '500': content: Приносим извинения, но на нашей стороне что-то пошло не так. @@ -606,10 +606,10 @@ ru: max_uses: few: "%{count} исп." many: "%{count} исп." - one: 1 исп. - other: "%{count} исп." + one: 1 исп + other: "%{count} исп" max_uses_prompt: Без лимита - prompt: Генерируйте и делитесь ссылками с другими, чтобы предоставить им доступ к этому узлу. + prompt: Генерируйте и делитесь ссылками с другими, чтобы предоставить им доступ к этому узлу table: expires_at: Истекает uses: Исп. diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 6c8455a14..546a5bd14 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -8,16 +8,25 @@ ca: bot: Aquest compte realitza principalment accions automatitzades i pot no estar controlat per cap persona context: Un o diversos contextos on s'ha d'aplicar el filtre digest: Només s'envia després d'un llarg període d'inactivitat amb un resum de les mencions que has rebut en la teva absència + email: Se t'enviarà un correu electrònic de confirmació fields: Pots tenir fins a 4 elements que es mostren com a taula al teu perfil header: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px + inbox_url: Copia l'URL des de la pàgina principal del relay que vols utilitzar irreversible: Els nodes filtrats desapareixeran de manera irreversible, fins i tot si el filtre es retira més tard locale: El llenguatge de l’interfície d’usuari, els correus i les notificacions push locked: Requereix que aprovis manualment els seguidors + password: Utilitza com a mínim 8 caràcters phrase: Es combinarà independentment del format en el text o l'avís de contingut d'un toot + scopes: A quines API es permetrà l'accés a l'aplicació. Si selecciones un àmbit d'alt nivell, no cal que seleccionis un d'individual. setting_default_language: La llengua dels teus toots pot ser detectada automàticament però no sempre acuradament + setting_display_media_default: Amaga els multimèdia marcats com a sensibles + setting_display_media_hide_all: Sempre oculta tots els multimèdia + setting_display_media_show_all: Mostra sempre els elements multimèdia marcats com a sensibles setting_hide_network: Qui tu segueixes i els que et segueixen a tu no es mostraran en el teu perfil setting_noindex: Afecta el teu perfil públic i les pàgines d'estat setting_theme: Afecta l'aspecte de Mastodon quan es visita des de qualsevol dispositiu. + username: El teu nom d'usuari serà únic a %{domain} + whole_word: Quan la paraula clau o la frase sigui només alfanumèrica, s'aplicarà si coincideix amb la paraula sencera imports: data: Fitxer CSV exportat des de una altra instància de Mastodon sessions: @@ -44,6 +53,7 @@ ca: expires_in: Expira després fields: Metadades del perfil header: Capçalera + inbox_url: URL de la safata d'entrada del relay irreversible: Cau en lloc d'ocultar locale: Llengua de la interfície locked: Fes aquest compte privat @@ -59,6 +69,11 @@ ca: setting_default_privacy: Privacitat de les publicacions setting_default_sensitive: Marca sempre els elements multimèdia com a sensibles setting_delete_modal: Mostra la finestra de confirmació abans de suprimir un toot + setting_display_media: Visualització multimèdia + setting_display_media_default: Per defecte + setting_display_media_hide_all: Amaga-ho tot + setting_display_media_show_all: Mostra-ho tot + setting_expand_spoilers: Sempre amplia els toots marcats amb advertències de contingut setting_hide_network: Amaga la teva xarxa setting_noindex: Desactivació de la indexació del motor de cerca setting_reduce_motion: Redueix el moviment en animacions @@ -69,6 +84,7 @@ ca: type: Importa el tipus username: Nom d'usuari username_or_email: Nom d'usuari o adreça electrònica + whole_word: Paraula sencera interactions: must_be_follower: Blocar les notificacions de persones que no et segueixen must_be_following: Bloca les notificacions de persones que no segueixes @@ -80,6 +96,7 @@ ca: follow_request: Envia un correu electrònic si algú sol·licita seguir-te mention: Envia un correu electrònic si algú et menciona reblog: Envia un correu electrònic si algú comparteix el teu estat + report: Envia un correu electrònic quan s'enviï un nou informe 'no': 'No' required: mark: "*" diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 5653001b8..d3f9cb340 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -4,41 +4,48 @@ cy: hints: defaults: autofollow: Bydd pobl sy'n cofrestru drwy'r gwahoddiad yn eich dilyn yn awtomatig - avatar: PNG, GIF neu JPG. %{size} ar y mwyaf. Ceith ei israddio i %{dimensions}px - bot: Mae'r cyfrif hwn yn perfformio gweithredoedd awtomataidd yn bennaf ac mae'n bosib nad yw'n cael ei fonitro + avatar: PNG, GIF neu JPG. %{size} ar y mwyaf. Caiff ei israddio i %{dimensions}px + bot: Mae'r cyfrif hwn yn perfformio gweithredoedd awtomatig yn bennaf ac mae'n bosib nad yw'n cael ei fonitro context: Un neu fwy cyd-destun lle dylai'r hidlydd weithio - digest: Dim ond yn cael eu hanfon ar ôl cyfnod hir o anweithgarwch ac ond os ydych wedi derbyn unrhyw negeseuon personol yn eich absenoldeb + digest: Ond yn cael eu hanfon ar ôl cyfnod hir o anweithgarwch ac ond os ydych wedi derbyn unrhyw negeseuon personol yn eich absenoldeb + email: Byddwch yn derbyn e-bost i gadarnhau fields: Mae modd i chi arddangos hyd at 4 eitem fel tabl ar eich proffil header: PNG, GIF neu JPG. %{size} ar y mwyaf. Ceith ei israddio i %{dimensions}px inbox_url: Copïwch yr URL o dudalen flaen y relái yr ydych am ei ddefnyddio irreversible: Bydd tŵtiau wedi eu hidlo yn diflannu am byth, hyd yn oed os ceith yr hidlydd ei ddileu'n hwyrach locale: Iaith y rhyngwyneb, e-byst a hysbysiadau push - locked: Ei wneud yn ofynnol arnoch chi i ganiatau dilynwyr a llaw + locked: Ei wneud yn ofynnol i chi i ganiatau dilynwyr a llaw + password: Defnyddiwch oleiaf 8 nodyn + phrase: Caiff ei gyfateb heb ystyriaeth o briflythrennu mewn testun neu rhybudd ynghylch cynnwys tŵt scopes: Pa APIau y bydd gan y rhaglen ganiatad i gael mynediad iddynt. Os dewiswch maes lefel uchaf, yna nid oes angen dewis rhai unigol. setting_default_language: Mae modd adnabod iaith eich tŵtiau yn awtomatig, ond nid yw bob tro'n gywir - setting_hide_network: Ni fydd pwy yr ydych yn ei ddilyn a phwy sy'n eich dilyn chi yn cael ei ddangos ar eich proffil + setting_display_media_default: Cuddio cyfryngau wedi eu marcio'n sensitif + setting_display_media_hide_all: Cuddio cyfryngau bob tro + setting_display_media_show_all: Dangos cyfryngau wedi eu marcio'n sensitif bob tro + setting_hide_network: Ni fydd y rheini yr ydych yn eu dilyn a phwy sy'n eich dilyn chi yn cael ei ddangos ar eich proffil setting_noindex: Mae hyn yn effeithio ar eich proffil cyhoeddus a'ch tudalennau statws - setting_theme: Mae hyn yn effeithio ar sut olwg sydd ar Matododn pan yr ydych wedi mewngofnodi o unrhyw ddyfais. + setting_theme: Mae hyn yn effeithio ar sut olwg sydd ar Matododon pan yr ydych wedi mewngofnodi o unrhyw ddyfais. + username: Bydd eich enw defnyddiwr yn unigryw ar %{domain} whole_word: Os yw'r allweddair neu'r ymadrodd yn alffaniwmerig yn unig, mi fydd ond yn cael ei osod os yw'n cyfateb a'r gair cyfan imports: - data: Allforiwyd dogfen CSV o INSTANCE Mastodon arall + data: Allforiwyd dogfen CSV o achos Mastodon arall sessions: - otp: 'Mewnbynnwch y côd dau gam a gynhyrchwyd gan eich ap ffôn neu defnyddiwch un o''ch codau adfer:' + otp: 'Mewnbynnwch y cod dau gam a gynhyrchwyd gan eich ap ffôn neu defnyddiwch un o''ch codau adfer:' user: - chosen_languages: Wedi ei ddethol, dim ond tŵtiau mewn ieithoedd dewisiedig bydd yn cael eu harddangos mewn ffrydiau cyhoeddus + chosen_languages: Wedi eu dewis, dim ond tŵtiau yn yr ieithoedd hyn bydd yn cael eu harddangos mewn ffrydiau cyhoeddus labels: account: fields: name: Label value: Cynnwys defaults: - autofollow: Gwahoddwch i ddilyn eich cyfrif + autofollow: Gwahodd i ddilyn eich cyfrif avatar: Afatar bot: Cyfrif bot yw hwn - chosen_languages: Hidlwch ieithoedd - confirm_new_password: Cadarnhewch gyfrinair newydd + chosen_languages: Hidlo ieithoedd + confirm_new_password: Cadarnhau cyfrinair newydd confirm_password: Cadarnhau cyfrinair - context: Hidlwch cyd-destunau + context: Hidlo cyd-destunau current_password: Cyfrinair presennol data: Data display_name: Enw arddangos @@ -52,35 +59,44 @@ cy: locked: Cloi cyfrif max_uses: Uchafswm y nifer o ddefnyddiau new_password: Cyfrinair newydd + note: Bywgraffiad otp_attempt: Côd dau gam password: Cyfrinair phrase: Allweddair neu ymadrodd + setting_auto_play_gif: Chwarae GIFs wedi'u hanimeiddio yn awtomatig + setting_boost_modal: Dangos deialog cadarnhad cyn bŵstio setting_default_language: Cyhoeddi iaith setting_default_privacy: Cyfrinachedd cyhoeddi - setting_default_sensitive: Marciwch cyfryngau fel ei fod yn sensitif bob tro - setting_delete_modal: Dangoswch ddeialog cadarnhau cyn dileu tŵt - setting_hide_network: Cuddiwch eich rhwydwaith - setting_reduce_motion: '' - setting_system_font_ui: Defnyddiwch ffont rhagosodedig y system + setting_default_sensitive: Marcio cyfryngau fel eu bod yn sensitif bob tro + setting_delete_modal: Dangos deialog cadarnhau cyn dileu tŵt + setting_display_media: Arddangos cyfryngau + setting_display_media_default: Rhagosodiad + setting_display_media_hide_all: Cuddio oll + setting_display_media_show_all: Dangos oll + setting_expand_spoilers: Ymestyn tŵtiau wedi'u marcio a rhybudd cynnwys bob tro + setting_hide_network: Cuddio eich rhwydwaith + setting_noindex: Dewis peidio mynegeio peiriant chwilota + setting_reduce_motion: Lleihau mudiant mewn animeiddiadau + setting_system_font_ui: Defnyddio ffont rhagosodedig y system setting_theme: Thema'r wefan - setting_unfollow_modal: Dangoswch ddeialog cadarnhau cyn dad-ddilyn rhywun + setting_unfollow_modal: Dangos deialog cadarnhau cyn dad-ddilyn rhywun severity: Difrifoldeb type: Modd mewnforio username: Enw defnyddiwr username_or_email: Enw defnyddiwr neu e-bost whole_word: Gair cyfan interactions: - must_be_follower: Blociwch hysbysiadau o bobl nad ydynt yn eich dilyn - must_be_following: Blociwch hysbysiadau o bobl nad ydych yn eu dilyn - must_be_following_dm: Blociwch negeseuon uniongyrchol o bobl nad ydych yn eu dilyn + must_be_follower: Blocio hysbysiadau o bobl nad ydynt yn eich dilyn + must_be_following: Blocio hysbysiadau o bobl nad ydych yn eu dilyn + must_be_following_dm: Blocio negeseuon uniongyrchol o bobl nad ydych yn eu dilyn notification_emails: digest: Anfonwch e-byst crynhoi - favourite: Anfonwch e-bost pan mae rhywun yn ffefrynnu eich statws - follow: Anfonwch e-bost pan mae rhywun yn eich dilyn chi - follow_request: Anfonwch e-bost pan mae rhywun yn gofyn i chi i'w dilyn - mention: Anfonwch e-bost pan mae rhywun yn eich crybwyll - reblog: Anfonwch e-bost pan mae rhywun yn bŵstio eich statws - report: Anfonwch e-bost pan y cyflwynir adroddiad newydd + favourite: Anfon e-bost pan mae rhywun yn ffefrynnu eich statws + follow: Anfon e-bost pan mae rhywun yn eich dilyn chi + follow_request: Anfon e-bost pan mae rhywun yn gofyn i chi i'w dilyn + mention: Anfon e-bost pan mae rhywun yn eich crybwyll + reblog: Anfon e-bost pan mae rhywun yn bŵstio eich statws + report: Anfon e-bost pan y cyflwynir adroddiad newydd 'no': Na required: mark: "*" diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 64cdab07c..1063466ca 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -8,12 +8,14 @@ da: bot: Denne konto udfører hovedsageligt automatiserede handlinger og bliver muligvis ikke overvåget context: En eller flere sammenhænge hvor filteret skal være gældende digest: Sendes kun efter en lang periode med inaktivitet og kun hvis du har modtaget nogle personlige beskeder mens du er væk + email: Du vil få tilsendt en bekræftelsed mail fields: Du kan have op til 4 ting vist som en tabel på din profil header: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px inbox_url: Kopiere linket fra forsiden af den relay som du ønsker at bruge irreversible: Filtrerede trut vil forsvinde fulstændigt, selv hvis filteret senere skulle blive fjernet locale: Sproget på interfacet, emails og push beskeder locked: Kræver, at du godkender følgere manuelt + password: Brug mindst 8 tegn phrase: Vil blive parret uanset om der er store eller små bogstaver i teksten eller om der er en advarsel om et trut scopes: Hvilke APIs applikationen vil få adgang til. Hvis du vælger et højtlevel omfang, behøver du ikke vælge enkeltstående. setting_default_language: Sproget for dine trut kan blive fundet automatisk, men det er ikke altid præcist diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index a658038b8..b510370a3 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -8,18 +8,24 @@ eu: bot: Kontu honek nagusiki automatizatutako ekintzak burutzen ditu eta agian ez du inork monitorizatzen context: Iragazkia aplikatzeko testuinguru bat edo batzuk digest: Soilik jarduerarik gabeko epe luze bat eta gero, eta soilik ez zeudela mezu pertsonalen bat jaso baduzu + email: Baieztapen e-mail bat bidaliko zaizu fields: 4 elementu bistaratu ditzakezu taula batean zure profilean header: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px eskalara txikituko da inbox_url: Kopiatu erabili nahi duzun errelearen hasiera orriaren URLa irreversible: Iragazitako toot-ak betirako galduko dira, geroago iragazkia kentzen baduzu ere locale: Erabiltzaile-interfazea, e-mail mezuen eta jakinarazpenen hizkuntza locked: Jarraitzaileak eskuz onartu behar dituzu + password: Erabili 8 karaktere gutxienez phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar. setting_default_language: Zure toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza + setting_display_media_default: Ezkutatu hunkigarri gisa markatutako multimedia + setting_display_media_hide_all: Ezkutatu multimedia guztia beti + setting_display_media_show_all: Erakutsi beti hunkigarri gisa markatutako multimedia setting_hide_network: Nor jarraitzen duzun eta nork jarraitzen zaituen ez da bistaratuko zure profilean setting_noindex: Zure profil publiko eta toot orrietan eragina du setting_theme: Edozein gailutik konektatzean Mastodon-en itxuran eragiten du. + username: Zure erabiltzaile-izena bakana izango da %{domain} domeinuan whole_word: Hitz eta esaldi gakoa alfanumerikoa denean, hitz osoarekin bat datorrenean besterik ez da aplikatuko imports: data: Beste Mastodon instantzia batetik esportatutako CSV fitxategia @@ -63,6 +69,11 @@ eu: setting_default_privacy: Mezuen pribatutasuna setting_default_sensitive: Beti markatu edukiak hunkigarri gisa setting_delete_modal: Erakutsi baieztapen elkarrizketa-koadroa toot bat ezabatu aurretik + setting_display_media: Multimedia bistaratzea + setting_display_media_default: Lehenetsia + setting_display_media_hide_all: Ezkutatu guztia + setting_display_media_show_all: Erakutsi guztia + setting_expand_spoilers: Hedatu beti edukia abisua (CW) duten tootak setting_hide_network: Ezkutatu zure sarea setting_noindex: Atera bilaketa motorraren indexaziotik setting_reduce_motion: Murriztu animazioen mugimenduak diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 198fb7067..2f9c80dbe 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -18,7 +18,7 @@ fa: password: دست‌کم باید ۸ نویسه داشته باشد phrase: مستقل از کوچکی و بزرگی حروف، با متن اصلی یا هشدار محتوای بوق‌ها مقایسه می‌شود scopes: واسط‌های برنامه‌نویسی که این برنامه به آن دسترسی دارد. اگر بالاترین سطح دسترسی را انتخاب کنید، دیگر نیازی به انتخاب سطح‌های پایینی ندارید. - setting_default_language: زبان نوشته‌های شما به طور خودکار تشخیص داده می‌شود، ولی این تشخصی همیشه دقیق نیست + setting_default_language: زبان نوشته‌های شما به طور خودکار تشخیص داده می‌شود، ولی این تشخیص همیشه دقیق نیست setting_display_media_default: تصویرهایی را که به عنوان حساس علامت زده شده‌اند پنهان کن setting_display_media_hide_all: همیشه همهٔ عکس‌ها و ویدیوها را پنهان کن setting_display_media_show_all: همیشه تصویرهایی را که به عنوان حساس علامت زده شده‌اند را نشان بده diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index c4d664877..68f5dfede 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -25,12 +25,12 @@ fr: setting_hide_network: Ceux que vous suivez et ceux qui vous suivent ne seront pas affichés sur votre profil setting_noindex: Affecte votre profil public ainsi que vos statuts setting_theme: Affecte l’apparence de Mastodon quand vous êtes connecté·e depuis n’importe quel appareil. - username: Votre nom d'utilisateur sera unique sur %{domain} + username: Votre nom d’utilisateur sera unique sur %{domain} whole_word: Lorsque le mot-clef ou la phrase-clef est uniquement alphanumérique, ça sera uniquement appliqué s’il correspond au mot entier imports: data: Un fichier CSV généré par une autre instance de Mastodon sessions: - otp: 'Entrez le code d’authentification à deux facteurs généré par l''application de votre téléphone ou utilisez un de vos codes de récupération :' + otp: 'Entrez le code d’authentification à deux facteurs généré par l’application de votre téléphone ou utilisez un de vos codes de récupération :' user: chosen_languages: Lorsque coché, seuls les pouets dans les langues sélectionnées seront affichés sur les fils publics labels: @@ -73,7 +73,7 @@ fr: setting_display_media_default: Défaut setting_display_media_hide_all: Masquer tout setting_display_media_show_all: Montrer tout - setting_expand_spoilers: Toujours développer les pouëts marqués d'un avertissement de contenu + setting_expand_spoilers: Toujours développer les pouëts marqués d’un avertissement de contenu setting_hide_network: Cacher votre réseau setting_noindex: Demander aux moteurs de recherche de ne pas indexer vos informations personnelles setting_reduce_motion: Réduire la vitesse des animations @@ -96,7 +96,7 @@ fr: follow_request: Envoyer un courriel lorsque quelqu’un demande à me suivre mention: Envoyer un courriel lorsque quelqu’un me mentionne reblog: Envoyer un courriel lorsque quelqu’un partage mes statuts - report: Envoyer un courriel lorsqu'un nouveau rapport est soumis + report: Envoyer un courriel lorsqu’un nouveau rapport est soumis 'no': Non required: mark: "*" diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 4c6bb5acf..53ccb069e 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -8,18 +8,24 @@ it: bot: Questo account esegue principalmente operazioni automatiche e potrebbe non essere tenuto sotto controllo da una persona context: Uno o più contesti nei quali il filtro dovrebbe essere applicato digest: Inviata solo dopo un lungo periodo di inattività e solo se hai ricevuto qualche messaggio personale in tua assenza + email: Ti manderemo una email di conferma fields: Puoi avere fino a 4 voci visualizzate come una tabella sul tuo profilo header: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px inbox_url: Copia la URL dalla pagina iniziale del ripetitore che vuoi usare irreversible: I toot filtrati scompariranno in modo irreversibile, anche se il filtro viene eliminato locale: La lingua dell'interfaccia utente, di email e notifiche push locked: Richiede che approvi i follower manualmente + password: Usa almeno 8 caratteri phrase: Il confronto sarà eseguito ignorando minuscole/maiuscole e i content warning scopes: A quali API l'applicazione potrà avere accesso. Se selezionate un ambito di alto livello, non c'è bisogno di selezionare quelle singole. setting_default_language: La lingua dei tuoi toot può essere individuata automaticamente, ma il risultato non è sempre accurato + setting_display_media_default: Nascondi media segnati come sensibili + setting_display_media_hide_all: Nascondi sempre tutti i media + setting_display_media_show_all: Nascondi sempre i media segnati come sensibili setting_hide_network: Chi segui e chi segue te non saranno mostrati sul tuo profilo setting_noindex: Ha effetto sul tuo profilo pubblico e sulle pagine degli status setting_theme: Ha effetto sul modo in cui Mastodon verrà visualizzato quando sarai collegato da qualsiasi dispositivo. + username: Il tuo nome utente sarà unico su %{domain} whole_word: Quando la parola chiave o la frase è solo alfanumerica, si applica solo se corrisponde alla parola intera imports: data: File CSV esportato da un'altra istanza di Mastodon @@ -63,6 +69,11 @@ it: setting_default_privacy: Privacy dei post setting_default_sensitive: Segna sempre i media come sensibili setting_delete_modal: Mostra dialogo di conferma prima di eliminare un toot + setting_display_media: Visualizzazione dei media + setting_display_media_default: Predefinita + setting_display_media_hide_all: Nascondi tutti + setting_display_media_show_all: Mostra tutti + setting_expand_spoilers: Espandi sempre toot con content warning setting_hide_network: Nascondi la tua rete setting_noindex: Non indicizzare dai motori di ricerca setting_reduce_motion: Riduci movimento nelle animazioni diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 0ef55c980..c8d0a5a17 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -73,6 +73,7 @@ ja: setting_display_media_default: 標準 setting_display_media_hide_all: 非表示 setting_display_media_show_all: 表示 + setting_expand_spoilers: 閲覧注意としてマークされたトゥートを常に展開する setting_hide_network: 繋がりを隠す setting_noindex: 検索エンジンによるインデックスを拒否する setting_reduce_motion: アニメーションの動きを減らす diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 4bf717c6d..86a459110 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -8,18 +8,24 @@ ko: bot: 사람들에게 계정이 사람이 아님을 알립니다 context: 필터를 적용 할 한 개 이상의 컨텍스트 digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기 + email: 당신은 확인 메일을 받게 됩니다 fields: 당신의 프로파일에 최대 4개까지 표 형식으로 나타낼 수 있습니다 header: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 다운스케일 됨 inbox_url: 사용 할 릴레이 서버의 프론트페이지에서 URL을 복사합니다 irreversible: 필터링 된 툿은 나중에 필터가 사라지더라도 돌아오지 않게 됩니다 locale: 유저 인터페이스, 이메일, 푸시 알림 언어 locked: 수동으로 팔로워를 승인하고, 기본 툿 프라이버시 설정을 팔로워 전용으로 변경 + password: 최소 8글자 phrase: 툿 내용이나 CW 내용 안에서 대소문자 구분 없이 매칭 됩니다 scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다. setting_default_language: 작성한 툿의 언어는 자동으로 인식할 수 있지만, 언제나 정확한 건 아닙니다 + setting_display_media_default: 민감함으로 설정 된 미디어 가리기 + setting_display_media_hide_all: 항상 모든 미디어를 가리기 + setting_display_media_show_all: 민감함으로 설정 된 미디어를 항상 보이기 setting_hide_network: 나를 팔로우 하는 사람들과 내가 팔로우 하는 사람들이 내 프로필에 표시되지 않게 합니다 setting_noindex: 공개 프로필 및 각 툿페이지에 영향을 미칩니다 setting_theme: 로그인중인 모든 디바이스에 적용되는 디자인입니다. + username: 당신의 유저네임은 %{domain} 안에서 유일해야 합니다 whole_word: 키워드가 영문과 숫자로만 이루어 진 경우, 단어 전체에 매칭 되었을 때에만 작동하게 합니다 imports: data: 다른 마스토돈 인스턴스에서 추출된 CSV 파일 @@ -63,6 +69,11 @@ ko: setting_default_privacy: 툿 프라이버시 setting_default_sensitive: 미디어를 언제나 민감한 컨텐츠로 설정 setting_delete_modal: 툿 삭제 전 확인 창을 표시 + setting_display_media: 미디어 표시 + setting_display_media_default: 기본 + setting_display_media_hide_all: 모두 가리기 + setting_display_media_show_all: 모두 보이기 + setting_expand_spoilers: 열람주의 툿을 항상 펼치기 setting_hide_network: 내 네트워크 숨기기 setting_noindex: 검색엔진의 인덱싱을 거절 setting_reduce_motion: 애니메이션 줄이기 diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 516c1bddf..487f6320b 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -8,18 +8,24 @@ nl: bot: Dit is een geautomatiseerd account en wordt mogelijk niet gemonitord context: Een of meerdere locaties waar de filter actief moet zijn digest: Wordt alleen na een lange periode van inactiviteit verzonden en alleen wanneer je tijdens jouw afwezigheid persoonlijke berichten hebt ontvangen + email: Je krijgt een bevestigingsmail fields: Je kan maximaal 4 items als een tabel op je profiel weergeven header: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px inbox_url: Kopieer de URL van de voorpagina van de relayserver die je wil gebruiken irreversible: Gefilterde toots verdwijnen onomkeerbaar, zelfs als de filter later wordt verwijderd locale: De taal van de gebruikersomgeving, e-mails en pushmeldingen locked: Vereist dat je handmatig volgers moet accepteren + password: Gebruik tenminste 8 tekens phrase: Komt overeen ongeacht hoofd-/kleine letters of tekstwaarschuwingen scopes: Tot welke API's heeft de toepassing toegang. Wanneer je een toestemming van het bovenste niveau kiest, hoef je geen individuele toestemmingen meer te kiezen. setting_default_language: De taal van jouw toots kan automatisch worden gedetecteerd, maar het is niet altijd accuraat + setting_display_media_default: Als gevoelig gemarkeerde media verbergen + setting_display_media_hide_all: Media altijd verbergen + setting_display_media_show_all: Als gevoelig gemarkeerde media altijd verbergen setting_hide_network: Wie jij volgt en wie jou volgen wordt niet op jouw profiel getoond setting_noindex: Heeft invloed op jouw openbare profiel en toots setting_theme: Heeft invloed op hoe de webapp van Mastodon eruitziet (op elk apparaat waarmee je inlogt). + username: Jouw gebruikersnaam is uniek op %{domain} whole_word: Wanneer het trefwoord of zinsdeel alfanumeriek is, wordt het alleen gefilterd wanneer het hele woord overeenkomt imports: data: CSV-bestand dat op een andere Mastodonserver werd geëxporteerd @@ -63,6 +69,11 @@ nl: setting_default_privacy: Standaardzichtbaarheid van jouw toots setting_default_sensitive: Media altijd als gevoelig markeren setting_delete_modal: Vraag voor het verwijderen van een toot een bevestiging + setting_display_media: Mediaweergave + setting_display_media_default: Standaard + setting_display_media_hide_all: Alles verbergen + setting_display_media_show_all: Alles tonen + setting_expand_spoilers: Altijd toots met tekstwaarschuwingen uitklappen setting_hide_network: Jouw volgers en wie je volgt verbergen setting_noindex: Jouw toots niet door zoekmachines laten indexeren setting_reduce_motion: Langzamere animaties diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index 11bf1dc8b..c7cc2b471 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -8,18 +8,24 @@ oc: bot: Avisar lo monde qu’aqueste compte es pas d’una persona context: Un o mai de contèxtes ont lo filtre deuriá s’aplicar digest: Solament enviat aprèp un long moment d’inactivitat e solament s’avètz recebut de messatges personals pendent vòstra abséncia + email: Vos mandarem un corrièl de confirmacion fields: Podètz far veire cap a 4 elements sus vòstre perfil header: PNG, GIF o JPG. Maximum %{size}. Serà retalhada en %{dimensions}px inbox_url: Copiatz l’URL de la pagina màger del relai que volètz utilizar irreversible: Los tuts filtrats desapareisseràn irreversiblament, encara que lo filtre siá suprimit mai tard locale: La lenga de l’interfàcia d’utilizacion, los messatges e las notificacions locked: Demanda qu’acceptetz manualament lo mond que vos sègon e botarà la visibilitat de vòstras publicacions coma accessiblas a vòstres seguidors solament + password: Utilizatz almens 8 caractèrs phrase: Serà pres en compte que siá en majuscula o minuscula o dins un avertiment de contengut sensible scopes: A quinas APIs poiràn accedir las aplicacions. Se seleccionatz un encastre de naut nivèl, fa pas mestièr de seleccionar los nivèls mai basses. setting_default_language: La lenga de vòstres tuts pòt èsser detectada automaticament, mas de còps es pas corrèctament determinada + setting_display_media_default: Rescondre los mèdias marcats coma sensibles + setting_display_media_hide_all: Totjorn rescondre los mèdias + setting_display_media_show_all: Totjorn mostrar los mèdias marcats coma sensibles setting_hide_network: Vòstre perfil mostrarà pas los que vos sègon e lo monde que seguètz setting_noindex: Aquò es destinat a vòstre perfil public e vòstra pagina d’estatuts setting_theme: Aquò càmbia lo tèma grafic de Mastodon quand sètz connectat qual que siasque lo periferic. + username: Vòstre nom d’utilizaire serà unic sus %{domain} whole_word: Quand lo mot-clau o frasa es solament alfranumeric, serà pas qu’aplicat se correspond al mot complèt imports: data: Fichièr CSV exportat d’una autra instància Mastodon @@ -63,10 +69,15 @@ oc: setting_default_privacy: Confidencialitat dels tuts setting_default_sensitive: Totjorn marcar los mèdias coma sensibles setting_delete_modal: Mostrar una fenèstra de confirmacion abans de suprimir un estatut + setting_display_media: Afichatge dels mèdias + setting_display_media_default: Defaut + setting_display_media_hide_all: O rescondre tot + setting_display_media_show_all: O mostrar tot + setting_expand_spoilers: Totjorn desplegar los tuts marcats amb un avertiment de contengut setting_hide_network: Amagar vòstre malhum setting_noindex: Èsser pas indexat pels motors de recèrca setting_reduce_motion: Reduire la velocitat de las animacions - setting_system_font_ui: Utilizar la polissa del sisèma + setting_system_font_ui: Utilizar la polissa del sistèma setting_theme: Tèma del site setting_unfollow_modal: Mostrar una confirmacion abans de quitar de sègre qualqu’un severity: Severitat diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 6fc5ca061..71aff333e 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -8,18 +8,24 @@ pt-BR: bot: Essa conta executa principalmente ações automatizadas e pode não ser monitorada context: Um ou mais contextos onde o filtro deve ser aplicado digest: Enviado após um longo período de inatividade com um resumo das menções que você recebeu em sua ausência + email: Você receberá um email de confirmação fields: Você pode ter até 4 itens exibidos em forma de tabela no seu perfil header: PNG, GIF or JPG. Arquivos de até %{size}. Eles serão diminuídos para %{dimensions}px inbox_url: Copie a URL da página inicial do repetidor que você quer usar irreversible: Os toots filtrados vão desaparecer irreversivelmente, mesmo se o filtro for removido depois locale: O idioma das telas de usuário, e-mails e notificações push locked: Requer aprovação manual de seguidores + password: Use pelo menos 8 caracteres phrase: Vai coincidir, independente de maiúsculas ou minúsculas, no texto ou no aviso de conteúdo de um toot scopes: Quais APIs a aplicação vai ter permissão de acessar. Se você selecionar um escopo de alto nível, você não precisa selecionar individualmente os outros. setting_default_language: O idioma de seus toots pode ser detectado automaticamente, mas isso nem sempre é preciso + setting_display_media_default: Esconder mídia marcada como sensível + setting_display_media_hide_all: Sempre esconder todas as mídias + setting_display_media_show_all: Sempre mostrar mídia marcada como sensível setting_hide_network: Quem você segue e quem segue você não serão exibidos no seu perfil setting_noindex: Afeta seu perfil público e as páginas de suas postagens setting_theme: Afeta a aparência do Mastodon quando em sua conta em qualquer aparelho. + username: Seu nome de usuário será único em %{domain} whole_word: Quando a palavra ou frase é inteiramente alfanumérica, ela será aplicada somente se corresponder a palavra inteira imports: data: Arquivo CSV exportado de outra instância do Mastodon @@ -63,6 +69,11 @@ pt-BR: setting_default_privacy: Privacidade das postagens setting_default_sensitive: Sempre marcar mídia como sensível setting_delete_modal: Mostrar diálogo de confirmação antes de deletar uma postagem + setting_display_media: Exibição das mídias + setting_display_media_default: Padrão + setting_display_media_hide_all: Esconder tudo + setting_display_media_show_all: Mostrar tudo + setting_expand_spoilers: Sempre expandir toots marcados com aviso de conteúdo setting_hide_network: Esconder as suas redes setting_noindex: Não quero ser indexado por mecanismos de busca setting_reduce_motion: Reduz movimento em animações @@ -85,6 +96,7 @@ pt-BR: follow_request: Mandar um e-maill quando alguém solicitar ser seu seguidor mention: Mandar um e-mail quando alguém te mencionar reblog: Mandar um e-mail quando alguém compartilhar suas postagens + report: Mandar um e-mail quando uma nova denúncia é submetida 'no': Não required: mark: "*" diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 3c3a21480..618446db1 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -3,10 +3,15 @@ sl: simple_form: hints: defaults: + autofollow: Osebe, ki se prijavijo prek povabila, vas bodo samodejno sledile avatar: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px - bot: Opozarja ljudi, da račun ne predstavlja osebe + bot: Ta račun v glavnem opravlja samodejna dejanja in morda ni pod nadzorom + context: En ali več kontekstov, kjer naj se uporabi filter digest: Pošlje se le po dolgem obdobju nedejavnosti in samo, če ste prejeli osebna sporočila v vaši odsotnosti + email: Poslali vam bomo potrditveno e-pošto fields: Na svojem profilu lahko imate do 4 predmete prikazane kot tabelo. header: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px + inbox_url: Kopirajte URL naslov s prve strani releja, ki ga želite uporabiti + irreversible: Filtrirani trobi bodo nepovratno izginili, tudi če je filter kasneje odstranjen imports: data: Izvožena CSV datoteka iz drugega Mastodon vozlišča diff --git a/config/locales/simple_form.sr-Latn.yml b/config/locales/simple_form.sr-Latn.yml index 0ef85eaba..eac64988f 100644 --- a/config/locales/simple_form.sr-Latn.yml +++ b/config/locales/simple_form.sr-Latn.yml @@ -12,7 +12,7 @@ sr-Latn: imports: data: CSV fajl izvezen sa druge Mastodont instance sessions: - otp: Unesite dvofaktorski kod sa Vašeg telefona ili koristite jedan od kodova za oporavak. + otp: 'Unesite dvofaktorski kod sa Vašeg telefona ili koristite jedan od kodova za oporavak:' labels: defaults: avatar: Avatar diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml index 1af52a41c..c6294d4ba 100644 --- a/config/locales/simple_form.sr.yml +++ b/config/locales/simple_form.sr.yml @@ -14,6 +14,7 @@ sr: irreversible: Филтриранe трубе ће нестати неповратно, чак и ако је филтер касније уклоњен locale: Језик корисничког интерфејса, е-поште и мобилних обавештења locked: Захтева да појединачно одобрите пратиоце + password: Користите најмање 8 знакова phrase: Биће упарена без обзира на велико или мало слово у тексту или упозорења о садржају трубе scopes: Којим API-јима ће апликација дозволити приступ. Ако изаберете опсег највишег нивоа, не морате одабрати појединачне. setting_default_language: Језик ваших труба може бити аутоматски откривен, али није увек прецизан diff --git a/config/locales/sl.yml b/config/locales/sl.yml index f7ef65423..0e9d7d3aa 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -5,10 +5,13 @@ sl: about_mastodon_html: Mastodon je socialno omrežje, ki temelji na odprtih spletnih protokolih in prosti ter odprtokodni programski opremi. Je decentraliziran, kot e-pošta. about_this: O Mastodonu administered_by: 'Upravlja:' + api: API + apps: Mobilne aplikacije closed_registrations: Registracije so trenutno zaprte na tem vozlišču. Vendar! Tukaj lahko najdete druga vozlišča, na katerih se prijavite in dostopate do istega omrežja od tam. contact: Kontakt contact_missing: Ni nastavljeno contact_unavailable: Ni na voljo + documentation: Dokumentacija extended_description_html: |

      Dober prostor za pravila

      Razširjen opis še ni bil nastavljen.

      @@ -37,7 +40,11 @@ sl: nothing_here: Nič ni tukaj! people_followed_by: Ljudje, ki jim sledi %{name} people_who_follow: Ljudje, ki sledijo %{name} - posts: Tuti + posts: + few: Trob + one: Trob + other: Trob + two: Trob posts_with_replies: Tuti in odgovori reserved_username: Uporabniško ime je zasedeno roles: @@ -100,3 +107,11 @@ sl: most_recent: Najnovejše title: Red promote: Spodbujanje + remote_interaction: + prompt: 'Želite interakcijo s tem trobom:' + statuses: + pin_errors: + ownership: Trob nekoga drugega ne more biti pripet + private: Nejavnega troba ni mogoče pripeti + stream_entries: + pinned: Pripet trob diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 12867f4eb..1e32190cc 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -199,7 +199,7 @@ sr-Latn: suspend: Suspenzija title: Novo blokiranje domena reject_media: Odbaci multimediju - reject_media_hint: Uklanja lokalno uskladištene multimedijske fajlove i odbija da ih skida na dalje. Nebitno je za suspenziju. + reject_media_hint: Uklanja lokalno uskladištene multimedijske fajlove i odbija da ih skida na dalje. Nebitno je za suspenziju severities: noop: Ništa silence: Ućutkavanje diff --git a/config/locales/th.yml b/config/locales/th.yml index 44ed5b99e..b0b8e9ba0 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -224,6 +224,7 @@ th: too_many: แนบมากกว่า 4 ไฟล์ไม่ได้ notification_mailer: digest: + body: Here is a brief summary of the messages you missed since your last visit on %{since} mention: "%{name} ส่งข้อความถึงคุณ:" new_followers_summary: one: ยินดีด้วยคุณได้ผู้ติดตามคนใหม่! Yay! diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 3a7c2e68e..bc0a558e1 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -87,7 +87,7 @@ tr: suspend: Uzaklaştır title: Yeni domain bloğu reject_media: Ortam dosyalarını reddetme - reject_media_hint: Yerel olarak depolanmış ortam dosyalarını ve gelecekte indirilecek olanları reddeder. Uzaklaştırma için uygun değildir. + reject_media_hint: Yerel olarak depolanmış ortam dosyalarını ve gelecekte indirilecek olanları reddeder. Uzaklaştırma için uygun değildir severities: silence: Sustur suspend: Uzaklaştır @@ -97,8 +97,8 @@ tr: one: Veritabanındaki bir hesap etkilendi other: Veritabanındaki %{count} hesap etkilendi retroactive: - silence: Bu domaindeki tüm hesapların üzerindeki susturulma işlemini kaldır. - suspend: Bu domaindeki tüm hesapların üzerindeki uzaklaştırma işlemini kaldır. + silence: Bu domaindeki tüm hesapların üzerindeki susturulma işlemini kaldır + suspend: Bu domaindeki tüm hesapların üzerindeki uzaklaştırma işlemini kaldır title: "%{domain} domain'i için yapılan işlemi geri al" undo: Geri al title: Domain Blokları @@ -124,7 +124,7 @@ tr: username: Bir kullanıcı adı giriniz registrations: closed_message: - desc_html: Kayıt alımları kapatıldığında ana sayfada görüntülenecek mesajdır.
      HTML etiketleri kullanabilirsiniz. + desc_html: Kayıt alımları kapatıldığında ana sayfada görüntülenecek mesajdır.
      HTML etiketleri kullanabilirsiniz title: Kayıt alımları kapatılma mesajı open: title: Kayıt alımları @@ -132,7 +132,7 @@ tr: desc_html: Ana sayfada paragraf olarak görüntülenecek bilgidir.
      Özellikle <a> ve <em> olmak suretiyle HTML etiketlerini kullanabilirsiniz. title: Site açıklaması site_description_extended: - desc_html: Harici bilgi sayfasında gösterilir.
      HTML etiketleri girebilirsiniz. + desc_html: Harici bilgi sayfasında gösterilir.
      HTML etiketleri girebilirsiniz title: Sunucu hakkında detaylı bilgi site_title: Site başlığı title: Site Ayarları @@ -160,7 +160,7 @@ tr: security: Kimlik bilgileri set_new_password: Yeni parola oluştur authorize_follow: - error: Uzak hesap aranırken bir hata oluştu. + error: Uzak hesap aranırken bir hata oluştu follow: Takip et title: "%{acct}'i takip et" datetime: @@ -218,7 +218,7 @@ tr: upload: Yükle media_attachments: validations: - images_and_video: Halihazırda görsel içeren bir gönderiye video ekleyemezsiniz. + images_and_video: Halihazırda görsel içeren bir gönderiye video ekleyemezsiniz too_many: 4'ten fazla dosya ekleyemezsiniz notification_mailer: digest: @@ -285,7 +285,7 @@ tr: public: Herkese açık public_long: Herkese açık zaman tüneline gönder unlisted: Listelenmemiş - unlisted_long: Herkes görebilir fakat herkese açık zaman tünellerinde listelenmez. + unlisted_long: Herkes görebilir fakat herkese açık zaman tünellerinde listelenmez stream_entries: reblogged: boost edildi sensitive_content: Hassas içerik @@ -297,7 +297,7 @@ tr: description_html: Eğer iki-faktörlü kimlik doğrulamayı aktif ederseniz, giriş yaparken sizin için giriş kodu üreten telefonunuza ihtiyaç duyacaksınız. disable: Devre dışı bırak enable: Aktifleştir - enabled_success: İki-faktörlü kimlik doğrulama başarıyla aktif edildi. + enabled_success: İki-faktörlü kimlik doğrulama başarıyla aktif edildi generate_recovery_codes: Kurtarma Kodlarını Oluştur instructions_html: Bu QR kodunu, telefonunuzdaki Google Authenticator veya benzer bir TOTP uygulamasıyla taratınız. Bundan sonra giriş yaparken uygulamanın ürettiği kodu kullanarak giriş yapacaksınız. lost_recovery_codes: Kurtarma kodları telefonunuzu kaybettiğiniz durumlarda hesabınıza erişim yapabilmenize olanak tanır. Eğer kurtarma kodlarınızı kaybettiyseniz burada tekrar oluşturabilirsiniz. Eski kurtarma kodlarınız geçersiz hale gelecektir. diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 986ef70ad..e4ea774ec 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -241,7 +241,7 @@ uk: suspend: Блокування title: Нове блокування домену reject_media: Заборонити медіаконтент - reject_media_hint: Видаляє медіаконтент, збережений локально, і забороняє його завантаження у майбутньому. Не має значення у випадку блокування. + reject_media_hint: Видаляє медіаконтент, збережений локально, і забороняє його завантаження у майбутньому. Не має значення у випадку блокування severities: noop: Нічого silence: Глушення @@ -350,7 +350,7 @@ uk: desc_html: Дозволити будь-ком створювати аккаунт title: Відкрити реєстрацію show_known_fediverse_at_about_page: - desc_html: Коли увімкнено, будуть показані пости з усього відомого федисвіту у передпоказі. Інакше будуть показані локальні пости + desc_html: Коли увімкнено, будуть показані пости з усього відомого федисвіту у передпоказі. Інакше будуть показані локальні пости. title: Показувати доступний федисвіт у передпоказі фіду show_staff_badge: desc_html: Відмічати персонал на сторінці користувачів @@ -368,7 +368,7 @@ uk: title: Особливі умови використання site_title: Назва сайту thumbnail: - desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів. + desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів title: Мініатюра інстанції timeline_preview: desc_html: Показувати публічний фід на головній сторінці @@ -477,7 +477,7 @@ uk: '410': Сторінка, яку Ви шукали, більше не існує. '422': content: Перевірка безпеки не вдалася. Можливо, Ви блокуєте cookies? - title: Перевірка безпеки не вдалася. + title: Перевірка безпеки не вдалася '429': Забагато запитів '500': content: Пробачте, та щось пішло не так з нашого боку. diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index ca2d388b0..a32f36e32 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -45,7 +45,7 @@ zh-CN: joined: 加入于 %{date} media: 媒体 moved_html: "%{name} 已经迁移到 %{new_profile_link}:" - network_hidden: 此信息不可用。 + network_hidden: 此信息不可用 nothing_here: 这里神马都没有! people_followed_by: "%{name} 关注的人" people_who_follow: 关注 %{name} 的人 @@ -322,7 +322,7 @@ zh-CN: create_and_resolve: 添加记录并标记为“已处理” create_and_unresolve: 添加记录并重开 delete: 删除 - placeholder: 描述已经执行的操作,或其他任何相关的跟进情况 + placeholder: 描述已经执行的操作,或其他任何相关的跟进情况… reopen: 重开举报 report: '举报 #%{id}' reported_account: 举报用户 @@ -370,7 +370,7 @@ zh-CN: desc_html: 允许所有人建立帐户 title: 开放注册 show_known_fediverse_at_about_page: - desc_html: 启用此选项将会在预览中显示来自已知实例的嘟文,否则只会显示本站时间轴的内容 + desc_html: 启用此选项将会在预览中显示来自已知实例的嘟文,否则只会显示本站时间轴的内容. title: 在时间轴预览中显示已知实例 show_staff_badge: desc_html: 在个人资料页上显示管理人员标志 @@ -756,7 +756,7 @@ zh-CN: default: "%Y年%-m月%d日 %H:%M" two_factor_authentication: code_hint: 输入认证器生成的代码以确认操作 - description_html: 启用双重认证后,你需要输入手机认证器生成的代码才能登录 + description_html: 启用双重认证后,你需要输入手机认证器生成的代码才能登录. disable: 停用 enable: 启用 enabled: 双重认证已启用 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 939093595..7296587a3 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -217,7 +217,7 @@ zh-HK: suspend: 自動刪除 title: 新增域名阻隔 reject_media: 拒絕媒體檔案 - reject_media_hint: 刪除本地緩存的媒體檔案,再也不在未來下載這個站點的檔案。和自動刪除無關。 + reject_media_hint: 刪除本地緩存的媒體檔案,再也不在未來下載這個站點的檔案。和自動刪除無關 severities: noop: 無 silence: 自動靜音 @@ -299,7 +299,7 @@ zh-HK: email: 輸入一個公開的電郵地址 username: 輸入用戶名稱 hero: - desc_html: 在首頁顯示。推薦最小 600x100px。如果留空,就會默認為服務站縮圖。 + desc_html: 在首頁顯示。推薦最小 600x100px。如果留空,就會默認為服務站縮圖 title: 主題圖片 peers_api_enabled: desc_html: 現時本服務站在網絡中已發現的域名 @@ -731,6 +731,6 @@ zh-HK: users: invalid_email: 電郵地址格式不正確 invalid_otp_token: 雙重認證確認碼不正確 - otp_lost_help_html: 如果你無法訪問這兩者,可以通過 %{email} 與我們聯繫。 + otp_lost_help_html: 如果你無法訪問這兩者,可以通過 %{email} 與我們聯繫 seamless_external_login: 由於你是從外部系統登入,所以不能設定密碼和電郵。 signed_in_as: 目前登入的帳戶: From 2b18f5f85dfd3f67dea35819cd7fbe4aa946dfb1 Mon Sep 17 00:00:00 2001 From: "m.b" Date: Mon, 29 Oct 2018 13:23:29 +0100 Subject: [PATCH 059/124] Add Page AP type support (#9121) --- app/lib/activitypub/activity/create.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index f1b38b18a..baa05e14c 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -2,7 +2,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity SUPPORTED_TYPES = %w(Note).freeze - CONVERTED_TYPES = %w(Image Video Article).freeze + CONVERTED_TYPES = %w(Image Video Article Page).freeze def perform return if delete_arrived_first?(object_uri) || unsupported_object_type? || invalid_origin?(@object['id']) From fb2e699eeb36951d51dfc2c87c30d67c23a73364 Mon Sep 17 00:00:00 2001 From: Julian Date: Mon, 29 Oct 2018 13:24:15 +0100 Subject: [PATCH 060/124] Improved grammar in German translation (#9092) Just a grammar improvement. --- config/locales/de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index 9c0773ffc..587b9dfc9 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -22,7 +22,7 @@ de: not_a_product_title: Du bist ein Mensch und keine Ware real_conversation_body: Mit 500 Zeichen pro Beitrag und der Ermöglichung präziser Inhalts- und Bilderwarnungen kannst du dich so ausdrücken, wie du es möchtest. real_conversation_title: Für das echte Gespräch gemacht - within_reach_body: Verschiedene Apps für iOS, Android und andere Plattformen erlauben dir dank unserem blühenden API-Ökosystem, dich von überall auf dem Laufenden zu halten. + within_reach_body: Verschiedene Apps für iOS, Android und andere Plattformen erlauben dir, dank unseres blühenden API-Ökosystems, dich von überall auf dem Laufenden zu halten. within_reach_title: Immer für dich da generic_description: "%{domain} ist ein Server im Netzwerk" hosted_on: Mastodon, beherbergt auf %{domain} From 32f950a7a8d3acfed43d76cb21d0fc06a471bafe Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 29 Oct 2018 13:46:39 +0100 Subject: [PATCH 061/124] Update i18n-tasks to master (#9139) --- Gemfile | 2 +- Gemfile.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 113b40d85..452daab9e 100644 --- a/Gemfile +++ b/Gemfile @@ -95,7 +95,7 @@ gem 'rdf-normalize', '~> 0.3' group :development, :test do gem 'fabrication', '~> 2.20' gem 'fuubar', '~> 2.3' - gem 'i18n-tasks', '~> 0.9', require: false, git: 'https://github.com/Gargron/i18n-tasks.git', ref: 'ab6e10878ccdb6243f934f30372276d260c14251' + gem 'i18n-tasks', '~> 0.9', require: false, git: 'https://github.com/glebm/i18n-tasks.git', branch: 'master', ref: 'a1c9089b4ffed4f33e3b3a1bb2378d7a23445c0f' gem 'pry-byebug', '~> 3.6' gem 'pry-rails', '~> 0.3' gem 'rspec-rails', '~> 3.8' diff --git a/Gemfile.lock b/Gemfile.lock index bb90b73ec..b5432bb01 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,8 @@ GIT - remote: https://github.com/Gargron/i18n-tasks.git - revision: ab6e10878ccdb6243f934f30372276d260c14251 - ref: ab6e10878ccdb6243f934f30372276d260c14251 + remote: https://github.com/glebm/i18n-tasks.git + revision: a1c9089b4ffed4f33e3b3a1bb2378d7a23445c0f + ref: a1c9089b4ffed4f33e3b3a1bb2378d7a23445c0f + branch: master specs: i18n-tasks (0.9.27) activesupport (>= 4.0.2) From b40ea6d1d44a5f43ecf81e0690a79a7eff34204b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 29 Oct 2018 14:05:25 +0100 Subject: [PATCH 062/124] Bump sanitize from 4.6.6 to 5.0.0 (#9140) --- Gemfile | 2 +- Gemfile.lock | 12 ++++++------ spec/lib/formatter_spec.rb | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index 452daab9e..3ffb0140f 100644 --- a/Gemfile +++ b/Gemfile @@ -72,7 +72,7 @@ gem 'rails-settings-cached', '~> 0.6' gem 'redis', '~> 4.0', require: ['redis', 'redis/connection/hiredis'] gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' gem 'rqrcode', '~> 0.10' -gem 'sanitize', '~> 4.6' +gem 'sanitize', '~> 5.0' gem 'sidekiq', '~> 5.2' gem 'sidekiq-scheduler', '~> 3.0' gem 'sidekiq-unique-jobs', '~> 5.0' diff --git a/Gemfile.lock b/Gemfile.lock index b5432bb01..b0efd1bfb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -360,8 +360,8 @@ GEM nio4r (2.3.1) nokogiri (1.8.5) mini_portile2 (~> 2.3.0) - nokogumbo (1.5.0) - nokogiri + nokogumbo (2.0.0) + nokogiri (~> 1.8, >= 1.8.4) nsa (0.2.4) activesupport (>= 4.2, < 6) concurrent-ruby (~> 1.0.0) @@ -543,10 +543,10 @@ GEM rufus-scheduler (3.5.2) fugit (~> 1.1, >= 1.1.5) safe_yaml (1.0.4) - sanitize (4.6.6) + sanitize (5.0.0) crass (~> 1.0.2) - nokogiri (>= 1.4.4) - nokogumbo (~> 1.4) + nokogiri (>= 1.8.0) + nokogumbo (~> 2.0) sass (3.6.0) sass-listen (~> 4.0.0) sass-listen (4.0.0) @@ -749,7 +749,7 @@ DEPENDENCIES rspec-rails (~> 3.8) rspec-sidekiq (~> 3.0) rubocop (~> 0.60) - sanitize (~> 4.6) + sanitize (~> 5.0) scss_lint (~> 0.57) sidekiq (~> 5.2) sidekiq-bulk (~> 0.1.1) diff --git a/spec/lib/formatter_spec.rb b/spec/lib/formatter_spec.rb index ec4a6493d..0c1efe7c3 100644 --- a/spec/lib/formatter_spec.rb +++ b/spec/lib/formatter_spec.rb @@ -514,7 +514,7 @@ RSpec.describe Formatter do subject { Formatter.instance.sanitize(html, Sanitize::Config::MASTODON_STRICT) } it 'sanitizes' do - is_expected.to eq 'alert("Hello")' + is_expected.to eq '' end end end From 3fd808ab26e98952378d0ba2f616655c1db10368 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 29 Oct 2018 14:05:53 +0100 Subject: [PATCH 063/124] Update AUTHORS.md (#9141) --- AUTHORS.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 277683a00..b81b6d245 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -25,16 +25,16 @@ and provided thanks to the work of the following contributors: * [JantsoP](https://github.com/JantsoP) * [nullkal](https://github.com/nullkal) * [yookoala](https://github.com/yookoala) +* [mabkenar](https://github.com/mabkenar) * [ysksn](https://github.com/ysksn) * [shuheiktgw](https://github.com/shuheiktgw) * [ashfurrow](https://github.com/ashfurrow) -* [mabkenar](https://github.com/mabkenar) -* [zunda](https://github.com/zunda) * [Kjwon15](https://github.com/Kjwon15) +* [zunda](https://github.com/zunda) * [eramdam](https://github.com/eramdam) * [masarakki](https://github.com/masarakki) -* [ticky](https://github.com/ticky) * [takayamaki](https://github.com/takayamaki) +* [ticky](https://github.com/ticky) * [Quenty31](https://github.com/Quenty31) * [danhunsaker](https://github.com/danhunsaker) * [ThisIsMissEm](https://github.com/ThisIsMissEm) @@ -105,6 +105,7 @@ and provided thanks to the work of the following contributors: * [ProgVal](https://github.com/ProgVal) * [valentin2105](https://github.com/valentin2105) * [yuntan](https://github.com/yuntan) +* [ashleyhull-versent](https://github.com/ashleyhull-versent) * [goofy-bz](mailto:goofy@babelzilla.org) * [kadiix](https://github.com/kadiix) * [kodacs](https://github.com/kodacs) @@ -127,9 +128,9 @@ and provided thanks to the work of the following contributors: * [reneklacan](https://github.com/reneklacan) * [ekiru](https://github.com/ekiru) * [tcitworld](https://github.com/tcitworld) -* [ashleyhull-versent](https://github.com/ashleyhull-versent) * [geta6](https://github.com/geta6) * [happycoloredbanana](https://github.com/happycoloredbanana) +* [kedamaDQ](https://github.com/kedamaDQ) * [leopku](https://github.com/leopku) * [SansPseudoFix](https://github.com/SansPseudoFix) * [tomfhowe](https://github.com/tomfhowe) @@ -146,7 +147,7 @@ and provided thanks to the work of the following contributors: * [treby](https://github.com/treby) * [Reverite](https://github.com/Reverite) * [jpdevries](https://github.com/jpdevries) -* [00x9d](https://github.com/00x9d) +* [H-C-F](https://github.com/H-C-F) * [Kurtis Rainbolt-Greene](mailto:me@kurtisrainboltgreene.name) * [saper](https://github.com/saper) * [nevillepark](https://github.com/nevillepark) @@ -195,6 +196,7 @@ and provided thanks to the work of the following contributors: * [Fjoerfoks](https://github.com/Fjoerfoks) * [fmauNeko](https://github.com/fmauNeko) * [gloaec](https://github.com/gloaec) +* [Gomasy](https://github.com/Gomasy) * [unstabler](https://github.com/unstabler) * [potato4d](https://github.com/potato4d) * [h-izumi](https://github.com/h-izumi) @@ -221,6 +223,7 @@ and provided thanks to the work of the following contributors: * [petzah](https://github.com/petzah) * [ignisf](https://github.com/ignisf) * [raymestalez](https://github.com/raymestalez) +* [sascha-sl](https://github.com/sascha-sl) * [u1-liquid](https://github.com/u1-liquid) * [sim6](https://github.com/sim6) * [stemid](https://github.com/stemid) @@ -248,7 +251,6 @@ and provided thanks to the work of the following contributors: * [haoyayoi](https://github.com/haoyayoi) * [ik11235](https://github.com/ik11235) * [kawax](https://github.com/kawax) -* [kedamaDQ](https://github.com/kedamaDQ) * [007lva](https://github.com/007lva) * [matsurai25](https://github.com/matsurai25) * [mecab](https://github.com/mecab) @@ -274,6 +276,7 @@ and provided thanks to the work of the following contributors: * [Aditoo17](https://github.com/Aditoo17) * [unascribed](https://github.com/unascribed) * [Aguay-val](https://github.com/Aguay-val) +* [Akihiko Odaki](mailto:nekomanma@pixiv.co.jp) * [knu](https://github.com/knu) * [h3poteto](https://github.com/h3poteto) * [unleashed](https://github.com/unleashed) @@ -296,6 +299,7 @@ and provided thanks to the work of the following contributors: * [ayumin](https://github.com/ayumin) * [BaptisteGelez](https://github.com/BaptisteGelez) * [bzg](https://github.com/bzg) +* [BenLubar](https://github.com/BenLubar) * [benediktg](https://github.com/benediktg) * [blakebarnett](https://github.com/blakebarnett) * [bradj](https://github.com/bradj) @@ -341,7 +345,6 @@ and provided thanks to the work of the following contributors: * [hattori6789](https://github.com/hattori6789) * [algernon](https://github.com/algernon) * [Fastbyte01](https://github.com/Fastbyte01) -* [Gomasy](https://github.com/Gomasy) * [myfreeweb](https://github.com/myfreeweb) * [gfaivre](https://github.com/gfaivre) * [Fiaxhs](https://github.com/Fiaxhs) @@ -365,7 +368,7 @@ and provided thanks to the work of the following contributors: * [Floppy](https://github.com/Floppy) * [loomchild](https://github.com/loomchild) * [jenkr55](https://github.com/jenkr55) -* [docjkl](https://github.com/docjkl) +* [press5](https://github.com/press5) * [TrollDecker](https://github.com/TrollDecker) * [jmontane](https://github.com/jmontane) * [jonathanklee](https://github.com/jonathanklee) @@ -450,7 +453,6 @@ and provided thanks to the work of the following contributors: * [staticsafe](https://github.com/staticsafe) * [snwh](https://github.com/snwh) * [sts10](https://github.com/sts10) -* [sascha-sl](https://github.com/sascha-sl) * [skoji](https://github.com/skoji) * [ScienJus](https://github.com/ScienJus) * [larkinscott](https://github.com/larkinscott) @@ -464,7 +466,7 @@ and provided thanks to the work of the following contributors: * [shouko](https://github.com/shouko) * [Sina Mashek](mailto:sina@mashek.xyz) * [sossii](https://github.com/sossii) -* [SpankyWorks](https://github.com/SpankyWorks) +* [Spanky](mailto:2788886+spankyworks@users.noreply.github.com) * [StefOfficiel](mailto:pichard.stephane@free.fr) * [Svetlozar Todorov](mailto:svetlik@users.noreply.github.com) * [Sébastien Santoro](mailto:dereckson@espace-win.org) From e84da282f6331d463678a7e3ccd37e66c0dfcab3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 29 Oct 2018 14:15:54 +0100 Subject: [PATCH 064/124] Bump version to 2.6.0rc3 (#9142) * Bump version to 2.6.0rc3 * Update CHANGELOG.md --- CHANGELOG.md | 13 ++++++++++++- lib/mastodon/version.rb | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f989f111e..e5443a358 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ All notable changes to this project will be documented in this file. - Add conversations API (#8832) - Add limit for the number of people that can be followed from one account (#8807) - Add admin setting to customize mascot (#8766) -- Add support for more granular ActivityPub audiences from other software, i.e. circles (#8950) +- Add support for more granular ActivityPub audiences from other software, i.e. circles (#8950, #9093) - Add option to block all reports from a domain (#8830) - Add user preference to always expand toots marked with content warnings (#8762) - Add user preference to always hide all media (#8569) @@ -45,6 +45,9 @@ All notable changes to this project will be documented in this file. - Add cache for the instance info API (#8765) - Add suggested follows to search screen in mobile layout (#9010) - Add CORS header to `/.well-known/*` routes (#9083) +- Add `card` attribute to statuses returned from REST API (#9120) +- Add in-stream link preview (#9120) +- Add support for ActivityPub `Page` objects (#9121) ### Changed @@ -60,11 +63,13 @@ All notable changes to this project will be documented in this file. - Change DM filtering to always allow DMs from staff (#8993) - Change recommended Ruby version to 2.5.3 (#9003) - Change docker-compose default to persist volumes in current directory (#9055) +- Change character counters on edit profile page to input length limit (#9100) ### Deprecated - `GET /api/v1/timelines/direct` → `GET /api/v1/conversations` (#8832) - `POST /api/v1/notifications/dismiss` → `POST /api/v1/notifications/:id/dismiss` (#8905) +- `GET /api/v1/statuses/:id/card` → `card` attributed included in status (#9120) ### Removed @@ -90,6 +95,12 @@ All notable changes to this project will be documented in this file. - Fix some hotkeys not working on detailed status view (#9006) - Fix og:url on status pages (#9047) - Fix upload option buttons only being visible on hover (#9074) +- Fix tootctl not returning exit code 1 on wrong arguments (#9094) +- Fix preview cards for appearing for profiles mentioned in toot (#6934) +- Fix local accounts sometimes being duplicated as faux-remote (#9109) +- Fix emoji search when the shortcode has multiple separators (#9124) +- Fix dropdowns sometimes being partially obscured by other elements (#9126) +- Fix cache not updating when reply/boost/favourite counters or media sensitivity update (#9119) ## [2.5.2] - 2018-10-12 ### Security diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 8b26f4ce6..757d327bd 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -21,7 +21,7 @@ module Mastodon end def flags - 'rc2' + 'rc3' end def to_a From 33a71e8f7cd28aad5aa690a6d77aa83fe289f69c Mon Sep 17 00:00:00 2001 From: ThibG Date: Tue, 30 Oct 2018 00:47:31 +0100 Subject: [PATCH 065/124] Do not hide boost notifications from followed people with hidden boosts (#9147) * Do not hide boost notifications from followed people with hidden boosts Not displaying boosts from a followed user in the Home timeline and not having notifications when they reblog your own content are two very separate concerns, tying them together seem counter-intuitive and unwanted. * Update specs accordingly --- app/services/notify_service.rb | 2 +- spec/services/notify_service_spec.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index 49022a844..a8b7bb30b 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -31,7 +31,7 @@ class NotifyService < BaseService end def blocked_reblog? - @recipient.muting_reblogs?(@notification.from_account) + false end def blocked_follow_request? diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb index d34667943..39a681abb 100644 --- a/spec/services/notify_service_spec.rb +++ b/spec/services/notify_service_spec.rb @@ -104,9 +104,9 @@ RSpec.describe NotifyService, type: :service do is_expected.to change(Notification, :count) end - it 'hides reblogs when disabled' do - recipient.follow!(sender, reblogs: false) - is_expected.to_not change(Notification, :count) + it 'shows reblogs when disabled' do + recipient.follow!(sender, reblogs: true) + is_expected.to change(Notification, :count) end end From 5ee0b51ac8363da1687cc518e80eac53c23b048a Mon Sep 17 00:00:00 2001 From: Masoud Abkenar Date: Tue, 30 Oct 2018 00:47:43 +0100 Subject: [PATCH 066/124] RTL: fix preferences page checkbox margins (#9145) * RTL: fix preferences page checkbox margins * Update rtl.scss --- app/javascript/styles/mastodon/rtl.scss | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index 176fb5ce0..e5621c519 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -199,12 +199,16 @@ body.rtl { margin-left: 5px; } - .simple_form .check_boxes .checkbox label, - .simple_form .input.with_label.boolean label.checkbox { + .simple_form .check_boxes .checkbox label { padding-left: 0; padding-right: 25px; } + .simple_form .input.with_label.boolean label.checkbox { + padding-left: 25px; + padding-right: 0; + } + .simple_form .check_boxes .checkbox input[type="checkbox"], .simple_form .input.boolean input[type="checkbox"] { left: auto; From e961a763a2cf722bd5f1311a2de706e28d6c33c6 Mon Sep 17 00:00:00 2001 From: Masoud Abkenar Date: Tue, 30 Oct 2018 00:49:29 +0100 Subject: [PATCH 067/124] RTL: fix toot privacy preferences radio buttonss (#9146) --- app/javascript/styles/mastodon/rtl.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index e5621c519..940dc8af2 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -374,4 +374,9 @@ body.rtl { padding-left: 0; padding-right: 10px; } + + .simple_form .input.radio_buttons .radio > label input { + left: auto; + right: 0; + } } From d4415cc3169fcbb4d373e41c9bf5912a337f87a6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 30 Oct 2018 01:06:47 +0100 Subject: [PATCH 068/124] Bump i18n-tasks from master to 0.9.28 (#9148) --- Gemfile | 2 +- Gemfile.lock | 33 +++++++++++++-------------------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/Gemfile b/Gemfile index 3ffb0140f..1f9733530 100644 --- a/Gemfile +++ b/Gemfile @@ -95,7 +95,7 @@ gem 'rdf-normalize', '~> 0.3' group :development, :test do gem 'fabrication', '~> 2.20' gem 'fuubar', '~> 2.3' - gem 'i18n-tasks', '~> 0.9', require: false, git: 'https://github.com/glebm/i18n-tasks.git', branch: 'master', ref: 'a1c9089b4ffed4f33e3b3a1bb2378d7a23445c0f' + gem 'i18n-tasks', '~> 0.9', require: false gem 'pry-byebug', '~> 3.6' gem 'pry-rails', '~> 0.3' gem 'rspec-rails', '~> 3.8' diff --git a/Gemfile.lock b/Gemfile.lock index b0efd1bfb..aedfe6de8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,20 +1,3 @@ -GIT - remote: https://github.com/glebm/i18n-tasks.git - revision: a1c9089b4ffed4f33e3b3a1bb2378d7a23445c0f - ref: a1c9089b4ffed4f33e3b3a1bb2378d7a23445c0f - branch: master - specs: - i18n-tasks (0.9.27) - activesupport (>= 4.0.2) - ast (>= 2.1.0) - erubi - highline (>= 2.0.0) - i18n - parser (>= 2.2.3.0) - rails-i18n - rainbow (>= 2.2.2, < 4.0) - terminal-table (>= 1.5.1) - GIT remote: https://github.com/rtomayko/posix-spawn revision: 58465d2e213991f8afb13b984854a49fcdcc980c @@ -289,6 +272,16 @@ GEM rainbow (>= 2.0.0) i18n (1.1.1) concurrent-ruby (~> 1.0) + i18n-tasks (0.9.28) + activesupport (>= 4.0.2) + ast (>= 2.1.0) + erubi + highline (>= 2.0.0) + i18n + parser (>= 2.2.3.0) + rails-i18n + rainbow (>= 2.2.2, < 4.0) + terminal-table (>= 1.5.1) idn-ruby (0.1.0) ipaddress (0.8.3) iso-639 (0.2.8) @@ -396,7 +389,7 @@ GEM parallel (1.12.1) parallel_tests (2.26.0) parallel - parser (2.5.1.2) + parser (2.5.3.0) ast (~> 2.4.0) pastel (0.7.2) equatable (~> 0.5.0) @@ -459,7 +452,7 @@ GEM nokogiri (>= 1.6) rails-html-sanitizer (1.0.4) loofah (~> 2.2, >= 2.2.2) - rails-i18n (5.1.1) + rails-i18n (5.1.2) i18n (>= 0.7, < 2) railties (>= 5.0, < 6) rails-settings-cached (0.6.6) @@ -699,7 +692,7 @@ DEPENDENCIES http_accept_language (~> 2.1) http_parser.rb (~> 0.6)! httplog (~> 1.1) - i18n-tasks (~> 0.9)! + i18n-tasks (~> 0.9) idn-ruby iso-639 json-ld (~> 2.2) From 2cc099c70f92a9d845c64996b7ff14f90f55b9e1 Mon Sep 17 00:00:00 2001 From: trwnh Date: Tue, 30 Oct 2018 00:33:02 -0500 Subject: [PATCH 069/124] Make detailed-status__wrapper actually wrap detailed status (#8547) * Remove class from scrollable div .detailed-status__wrapper does not actually wrap the detailed status here * Re-add class to focusable div .detailed-status__wrapper now wraps the detailed status instead of the entire scrollable area --- app/javascript/mastodon/features/status/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index b36d82865..a092f7bb1 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -428,11 +428,11 @@ class Status extends ImmutablePureComponent { /> -
      +
      {ancestors} -
      +
      Date: Tue, 30 Oct 2018 06:39:52 +0100 Subject: [PATCH 070/124] Bump oj from 3.6.12 to 3.7.0 (#9155) Bumps [oj](https://github.com/ohler55/oj) from 3.6.12 to 3.7.0. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/master/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.6.12...v3.7.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 1f9733530..bf23015e6 100644 --- a/Gemfile +++ b/Gemfile @@ -59,7 +59,7 @@ gem 'link_header', '~> 0.0' gem 'mime-types', '~> 3.2', require: 'mime/types/columnar' gem 'nokogiri', '~> 1.8' gem 'nsa', '~> 0.2' -gem 'oj', '~> 3.6' +gem 'oj', '~> 3.7' gem 'ostatus2', '~> 2.0' gem 'ox', '~> 2.10' gem 'posix-spawn', git: 'https://github.com/rtomayko/posix-spawn', ref: '58465d2e213991f8afb13b984854a49fcdcc980c' diff --git a/Gemfile.lock b/Gemfile.lock index aedfe6de8..82b5f9224 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -360,7 +360,7 @@ GEM concurrent-ruby (~> 1.0.0) sidekiq (>= 3.5.0) statsd-ruby (~> 1.2.0) - oj (3.6.12) + oj (3.7.0) omniauth (1.8.1) hashie (>= 3.4.6, < 3.6.0) rack (>= 1.6.2, < 3) @@ -709,7 +709,7 @@ DEPENDENCIES net-ldap (~> 0.10) nokogiri (~> 1.8) nsa (~> 0.2) - oj (~> 3.6) + oj (~> 3.7) omniauth (~> 1.2) omniauth-cas (~> 1.1) omniauth-saml (~> 1.10) From c1eec9869e62177cbeaa76db12682553cdeb168a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 30 Oct 2018 22:59:11 +0900 Subject: [PATCH 071/124] [Security] Bump loofah from 2.2.2 to 2.2.3 (#9160) Bumps [loofah](https://github.com/flavorjones/loofah) from 2.2.2 to 2.2.3. **This update includes security fixes.** - [Release notes](https://github.com/flavorjones/loofah/releases) - [Changelog](https://github.com/flavorjones/loofah/blob/master/CHANGELOG.md) - [Commits](https://github.com/flavorjones/loofah/compare/v2.2.2...v2.2.3) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 82b5f9224..91a2e8281 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -319,7 +319,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.2.2) + loofah (2.2.3) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.0) From a03d5066265c9555ea2e42cf4bb06edc7439e50c Mon Sep 17 00:00:00 2001 From: ThibG Date: Tue, 30 Oct 2018 15:02:24 +0100 Subject: [PATCH 072/124] Fix Pleroma mentions being fetched as preview cards (#9158) --- app/services/fetch_link_card_service.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index 462e5ee13..3e77579bb 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -17,8 +17,7 @@ class FetchLinkCardService < BaseService return if @url.nil? || @status.preview_cards.any? - @mentions = status.mentions - @url = @url.to_s + @url = @url.to_s RedisLock.acquire(lock_options) do |lock| if lock.acquired? @@ -84,9 +83,8 @@ class FetchLinkCardService < BaseService end def mention_link?(a) - return false if @mentions.nil? - @mentions.any? do |mention| - a['href'] == TagManager.instance.url_for(mention.target) + @status.mentions.any? do |mention| + a['href'] == TagManager.instance.url_for(mention.account) end end From 47b8d195e6ea5bc5f3cd4fe3a5be0b25ec322f10 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 30 Oct 2018 15:02:55 +0100 Subject: [PATCH 073/124] Always let through notifications from staff (#9152) * Always let through notifications from staff Follow-up to #8993 * Let messages from staff through, but no other notifications --- app/services/notify_service.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index a8b7bb30b..b80ceef03 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -51,8 +51,12 @@ class NotifyService < BaseService @recipient.user.settings.interactions['must_be_following'] && !following_sender? end + def message? + @notification.type == :mention + end + def direct_message? - @notification.type == :mention && @notification.target_status.direct_visibility? + message? && @notification.target_status.direct_visibility? end def response_to_recipient? @@ -66,7 +70,6 @@ class NotifyService < BaseService def optional_non_following_and_direct? direct_message? && @recipient.user.settings.interactions['must_be_following_dm'] && - !from_staff? && !following_sender? && !response_to_recipient? end @@ -86,6 +89,9 @@ class NotifyService < BaseService def blocked? blocked = @recipient.suspended? # Skip if the recipient account is suspended anyway blocked ||= from_self? # Skip for interactions with self + + return blocked if message? && from_staff? + blocked ||= domain_blocking? # Skip for domain blocked accounts blocked ||= @recipient.blocking?(@notification.from_account) # Skip for blocked accounts blocked ||= @recipient.muting_notifications?(@notification.from_account) From be202f9377fecfc801befac0be6d11d9f0039c5d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 30 Oct 2018 15:03:55 +0100 Subject: [PATCH 074/124] Accept the same payload in multiple inboxes and deliver (#9150) --- app/lib/activitypub/activity/create.rb | 20 +++++++++++++++++++- app/services/fan_out_on_write_service.rb | 6 ++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index baa05e14c..45079e2b3 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -10,7 +10,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity RedisLock.acquire(lock_options) do |lock| if lock.acquired? @status = find_existing_status - process_status if @status.nil? + + if @status.nil? + process_status + elsif @options[:delivered_to_account_id].present? + postprocess_audience_and_deliver + end else raise Mastodon::RaceConditionError end @@ -99,6 +104,19 @@ class ActivityPub::Activity::Create < ActivityPub::Activity @params[:visibility] = :limited end + def postprocess_audience_and_deliver + return if @status.mentions.find_by(account_id: @options[:delivered_to_account_id]) + + delivered_to_account = Account.find(@options[:delivered_to_account_id]) + + @status.mentions.create(account: delivered_to_account, silent: true) + @status.update(visibility: :limited) if @status.direct_visibility? + + return unless delivered_to_account.following?(@account) + + FeedInsertWorker.perform_async(@status.id, delivered_to_account.id, :home) + end + def attach_tags(status) @tags.each do |tag| status.tags << tag diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 7f2a91775..f3e9c855d 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -58,10 +58,8 @@ class FanOutOnWriteService < BaseService def deliver_to_mentioned_followers(status) Rails.logger.debug "Delivering status #{status.id} to limited followers" - status.mentions.includes(:account).each do |mention| - mentioned_account = mention.account - next if !mentioned_account.local? || !mentioned_account.following?(status.account) || FeedManager.instance.filter?(:home, status, mention.account_id) - FeedManager.instance.push_to_home(mentioned_account, status) + FeedInsertWorker.push_bulk(status.mentions.includes(:account).map(&:account).select { |mentioned_account| mentioned_account.local? && mentioned_account.following?(status.account) }) do |follower| + [status.id, follower.id, :home] end end From a3d40ba53b1154a8711d625a4ec6162b343a217d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quent=C3=AD?= <33203663+Quenty31@users.noreply.github.com> Date: Tue, 30 Oct 2018 15:05:01 +0100 Subject: [PATCH 075/124] [i18n] Update for Occitan (#9157) * Update oc.json * Update devise.oc.yml * Update oc.yml * Update oc.json --- app/javascript/mastodon/locales/oc.json | 6 +++--- config/locales/devise.oc.yml | 4 ++-- config/locales/oc.yml | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 64ada60da..93ab4be7d 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -157,7 +157,7 @@ "keyboard_shortcuts.legend": "mostrar aquesta legenda", "keyboard_shortcuts.local": "per dobrir lo flux public local", "keyboard_shortcuts.mention": "mencionar l’autor", - "keyboard_shortcuts.muted": "per dorbir la lista dels utilizaires silenciats", + "keyboard_shortcuts.muted": "per dobrir la lista dels utilizaires silenciats", "keyboard_shortcuts.my_profile": "per dobrir vòstre perfil", "keyboard_shortcuts.notifications": "per dobrir la columna de notificacions", "keyboard_shortcuts.pinned": "per dobrir la lista dels tuts penjats", @@ -314,8 +314,8 @@ "status.show_more_all": "Los desplegar totes", "status.unmute_conversation": "Tornar mostrar la conversacion", "status.unpin": "Tirar del perfil", - "suggestions.dismiss": "Dismiss suggestion", - "suggestions.header": "You might be interested in…", + "suggestions.dismiss": "Regetar la suggestion", + "suggestions.header": "Aquò vos poiriá interessar…", "tabs_bar.federated_timeline": "Flux public global", "tabs_bar.home": "Acuèlh", "tabs_bar.local_timeline": "Flux public local", diff --git a/config/locales/devise.oc.yml b/config/locales/devise.oc.yml index beecbb426..16633e233 100644 --- a/config/locales/devise.oc.yml +++ b/config/locales/devise.oc.yml @@ -8,10 +8,10 @@ oc: failure: already_authenticated: Sètz ja connectat. inactive: Vòstre compte es pas encara activat. - invalid: "%{authentication_keys} invalid." + invalid: "%{authentication_keys} invalida." last_attempt: Vos demòra un ensag abans que vòstre compte siasque blocat. locked: Vòstre compte es blocat. - not_found_in_database: "%{authentication_keys} invalid." + not_found_in_database: "%{authentication_keys} invalida." timeout: Vòstra session a expirat. Mercés de vos tornar connectar per contunhar. unauthenticated: Vos cal vos connectar o marcar abans de contunhar. unconfirmed: Vos cal confirmar vòstra adreça de corrièl abans de contunhar. diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 0fb4684b1..820f094ff 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -311,7 +311,7 @@ oc: description_html: Un relai de federacion es un servidor intermediari qu’escàmbia de bèls volumes de tuts publics entre servidors que son abonats e i publican.Pòt ajudar de pichons e mejans servidors a trobar de contenguts del fediverse estant, qu’autrament demandariá als utilizaires locals de s’abonar manualament a d’autres monde marcats sus de servidors alonhats. disable: Desactivar disabled: Desactivat - enable: Activat + enable: Activar enable_hint: Un còp activat, vòstre servidor s’abonarà a totes los tuts publics del relai estant, e començarà de mandar sos tuts publics a aqueste d’enlà. enabled: Activat inbox_url: URL del relai @@ -533,7 +533,7 @@ oc: formats: default: "%e/%m/%Y" long: Lo %e %B de %Y - short: "%e %b. de %Y" + short: "%e %B de %Y" month_names: - None - de genièr @@ -557,7 +557,7 @@ oc: about_x_hours: "%{count} h" about_x_months: "%{count} meses" about_x_years: "%{count} ans" - almost_x_years: "%{count}ans" + almost_x_years: "%{count} ans" half_a_minute: Ara less_than_x_minutes: "%{count} min" less_than_x_seconds: Ara meteis From c36a4a16178441968715e13c77859b1eb813c2af Mon Sep 17 00:00:00 2001 From: valerauko Date: Tue, 30 Oct 2018 23:07:57 +0900 Subject: [PATCH 076/124] Fix FetchAtomService content type handling (#9132) * Add profile to json+ld in Accept It's required by the ActivityPub spec * Use headers['Content-type'] instead of mime_type mime_type strips the profile from the content type, but it's still available raw in the headers hash * Add test for ld+json with profile --- app/services/fetch_atom_service.rb | 10 ++++++---- spec/services/fetch_atom_service_spec.rb | 9 ++++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/services/fetch_atom_service.rb b/app/services/fetch_atom_service.rb index 550e75f33..b6c6cdd1c 100644 --- a/app/services/fetch_atom_service.rb +++ b/app/services/fetch_atom_service.rb @@ -29,7 +29,7 @@ class FetchAtomService < BaseService def perform_request(&block) accept = 'text/html' - accept = 'application/activity+json, application/ld+json, application/atom+xml, ' + accept unless @unsupported_activity + accept = 'application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams", application/atom+xml, ' + accept unless @unsupported_activity Request.new(:get, @url).add_headers('Accept' => accept).perform(&block) end @@ -37,9 +37,11 @@ class FetchAtomService < BaseService def process_response(response, terminal = false) return nil if response.code != 200 - if response.mime_type == 'application/atom+xml' + response_type = response.headers['Content-type'] + + if response_type == 'application/atom+xml' [@url, { prefetched_body: response.body_with_limit }, :ostatus] - elsif ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(response.mime_type) + elsif ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(response_type) body = response.body_with_limit json = body_to_json(body) if supported_context?(json) && equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) && json['inbox'].present? @@ -55,7 +57,7 @@ class FetchAtomService < BaseService if link_header&.find_link(%w(rel alternate)) process_link_headers(link_header) - elsif response.mime_type == 'text/html' + elsif response_type == 'text/html' process_html(response) end end diff --git a/spec/services/fetch_atom_service_spec.rb b/spec/services/fetch_atom_service_spec.rb index 30e5b0935..0cdcda892 100644 --- a/spec/services/fetch_atom_service_spec.rb +++ b/spec/services/fetch_atom_service_spec.rb @@ -60,13 +60,20 @@ RSpec.describe FetchAtomService, type: :service do it { is_expected.to eq [url, { :prefetched_body => "" }, :ostatus] } end - context 'content_type is json' do + context 'content_type is activity+json' do let(:content_type) { 'application/activity+json' } let(:body) { json } it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] } end + context 'content_type is ld+json with profile' do + let(:content_type) { 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' } + let(:body) { json } + + it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] } + end + before do WebMock.stub_request(:get, url).to_return(status: 200, body: body, headers: headers) WebMock.stub_request(:get, 'http://example.com/foo').to_return(status: 200, body: json, headers: { 'Content-Type' => 'application/activity+json' }) From 5c8e7f0e1d28a0f534d40386be4bd2046e3661d9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 30 Oct 2018 16:25:54 +0100 Subject: [PATCH 077/124] Revert "feat(auth/session_controller): Send Clear-Site-Data when logging out (8627)" (#9161) This reverts commit 10680f93e7d6333d43aabc4c6f251a076120231c. --- app/controllers/auth/sessions_controller.rb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/app/controllers/auth/sessions_controller.rb b/app/controllers/auth/sessions_controller.rb index 901e82331..fb8615c31 100644 --- a/app/controllers/auth/sessions_controller.rb +++ b/app/controllers/auth/sessions_controller.rb @@ -10,7 +10,6 @@ class Auth::SessionsController < Devise::SessionsController prepend_before_action :authenticate_with_two_factor, if: :two_factor_enabled?, only: [:create] before_action :set_instance_presenter, only: [:new] before_action :set_body_classes - after_action :clear_site_data, only: [:destroy] def new Devise.omniauth_configs.each do |provider, config| @@ -125,14 +124,6 @@ class Auth::SessionsController < Devise::SessionsController paths end - def clear_site_data - return if continue_after? - - # Should be '"*"' but that doesn't work in Chrome (neither does '"executionContexts"') - # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Clear-Site-Data - response.headers['Clear-Site-Data'] = '"cache", "cookies", "storage"' - end - def continue_after? truthy_param?(:continue) end From cc45a8f9f7e05df57641bea19e1290570e76c172 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 30 Oct 2018 17:00:34 +0100 Subject: [PATCH 078/124] Fix td instead of th in sessions table header (#9162) Fix #9130 --- app/views/auth/registrations/_sessions.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/auth/registrations/_sessions.html.haml b/app/views/auth/registrations/_sessions.html.haml index 8586c0549..d7d96a1bb 100644 --- a/app/views/auth/registrations/_sessions.html.haml +++ b/app/views/auth/registrations/_sessions.html.haml @@ -8,7 +8,7 @@ %th= t 'sessions.browser' %th= t 'sessions.ip' %th= t 'sessions.activity' - %td + %th %tbody - @sessions.each do |session| %tr From f59b840549d1b4dfd02ae4f52b64149ff8de0165 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 30 Oct 2018 17:06:12 +0100 Subject: [PATCH 079/124] Fix empty display name precedence over username in web UI (#9163) Fix #9131 --- app/javascript/mastodon/actions/importer/normalizer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/actions/importer/normalizer.js b/app/javascript/mastodon/actions/importer/normalizer.js index a2af3222e..34a4150fa 100644 --- a/app/javascript/mastodon/actions/importer/normalizer.js +++ b/app/javascript/mastodon/actions/importer/normalizer.js @@ -14,7 +14,7 @@ export function normalizeAccount(account) { account = { ...account }; const emojiMap = makeEmojiMap(account); - const displayName = account.display_name.length === 0 ? account.username : account.display_name; + const displayName = account.display_name.trim().length === 0 ? account.username : account.display_name; account.display_name_html = emojify(escapeTextContentForBrowser(displayName), emojiMap); account.note_emojified = emojify(account.note, emojiMap); From 66019b0ec4aaa584e58e91583425ed7c0d55c28e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 30 Oct 2018 17:37:49 +0100 Subject: [PATCH 080/124] Bump version to 2.6.0rc4 (#9164) * Bump version to 2.6.0rc4 * Update CHANGELOG.md --- CHANGELOG.md | 13 +++++++++---- lib/mastodon/version.rb | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5443a358..3c6847e0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ All notable changes to this project will be documented in this file. - Add conversations API (#8832) - Add limit for the number of people that can be followed from one account (#8807) - Add admin setting to customize mascot (#8766) -- Add support for more granular ActivityPub audiences from other software, i.e. circles (#8950, #9093) +- Add support for more granular ActivityPub audiences from other software, i.e. circles (#8950, #9093, #9150) - Add option to block all reports from a domain (#8830) - Add user preference to always expand toots marked with content warnings (#8762) - Add user preference to always hide all media (#8569) @@ -30,7 +30,6 @@ All notable changes to this project will be documented in this file. - Add PostgreSQL disk space growth tracking in PGHero (#8906) - Add button for disabling local account to report quick actions bar (#9024) - Add Czech language (#8594) -- Add `Clear-Site-Data` header when logging out (#8627) - Add `same-site` (`lax`) attribute to cookies (#8626) - Add support for styled scrollbars in Firefox Nightly (#8653) - Add highlight to the active tab in web UI profiles (#8673) @@ -64,6 +63,9 @@ All notable changes to this project will be documented in this file. - Change recommended Ruby version to 2.5.3 (#9003) - Change docker-compose default to persist volumes in current directory (#9055) - Change character counters on edit profile page to input length limit (#9100) +- Change notification filtering to always let through messages from staff (#9152) +- Change "hide boosts from user" function also hiding notifications about boosts (#9147) +- Change CSS `detailed-status__wrapper` class actually wrap the detailed status (#8547) ### Deprecated @@ -89,18 +91,21 @@ All notable changes to this project will be documented in this file. - Fix some dark emojis not having a white outline (#8597) - Fix media description not being displayed in various media modals (#8678) - Fix generated URLs of desktop notifications missing base URL (#8758) -- Fix RTL styles (#8764, #8767, #8823, #8897, #9005, #9007, #9018, #9021) +- Fix RTL styles (#8764, #8767, #8823, #8897, #9005, #9007, #9018, #9021, #9145, #9146) - Fix crash in streaming API when tag param missing (#8955) - Fix hotkeys not working when no element is focused (#8998) - Fix some hotkeys not working on detailed status view (#9006) - Fix og:url on status pages (#9047) - Fix upload option buttons only being visible on hover (#9074) - Fix tootctl not returning exit code 1 on wrong arguments (#9094) -- Fix preview cards for appearing for profiles mentioned in toot (#6934) +- Fix preview cards for appearing for profiles mentioned in toot (#6934, #9158) - Fix local accounts sometimes being duplicated as faux-remote (#9109) - Fix emoji search when the shortcode has multiple separators (#9124) - Fix dropdowns sometimes being partially obscured by other elements (#9126) - Fix cache not updating when reply/boost/favourite counters or media sensitivity update (#9119) +- Fix empty display name precedence over username in web UI (#9163) +- Fix td instead of th in sessions table header (#9162) +- Fix handling of content types with profile (#9132) ## [2.5.2] - 2018-10-12 ### Security diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 757d327bd..e4c5b9cbd 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -21,7 +21,7 @@ module Mastodon end def flags - 'rc3' + 'rc4' end def to_a From 7800e1af7eb3c2203655298d8b3079eeff085111 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Wed, 31 Oct 2018 03:46:20 +0900 Subject: [PATCH 081/124] Specify node version to not use node11 (#9166) uWS has no support node11 yet. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8320a76fb..7b162e576 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "mastodon", "license": "AGPL-3.0-or-later", "engines": { - "node": ">=8" + "node": ">=8 <11" }, "scripts": { "postversion": "git push --tags", From f2290e311b155f27b721508cec58e08f304507f2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 30 Oct 2018 21:09:33 +0100 Subject: [PATCH 082/124] Remove progress estimate from MigrateAccountConversations (#9168) --- ...024224956_migrate_account_conversations.rb | 30 ++++--------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/db/migrate/20181024224956_migrate_account_conversations.rb b/db/migrate/20181024224956_migrate_account_conversations.rb index 47f7375ba..b718f9e1d 100644 --- a/db/migrate/20181024224956_migrate_account_conversations.rb +++ b/db/migrate/20181024224956_migrate_account_conversations.rb @@ -14,17 +14,15 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2] sleep 1 end - total = estimate_rows(local_direct_statuses) + estimate_rows(notifications_about_direct_statuses) - migrated = 0 - started_time = Time.zone.now - last_time = Time.zone.now + migrated = 0 + last_time = Time.zone.now local_direct_statuses.includes(:account, mentions: :account).find_each do |status| AccountConversation.add_status(status.account, status) migrated += 1 if Time.zone.now - last_time > 1 - say_progress(migrated, total, started_time) + say_progress(migrated) last_time = Time.zone.now end end @@ -34,7 +32,7 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2] migrated += 1 if Time.zone.now - last_time > 1 - say_progress(migrated, total, started_time) + say_progress(migrated) last_time = Time.zone.now end end @@ -45,24 +43,8 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2] private - def estimate_rows(query) - result = exec_query("EXPLAIN #{query.to_sql}").first - result['QUERY PLAN'].scan(/ rows=([\d]+)/).first&.first&.to_i || 0 - end - - def say_progress(migrated, total, started_time) - status = "Migrated #{migrated} rows" - - percentage = 100.0 * migrated / total - status += " (~#{sprintf('%.2f', percentage)}%, " - - remaining_time = (100.0 - percentage) * (Time.zone.now - started_time) / percentage - - status += "#{(remaining_time / 60).to_i}:" - status += sprintf('%02d', remaining_time.to_i % 60) - status += ' remaining)' - - say status, true + def say_progress(migrated) + say "Migrated #{migrated} rows", true end def local_direct_statuses From 804586172ed726dbfaa213365dd309c4d7fd55d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quent=C3=AD?= <33203663+Quenty31@users.noreply.github.com> Date: Tue, 30 Oct 2018 22:06:31 +0100 Subject: [PATCH 083/124] [i18n] Update for Occitan (#9169) * Update oc.json * Update oc.yml * Update simple_form.oc.yml * Update simple_form.oc.yml * Update oc.json --- app/javascript/mastodon/locales/oc.json | 14 +++++++------- config/locales/oc.yml | 6 +++--- config/locales/simple_form.oc.yml | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 93ab4be7d..5df64e192 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -90,9 +90,9 @@ "confirmations.mute.confirm": "Rescondre", "confirmations.mute.message": "Volètz vertadièrament rescondre {name} ?", "confirmations.redraft.confirm": "Escafar & tornar formular", - "confirmations.redraft.message": "Volètz vertadièrament escafar aqueste estatut e lo reformular ? Tote sos partiments e favorits seràn perduts, e sas responsas seràn orfanèlas.", + "confirmations.redraft.message": "Volètz vertadièrament escafar aqueste estatut e lo reformular ? Totes sos partiments e favorits seràn perduts, e sas responsas seràn orfanèlas.", "confirmations.reply.confirm": "Respondre", - "confirmations.reply.message": "Respondre remplaçarà lo messatge que sètz a escriure. Volètz vertadièrament contunhar ?", + "confirmations.reply.message": "Respondre remplaçarà lo messatge que sètz a escriure. Volètz vertadièrament contunhar ?", "confirmations.unfollow.confirm": "Quitar de sègre", "confirmations.unfollow.message": "Volètz vertadièrament quitar de sègre {name} ?", "embed.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.", @@ -115,8 +115,8 @@ "empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !", "empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.", "empty_column.domain_blocks": "I a pas encara cap de domeni amagat.", - "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quanda n’auretz un, apareisserà aquí.", - "empty_column.favourites": "Degun a pas encara mes en favorit aqueste tut. Quanda qualqu’un o farà, apareisserà aquí.", + "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quand n’auretz un, apareisserà aquí.", + "empty_column.favourites": "Degun a pas encara mes en favorit aqueste tut. Quand qualqu’un o farà, apareisserà aquí.", "empty_column.follow_requests": "Avètz pas encara de demanda d’abonament. Quand n’auretz una apareisserà aquí.", "empty_column.hashtag": "I a pas encara de contengut ligat a aquesta etiqueta.", "empty_column.home": "Vòstre flux d’acuèlh es void. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.", @@ -129,7 +129,7 @@ "follow_request.authorize": "Acceptar", "follow_request.reject": "Regetar", "getting_started.developers": "Desvelopaires", - "getting_started.documentation": "Documentation", + "getting_started.documentation": "Documentacion", "getting_started.find_friends": "Trobar d’amics de Twitter", "getting_started.heading": "Per començar", "getting_started.invite": "Convidar de monde", @@ -145,7 +145,7 @@ "keyboard_shortcuts.column": "centrar un estatut a una colomna", "keyboard_shortcuts.compose": "anar al camp tèxte", "keyboard_shortcuts.description": "Descripcion", - "keyboard_shortcuts.direct": "per dobrir la columna de messatges dirèctes", + "keyboard_shortcuts.direct": "per dobrir la colomna de messatges dirèctes", "keyboard_shortcuts.down": "far davalar dins la lista", "keyboard_shortcuts.enter": "dobrir los estatuts", "keyboard_shortcuts.favourite": "apondre als favorits", @@ -159,7 +159,7 @@ "keyboard_shortcuts.mention": "mencionar l’autor", "keyboard_shortcuts.muted": "per dobrir la lista dels utilizaires silenciats", "keyboard_shortcuts.my_profile": "per dobrir vòstre perfil", - "keyboard_shortcuts.notifications": "per dobrir la columna de notificacions", + "keyboard_shortcuts.notifications": "per dobrir la colomna de notificacions", "keyboard_shortcuts.pinned": "per dobrir la lista dels tuts penjats", "keyboard_shortcuts.profile": "per dobrir lo perfil de l’autor", "keyboard_shortcuts.reply": "respondre", diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 820f094ff..428bbfffe 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -139,7 +139,7 @@ oc: resend_confirmation: already_confirmed: Aqueste utilizaire es ja confirmat send: Tornar mandar lo corrièl de confirmacion - success: Corrièl de confirmacion corrèctament mandat ! + success: Corrièl de confirmacion corrèctament mandat ! reset: Reïnicializar reset_password: Reïnicializar lo senhal resubscribe: Se tornar abonar @@ -438,11 +438,11 @@ oc: title: WebSub topic: Subjècte suspensions: - bad_acct_msg: La valor de confirmacion a pas coïncidit. Sètz a suspendre lo bon compte ? + bad_acct_msg: La valor de confirmacion a pas coïncidit. Sètz a suspendre lo bon compte ? hint_html: 'Per confirmar la suspension del compte, picatz %{value} al camp çai-jos :' proceed: Tractat title: Suspension de %{acct} - warning_html: 'Suspendre aqueste compte suprimirà irreversiblament las donadas del compte, aquò compren :' + warning_html: 'Suspendre aqueste compte suprimirà irreversiblament las donadas del compte, aquò compren :' title: Administracion admin_mailer: new_report: diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index c7cc2b471..bb9e3529c 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -30,7 +30,7 @@ oc: imports: data: Fichièr CSV exportat d’una autra instància Mastodon sessions: - otp: 'Picatz lo còdi d’autentificacion en dos temps (Two factor code) de vòstra aplicacion mobil o utilizatz un de vòstres còdis de recuperacion :' + otp: 'Picatz lo còdi d’autentificacion en dos temps (Two factor code) de vòstra aplicacion mobil o utilizatz un de vòstres còdis de recuperacion :' user: chosen_languages: Quand seleccionadas, solament los tuts dins las lengas triadas seràn mostrats dins vòstre flux d’actualitat labels: From 50ce347ef96690767b21ee01d6a785166c583b6b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 30 Oct 2018 22:06:59 +0100 Subject: [PATCH 084/124] Bump version to 2.6.0 (#9149) * Bump version to 2.6.0 * Update CHANGELOG.md --- CHANGELOG.md | 18 +++++++++--------- lib/mastodon/version.rb | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c6847e0b..6a7502656 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ Changelog All notable changes to this project will be documented in this file. -## [Unreleased] +## [2.6.0] - 2018-10-30 ### Added - Add link ownership verification (#8703) @@ -46,7 +46,7 @@ All notable changes to this project will be documented in this file. - Add CORS header to `/.well-known/*` routes (#9083) - Add `card` attribute to statuses returned from REST API (#9120) - Add in-stream link preview (#9120) -- Add support for ActivityPub `Page` objects (#9121) +- Add support for ActivityPub `Page` objects (#9121) ### Changed @@ -63,7 +63,7 @@ All notable changes to this project will be documented in this file. - Change recommended Ruby version to 2.5.3 (#9003) - Change docker-compose default to persist volumes in current directory (#9055) - Change character counters on edit profile page to input length limit (#9100) -- Change notification filtering to always let through messages from staff (#9152) +- Change notification filtering to always let through messages from staff (#9152) - Change "hide boosts from user" function also hiding notifications about boosts (#9147) - Change CSS `detailed-status__wrapper` class actually wrap the detailed status (#8547) @@ -97,15 +97,15 @@ All notable changes to this project will be documented in this file. - Fix some hotkeys not working on detailed status view (#9006) - Fix og:url on status pages (#9047) - Fix upload option buttons only being visible on hover (#9074) -- Fix tootctl not returning exit code 1 on wrong arguments (#9094) -- Fix preview cards for appearing for profiles mentioned in toot (#6934, #9158) +- Fix tootctl not returning exit code 1 on wrong arguments (#9094) +- Fix preview cards for appearing for profiles mentioned in toot (#6934, #9158) - Fix local accounts sometimes being duplicated as faux-remote (#9109) - Fix emoji search when the shortcode has multiple separators (#9124) -- Fix dropdowns sometimes being partially obscured by other elements (#9126) -- Fix cache not updating when reply/boost/favourite counters or media sensitivity update (#9119) -- Fix empty display name precedence over username in web UI (#9163) +- Fix dropdowns sometimes being partially obscured by other elements (#9126) +- Fix cache not updating when reply/boost/favourite counters or media sensitivity update (#9119) +- Fix empty display name precedence over username in web UI (#9163) - Fix td instead of th in sessions table header (#9162) -- Fix handling of content types with profile (#9132) +- Fix handling of content types with profile (#9132) ## [2.5.2] - 2018-10-12 ### Security diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index e4c5b9cbd..7cc837345 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -21,7 +21,7 @@ module Mastodon end def flags - 'rc4' + '' end def to_a From ce2ee68b64c2ba2baa10378027efd0aadbe98598 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 31 Oct 2018 00:43:34 +0100 Subject: [PATCH 085/124] Revert "Fix FetchAtomService content type handling (#9132)" (#9171) This reverts commit c36a4a16178441968715e13c77859b1eb813c2af. --- app/services/fetch_atom_service.rb | 10 ++++------ spec/services/fetch_atom_service_spec.rb | 9 +-------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/app/services/fetch_atom_service.rb b/app/services/fetch_atom_service.rb index b6c6cdd1c..550e75f33 100644 --- a/app/services/fetch_atom_service.rb +++ b/app/services/fetch_atom_service.rb @@ -29,7 +29,7 @@ class FetchAtomService < BaseService def perform_request(&block) accept = 'text/html' - accept = 'application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams", application/atom+xml, ' + accept unless @unsupported_activity + accept = 'application/activity+json, application/ld+json, application/atom+xml, ' + accept unless @unsupported_activity Request.new(:get, @url).add_headers('Accept' => accept).perform(&block) end @@ -37,11 +37,9 @@ class FetchAtomService < BaseService def process_response(response, terminal = false) return nil if response.code != 200 - response_type = response.headers['Content-type'] - - if response_type == 'application/atom+xml' + if response.mime_type == 'application/atom+xml' [@url, { prefetched_body: response.body_with_limit }, :ostatus] - elsif ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(response_type) + elsif ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(response.mime_type) body = response.body_with_limit json = body_to_json(body) if supported_context?(json) && equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) && json['inbox'].present? @@ -57,7 +55,7 @@ class FetchAtomService < BaseService if link_header&.find_link(%w(rel alternate)) process_link_headers(link_header) - elsif response_type == 'text/html' + elsif response.mime_type == 'text/html' process_html(response) end end diff --git a/spec/services/fetch_atom_service_spec.rb b/spec/services/fetch_atom_service_spec.rb index 0cdcda892..30e5b0935 100644 --- a/spec/services/fetch_atom_service_spec.rb +++ b/spec/services/fetch_atom_service_spec.rb @@ -60,20 +60,13 @@ RSpec.describe FetchAtomService, type: :service do it { is_expected.to eq [url, { :prefetched_body => "" }, :ostatus] } end - context 'content_type is activity+json' do + context 'content_type is json' do let(:content_type) { 'application/activity+json' } let(:body) { json } it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] } end - context 'content_type is ld+json with profile' do - let(:content_type) { 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' } - let(:body) { json } - - it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] } - end - before do WebMock.stub_request(:get, url).to_return(status: 200, body: body, headers: headers) WebMock.stub_request(:get, 'http://example.com/foo').to_return(status: 200, body: json, headers: { 'Content-Type' => 'application/activity+json' }) From b9d0d209cd16ef19b306528a9c4be34b47cf1945 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 31 Oct 2018 00:55:20 +0100 Subject: [PATCH 086/124] Fix reducer error when conversation has no last status in web UI (#9173) Fix #9170 --- app/javascript/mastodon/reducers/conversations.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/reducers/conversations.js b/app/javascript/mastodon/reducers/conversations.js index ea39fccee..b13a9fdf4 100644 --- a/app/javascript/mastodon/reducers/conversations.js +++ b/app/javascript/mastodon/reducers/conversations.js @@ -21,7 +21,7 @@ const conversationToMap = item => ImmutableMap({ id: item.id, unread: item.unread, accounts: ImmutableList(item.accounts.map(a => a.id)), - last_status: item.last_status.id, + last_status: item.last_status ? item.last_status.id : null, }); const updateConversation = (state, item) => state.update('items', list => { From ba06a5f485d305bc917506828fd5cb20b3f0c226 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 31 Oct 2018 01:04:45 +0100 Subject: [PATCH 087/124] Bump version to 2.6.1 (#9172) --- CHANGELOG.md | 6 ++++++ lib/mastodon/version.rb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a7502656..cb8bf3272 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ Changelog All notable changes to this project will be documented in this file. +## [2.6.1] - 2018-10-30 +### Fixed + +- Fix resolving resources by URL not working due to a regression in #9132 (#9171) +- Fix reducer error in web UI when a conversation has no last status (#9173) + ## [2.6.0] - 2018-10-30 ### Added diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 7cc837345..2e39ad01e 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 0 + 1 end def pre From 449e6e451f6185c44ed3b2d60b56b46b55e52281 Mon Sep 17 00:00:00 2001 From: Steven Tappert Date: Mon, 5 Nov 2018 18:51:43 +0100 Subject: [PATCH 088/124] Check for empty "last_status" before sorting DM column (#9207) * Check for empty "last_status" before sorting * Small touchups for codeclimate --- app/javascript/mastodon/reducers/conversations.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/reducers/conversations.js b/app/javascript/mastodon/reducers/conversations.js index b13a9fdf4..955a07754 100644 --- a/app/javascript/mastodon/reducers/conversations.js +++ b/app/javascript/mastodon/reducers/conversations.js @@ -56,7 +56,13 @@ const expandNormalizedConversations = (state, conversations, next) => { list = list.concat(items); - return list.sortBy(x => x.get('last_status'), (a, b) => compareId(a, b) * -1); + return list.sortBy(x => x.get('last_status'), (a, b) => { + if(a === null || b === null) { + return -1; + } + + return compareId(a, b) * -1; + }); }); } From 430499fbe12057b833897dada6407c55a0dab048 Mon Sep 17 00:00:00 2001 From: "m.b" Date: Mon, 5 Nov 2018 18:54:07 +0100 Subject: [PATCH 089/124] Update resolve_url_service.rb (#9188) --- app/services/resolve_url_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb index 1db1917e2..ed0c56923 100644 --- a/app/services/resolve_url_service.rb +++ b/app/services/resolve_url_service.rb @@ -20,7 +20,7 @@ class ResolveURLService < BaseService def process_url if equals_or_includes_any?(type, %w(Application Group Organization Person Service)) FetchRemoteAccountService.new.call(atom_url, body, protocol) - elsif equals_or_includes_any?(type, %w(Note Article Image Video)) + elsif equals_or_includes_any?(type, %w(Note Article Image Video Page)) FetchRemoteStatusService.new.call(atom_url, body, protocol) end end From 5ee4fd46063a2c36d92805ede4b8860065e56dc2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Nov 2018 07:42:17 +0100 Subject: [PATCH 090/124] Increase default column width from 330px to 350px (#9227) --- app/javascript/styles/mastodon/components.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index e5d9f7b9f..6e535baed 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1847,7 +1847,7 @@ a.account__display-name { } .column { - width: 330px; + width: 350px; position: relative; box-sizing: border-box; display: flex; From 330401bec0146be9762358c774efe9a58954d8c4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Nov 2018 21:05:42 +0100 Subject: [PATCH 091/124] Optimize the process of following someone (#9220) * Eliminate extra accounts select query from FollowService * Optimistically update follow state in web UI and hide loading bar Fix #6205 * Asynchronize NotifyService in FollowService And fix failing test * Skip Webfinger resolve routine when called from FollowService if possible If an account is ActivityPub, then webfinger re-resolving is not necessary when called from FollowService. Improve options of ResolveAccountService --- app/controllers/api/v1/accounts_controller.rb | 2 +- app/javascript/mastodon/actions/accounts.js | 18 ++++++++--- .../mastodon/reducers/relationships.js | 12 +++++++ app/services/concerns/author_extractor.rb | 2 +- app/services/follow_service.rb | 8 ++--- app/services/process_mentions_service.rb | 2 +- app/services/resolve_account_service.rb | 32 ++++++++++++------- app/workers/local_notification_worker.rb | 13 ++++++-- .../authorize_interactions_controller_spec.rb | 4 ++- 9 files changed, 67 insertions(+), 26 deletions(-) diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 1d5372a8c..f711c4676 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -17,7 +17,7 @@ class Api::V1::AccountsController < Api::BaseController end def follow - FollowService.new.call(current_user.account, @account.acct, reblogs: truthy_param?(:reblogs)) + FollowService.new.call(current_user.account, @account, reblogs: truthy_param?(:reblogs)) options = @account.locked? ? {} : { following_map: { @account.id => { reblogs: truthy_param?(:reblogs) } }, requested_map: { @account.id => false } } diff --git a/app/javascript/mastodon/actions/accounts.js b/app/javascript/mastodon/actions/accounts.js index cbae62a0f..d4a824e2c 100644 --- a/app/javascript/mastodon/actions/accounts.js +++ b/app/javascript/mastodon/actions/accounts.js @@ -145,12 +145,14 @@ export function fetchAccountFail(id, error) { export function followAccount(id, reblogs = true) { return (dispatch, getState) => { const alreadyFollowing = getState().getIn(['relationships', id, 'following']); - dispatch(followAccountRequest(id)); + const locked = getState().getIn(['accounts', id, 'locked'], false); + + dispatch(followAccountRequest(id, locked)); api(getState).post(`/api/v1/accounts/${id}/follow`, { reblogs }).then(response => { dispatch(followAccountSuccess(response.data, alreadyFollowing)); }).catch(error => { - dispatch(followAccountFail(error)); + dispatch(followAccountFail(error, locked)); }); }; }; @@ -167,10 +169,12 @@ export function unfollowAccount(id) { }; }; -export function followAccountRequest(id) { +export function followAccountRequest(id, locked) { return { type: ACCOUNT_FOLLOW_REQUEST, id, + locked, + skipLoading: true, }; }; @@ -179,13 +183,16 @@ export function followAccountSuccess(relationship, alreadyFollowing) { type: ACCOUNT_FOLLOW_SUCCESS, relationship, alreadyFollowing, + skipLoading: true, }; }; -export function followAccountFail(error) { +export function followAccountFail(error, locked) { return { type: ACCOUNT_FOLLOW_FAIL, error, + locked, + skipLoading: true, }; }; @@ -193,6 +200,7 @@ export function unfollowAccountRequest(id) { return { type: ACCOUNT_UNFOLLOW_REQUEST, id, + skipLoading: true, }; }; @@ -201,6 +209,7 @@ export function unfollowAccountSuccess(relationship, statuses) { type: ACCOUNT_UNFOLLOW_SUCCESS, relationship, statuses, + skipLoading: true, }; }; @@ -208,6 +217,7 @@ export function unfollowAccountFail(error) { return { type: ACCOUNT_UNFOLLOW_FAIL, error, + skipLoading: true, }; }; diff --git a/app/javascript/mastodon/reducers/relationships.js b/app/javascript/mastodon/reducers/relationships.js index f46049297..8322780de 100644 --- a/app/javascript/mastodon/reducers/relationships.js +++ b/app/javascript/mastodon/reducers/relationships.js @@ -1,6 +1,10 @@ import { ACCOUNT_FOLLOW_SUCCESS, + ACCOUNT_FOLLOW_REQUEST, + ACCOUNT_FOLLOW_FAIL, ACCOUNT_UNFOLLOW_SUCCESS, + ACCOUNT_UNFOLLOW_REQUEST, + ACCOUNT_UNFOLLOW_FAIL, ACCOUNT_BLOCK_SUCCESS, ACCOUNT_UNBLOCK_SUCCESS, ACCOUNT_MUTE_SUCCESS, @@ -37,6 +41,14 @@ const initialState = ImmutableMap(); export default function relationships(state = initialState, action) { switch(action.type) { + case ACCOUNT_FOLLOW_REQUEST: + return state.setIn([action.id, action.locked ? 'requested' : 'following'], true); + case ACCOUNT_FOLLOW_FAIL: + return state.setIn([action.id, action.locked ? 'requested' : 'following'], false); + case ACCOUNT_UNFOLLOW_REQUEST: + return state.setIn([action.id, 'following'], false); + case ACCOUNT_UNFOLLOW_FAIL: + return state.setIn([action.id, 'following'], true); case ACCOUNT_FOLLOW_SUCCESS: case ACCOUNT_UNFOLLOW_SUCCESS: case ACCOUNT_BLOCK_SUCCESS: diff --git a/app/services/concerns/author_extractor.rb b/app/services/concerns/author_extractor.rb index 1e00eb803..c2419e9ec 100644 --- a/app/services/concerns/author_extractor.rb +++ b/app/services/concerns/author_extractor.rb @@ -18,6 +18,6 @@ module AuthorExtractor acct = "#{username}@#{domain}" end - ResolveAccountService.new.call(acct, update_profile) + ResolveAccountService.new.call(acct, update_profile: update_profile) end end diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb index f6888a68d..0020bc9fe 100644 --- a/app/services/follow_service.rb +++ b/app/services/follow_service.rb @@ -7,9 +7,9 @@ class FollowService < BaseService # @param [Account] source_account From which to follow # @param [String, Account] uri User URI to follow in the form of username@domain (or account record) # @param [true, false, nil] reblogs Whether or not to show reblogs, defaults to true - def call(source_account, uri, reblogs: nil) + def call(source_account, target_account, reblogs: nil) reblogs = true if reblogs.nil? - target_account = uri.is_a?(Account) ? uri : ResolveAccountService.new.call(uri) + target_account = ResolveAccountService.new.call(target_account, skip_webfinger: true) raise ActiveRecord::RecordNotFound if target_account.nil? || target_account.id == source_account.id || target_account.suspended? raise Mastodon::NotPermittedError if target_account.blocking?(source_account) || source_account.blocking?(target_account) @@ -42,7 +42,7 @@ class FollowService < BaseService follow_request = FollowRequest.create!(account: source_account, target_account: target_account, show_reblogs: reblogs) if target_account.local? - NotifyService.new.call(target_account, follow_request) + LocalNotificationWorker.perform_async(target_account.id, follow_request.id, follow_request.class.name) elsif target_account.ostatus? NotificationWorker.perform_async(build_follow_request_xml(follow_request), source_account.id, target_account.id) AfterRemoteFollowRequestWorker.perform_async(follow_request.id) @@ -57,7 +57,7 @@ class FollowService < BaseService follow = source_account.follow!(target_account, reblogs: reblogs) if target_account.local? - NotifyService.new.call(target_account, follow) + LocalNotificationWorker.perform_async(target_account.id, follow.id, follow.class.name) else Pubsubhubbub::SubscribeWorker.perform_async(target_account.id) unless target_account.subscribed? NotificationWorker.perform_async(build_follow_xml(follow), source_account.id, target_account.id) diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb index b4641c4b4..ec7d33b1d 100644 --- a/app/services/process_mentions_service.rb +++ b/app/services/process_mentions_service.rb @@ -47,7 +47,7 @@ class ProcessMentionsService < BaseService mentioned_account = mention.account if mentioned_account.local? - LocalNotificationWorker.perform_async(mention.id) + LocalNotificationWorker.perform_async(mentioned_account.id, mention.id, mention.class.name) elsif mentioned_account.ostatus? && !@status.stream_entry.hidden? NotificationWorker.perform_async(ostatus_xml, @status.account_id, mentioned_account.id) elsif mentioned_account.activitypub? diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb index 4323e7f06..c3064211d 100644 --- a/app/services/resolve_account_service.rb +++ b/app/services/resolve_account_service.rb @@ -9,17 +9,27 @@ class ResolveAccountService < BaseService # Find or create a local account for a remote user. # When creating, look up the user's webfinger and fetch all # important information from their feed - # @param [String] uri User URI in the form of username@domain + # @param [String, Account] uri User URI in the form of username@domain + # @param [Hash] options # @return [Account] - def call(uri, update_profile = true, redirected = nil) - @username, @domain = uri.split('@') - @update_profile = update_profile + def call(uri, options = {}) + @options = options - return Account.find_local(@username) if TagManager.instance.local_domain?(@domain) + if uri.is_a?(Account) + @account = uri + @username = @account.username + @domain = @account.domain - @account = Account.find_remote(@username, @domain) + return @account if @account.local? || !webfinger_update_due? + else + @username, @domain = uri.split('@') - return @account unless webfinger_update_due? + return Account.find_local(@username) if TagManager.instance.local_domain?(@domain) + + @account = Account.find_remote(@username, @domain) + + return @account unless webfinger_update_due? + end Rails.logger.debug "Looking up webfinger for #{uri}" @@ -30,8 +40,8 @@ class ResolveAccountService < BaseService if confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? @username = confirmed_username @domain = confirmed_domain - elsif redirected.nil? - return call("#{confirmed_username}@#{confirmed_domain}", update_profile, true) + elsif options[:redirected].nil? + return call("#{confirmed_username}@#{confirmed_domain}", options.merge(redirected: true)) else Rails.logger.debug 'Requested and returned acct URIs do not match' return @@ -76,7 +86,7 @@ class ResolveAccountService < BaseService end def webfinger_update_due? - @account.nil? || @account.possibly_stale? + @account.nil? || ((!@options[:skip_webfinger] || @account.ostatus?) && @account.possibly_stale?) end def activitypub_ready? @@ -93,7 +103,7 @@ class ResolveAccountService < BaseService end def update_profile? - @update_profile + @options[:update_profile] end def handle_activitypub diff --git a/app/workers/local_notification_worker.rb b/app/workers/local_notification_worker.rb index 748270563..48635e498 100644 --- a/app/workers/local_notification_worker.rb +++ b/app/workers/local_notification_worker.rb @@ -3,9 +3,16 @@ class LocalNotificationWorker include Sidekiq::Worker - def perform(mention_id) - mention = Mention.find(mention_id) - NotifyService.new.call(mention.account, mention) + def perform(receiver_account_id, activity_id = nil, activity_class_name = nil) + if activity_id.nil? && activity_class_name.nil? + activity = Mention.find(receiver_account_id) + receiver = activity.account + else + receiver = Account.find(receiver_account_id) + activity = activity_class_name.constantize.find(activity_id) + end + + NotifyService.new.call(receiver, activity) rescue ActiveRecord::RecordNotFound true end diff --git a/spec/controllers/authorize_interactions_controller_spec.rb b/spec/controllers/authorize_interactions_controller_spec.rb index 81fd9ceb7..ce4257b68 100644 --- a/spec/controllers/authorize_interactions_controller_spec.rb +++ b/spec/controllers/authorize_interactions_controller_spec.rb @@ -99,10 +99,12 @@ describe AuthorizeInteractionsController do allow(ResolveAccountService).to receive(:new).and_return(service) allow(service).to receive(:call).with('user@hostname').and_return(target_account) + allow(service).to receive(:call).with(target_account, skip_webfinger: true).and_return(target_account) + post :create, params: { acct: 'acct:user@hostname' } - expect(service).to have_received(:call).with('user@hostname') + expect(service).to have_received(:call).with(target_account, skip_webfinger: true) expect(account.following?(target_account)).to be true expect(response).to render_template(:success) end From b3c29ece478d2e34525b4edb9b4eaed4904b1cb5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Nov 2018 21:06:01 +0100 Subject: [PATCH 092/124] Fix follow limit validator reporting lower number past threshold (#9230) * Fix follow limit validator reporting lower number past threshold * Avoid floating point follow limit --- app/validators/follow_limit_validator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/validators/follow_limit_validator.rb b/app/validators/follow_limit_validator.rb index eb083ed85..409bf0176 100644 --- a/app/validators/follow_limit_validator.rb +++ b/app/validators/follow_limit_validator.rb @@ -14,7 +14,7 @@ class FollowLimitValidator < ActiveModel::Validator if account.following_count < LIMIT LIMIT else - account.followers_count * RATIO + [(account.followers_count * RATIO).round, LIMIT].max end end end From 4b2f2548061cbbe37a98951c01438e327c915c92 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Nov 2018 21:06:14 +0100 Subject: [PATCH 093/124] Fix form validation flash message color and input borders (#9235) * Fix form validation flash message color and input borders * Fix typo --- app/javascript/styles/mastodon/forms.scss | 7 +++++-- app/views/shared/_error_messages.html.haml | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 8c4c934ea..46ef85774 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -330,9 +330,12 @@ code { } input[type=text], + input[type=number], input[type=email], - input[type=password] { - border-bottom-color: $valid-value-color; + input[type=password], + textarea, + select { + border-color: lighten($error-red, 12%); } .error { diff --git a/app/views/shared/_error_messages.html.haml b/app/views/shared/_error_messages.html.haml index b73890216..28becd6c4 100644 --- a/app/views/shared/_error_messages.html.haml +++ b/app/views/shared/_error_messages.html.haml @@ -1,3 +1,3 @@ - if object.errors.any? - .flash-message#error_explanation + .flash-message.alert#error_explanation %strong= t('generic.validation_errors', count: object.errors.count) From 21fd335dd7722d512962e5f49812b3e9a0cd426f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Nov 2018 21:06:26 +0100 Subject: [PATCH 094/124] Display amount of freed disk space in tootctl media remove (#9229) * Display amount of freed disk space in tootctl media remove Fix #9213 * Fix code style issue --- lib/mastodon/media_cli.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index 179d1b6b5..affc4cedb 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -6,6 +6,8 @@ require_relative 'cli_helper' module Mastodon class MediaCLI < Thor + include ActionView::Helpers::NumberHelper + def self.exit_on_failure? true end @@ -36,11 +38,13 @@ module Mastodon time_ago = options[:days].days.ago queued = 0 processed = 0 - dry_run = options[:dry_run] ? '(DRY RUN)' : '' + size = 0 + dry_run = options[:dry_run] ? '(DRY RUN)' : '' if options[:background] - MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id).reorder(nil).find_in_batches do |media_attachments| + MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id, :file_file_size).reorder(nil).find_in_batches do |media_attachments| queued += media_attachments.size + size += media_attachments.reduce(0) { |sum, m| sum + (m.file_file_size || 0) } Maintenance::UncacheMediaWorker.push_bulk(media_attachments.map(&:id)) unless options[:dry_run] end else @@ -49,6 +53,7 @@ module Mastodon Maintenance::UncacheMediaWorker.new.perform(m) unless options[:dry_run] options[:verbose] ? say(m.id) : say('.', :green, false) processed += 1 + size += m.file_file_size end end end @@ -56,9 +61,9 @@ module Mastodon say if options[:background] - say("Scheduled the deletion of #{queued} media attachments #{dry_run}", :green, true) + say("Scheduled the deletion of #{queued} media attachments (approx. #{number_to_human_size(size)}) #{dry_run}", :green, true) else - say("Removed #{processed} media attachments #{dry_run}", :green, true) + say("Removed #{processed} media attachments (approx. #{number_to_human_size(size)}) #{dry_run}", :green, true) end end end From 0f436de035d848ce481a1d21a774031eef41f10d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Nov 2018 21:08:57 +0100 Subject: [PATCH 095/124] Add "Show thread" link to self-replies (#9228) Fix #4716 --- app/javascript/mastodon/components/status.js | 9 ++++++++- app/javascript/mastodon/components/status_action_bar.js | 5 +---- app/javascript/mastodon/components/status_list.js | 2 ++ .../mastodon/features/status/components/action_bar.js | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 9fa8cc008..fd0780025 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -67,6 +67,7 @@ class Status extends ImmutablePureComponent { unread: PropTypes.bool, onMoveUp: PropTypes.func, onMoveDown: PropTypes.func, + showThread: PropTypes.bool, }; // Avoid checking props that are functions (and whose equality will always @@ -168,7 +169,7 @@ class Status extends ImmutablePureComponent { let media = null; let statusAvatar, prepend, rebloggedByText; - const { intl, hidden, featured, otherAccounts, unread } = this.props; + const { intl, hidden, featured, otherAccounts, unread, showThread } = this.props; let { status, account, ...other } = this.props; @@ -309,6 +310,12 @@ class Status extends ImmutablePureComponent { {media} + {showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) && ( + + )} +
      diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index e7e5b0a6c..68a1fda24 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -148,7 +148,6 @@ class StatusActionBar extends ImmutablePureComponent { let menu = []; let reblogIcon = 'retweet'; - let replyIcon; let replyTitle; menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen }); @@ -191,10 +190,8 @@ class StatusActionBar extends ImmutablePureComponent { } if (status.get('in_reply_to_id', null) === null) { - replyIcon = 'reply'; replyTitle = intl.formatMessage(messages.reply); } else { - replyIcon = 'reply-all'; replyTitle = intl.formatMessage(messages.replyAll); } @@ -204,7 +201,7 @@ class StatusActionBar extends ImmutablePureComponent { return (
      -
      {obfuscatedCount(status.get('replies_count'))}
      +
      {obfuscatedCount(status.get('replies_count'))}
      {shareButton} diff --git a/app/javascript/mastodon/components/status_list.js b/app/javascript/mastodon/components/status_list.js index 37f21fb44..f3e304618 100644 --- a/app/javascript/mastodon/components/status_list.js +++ b/app/javascript/mastodon/components/status_list.js @@ -104,6 +104,7 @@ export default class StatusList extends ImmutablePureComponent { onMoveUp={this.handleMoveUp} onMoveDown={this.handleMoveDown} contextType={timelineId} + showThread /> )) ) : null; @@ -117,6 +118,7 @@ export default class StatusList extends ImmutablePureComponent { onMoveUp={this.handleMoveUp} onMoveDown={this.handleMoveDown} contextType={timelineId} + showThread /> )).concat(scrollableContent); } diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index fa6fd56e5..565009be2 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -159,7 +159,7 @@ class ActionBar extends React.PureComponent { return (
      -
      +
      {shareButton} From 63f168c3bf26f8c336d966b3619307801cab7cab Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Nov 2018 21:55:59 +0100 Subject: [PATCH 096/124] Fix nil error regression from #9229 in tootctl media remove (#9239) Fix #9237 --- lib/mastodon/media_cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index affc4cedb..99660dd1d 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -53,7 +53,7 @@ module Mastodon Maintenance::UncacheMediaWorker.new.perform(m) unless options[:dry_run] options[:verbose] ? say(m.id) : say('.', :green, false) processed += 1 - size += m.file_file_size + size += m.file_file_size || 0 end end end From f73b7e77dacd94c1d0c7c4bc0c0227eb3159ad19 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 9 Nov 2018 09:08:01 +0100 Subject: [PATCH 097/124] Improve ActiveRecord connection in on_worker_boot (#9238) This is how it looks in the example in the Puma README --- config/puma.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/puma.rb b/config/puma.rb index 5ebf5ed19..1afdb1c6d 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -13,7 +13,9 @@ workers ENV.fetch('WEB_CONCURRENCY') { 2 } preload_app! on_worker_boot do - ActiveRecord::Base.establish_connection if defined?(ActiveRecord) + ActiveSupport.on_load(:active_record) do + ActiveRecord::Base.establish_connection + end end plugin :tmp_restart From d06a724b1c097b4e8b7f1fa2591b0753c349a5ad Mon Sep 17 00:00:00 2001 From: ThibG Date: Sat, 10 Nov 2018 20:42:04 +0100 Subject: [PATCH 098/124] Check that twitter:player is valid before using it (#9254) Fixes #9251 --- app/services/fetch_link_card_service.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index 3e77579bb..38c578de2 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -136,14 +136,15 @@ class FetchLinkCardService < BaseService detector = CharlockHolmes::EncodingDetector.new detector.strip_tags = true - guess = detector.detect(@html, @html_charset) - page = Nokogiri::HTML(@html, nil, guess&.fetch(:encoding, nil)) + guess = detector.detect(@html, @html_charset) + page = Nokogiri::HTML(@html, nil, guess&.fetch(:encoding, nil)) + player_url = meta_property(page, 'twitter:player') - if meta_property(page, 'twitter:player') + if player_url && !bad_url?(Addressable::URI.parse(player_url)) @card.type = :video @card.width = meta_property(page, 'twitter:player:width') || 0 @card.height = meta_property(page, 'twitter:player:height') || 0 - @card.html = content_tag(:iframe, nil, src: meta_property(page, 'twitter:player'), + @card.html = content_tag(:iframe, nil, src: player_url, width: @card.width, height: @card.height, allowtransparency: 'true', From 886ef1cc384f758944407ac0255afe7d71afc513 Mon Sep 17 00:00:00 2001 From: ThibG Date: Sat, 10 Nov 2018 23:59:51 +0100 Subject: [PATCH 099/124] Fix emoji update date processing (#9255) --- app/lib/activitypub/activity/create.rb | 2 +- app/services/activitypub/process_account_service.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 45079e2b3..9d2ddd3f6 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -177,7 +177,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity updated = tag['updated'] emoji = CustomEmoji.find_by(shortcode: shortcode, domain: @account.domain) - return unless emoji.nil? || image_url != emoji.image_remote_url || (updated && emoji.updated_at >= updated) + return unless emoji.nil? || image_url != emoji.image_remote_url || (updated && updated >= emoji.updated_at) emoji ||= CustomEmoji.new(domain: @account.domain, shortcode: shortcode, uri: uri) emoji.image_remote_url = image_url diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index c77858f1d..5c865dae2 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -232,7 +232,7 @@ class ActivityPub::ProcessAccountService < BaseService updated = tag['updated'] emoji = CustomEmoji.find_by(shortcode: shortcode, domain: @account.domain) - return unless emoji.nil? || image_url != emoji.image_remote_url || (updated && emoji.updated_at >= updated) + return unless emoji.nil? || image_url != emoji.image_remote_url || (updated && updated >= emoji.updated_at) emoji ||= CustomEmoji.new(domain: @account.domain, shortcode: shortcode, uri: uri) emoji.image_remote_url = image_url From 4ce6ed20211b83d36746f61d4fb7dd001339baa1 Mon Sep 17 00:00:00 2001 From: ThibG Date: Mon, 12 Nov 2018 18:17:50 +0100 Subject: [PATCH 100/124] Perform deep comparison for card data when receiving new props (#9270) Fixes #9226 --- app/javascript/mastodon/features/status/components/card.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js index 743fe779a..3474a11e5 100644 --- a/app/javascript/mastodon/features/status/components/card.js +++ b/app/javascript/mastodon/features/status/components/card.js @@ -73,7 +73,7 @@ export default class Card extends React.PureComponent { }; componentWillReceiveProps (nextProps) { - if (this.props.card !== nextProps.card) { + if (!this.props.card.equals(nextProps.card)) { this.setState({ embedded: false }); } } From cd8575aef671dd44b4384b79b568f367add43537 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 12 Nov 2018 22:07:31 +0100 Subject: [PATCH 101/124] Fix null error introduced in #9270 (#9275) --- app/javascript/mastodon/features/status/components/card.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js index 3474a11e5..235d209b8 100644 --- a/app/javascript/mastodon/features/status/components/card.js +++ b/app/javascript/mastodon/features/status/components/card.js @@ -73,7 +73,7 @@ export default class Card extends React.PureComponent { }; componentWillReceiveProps (nextProps) { - if (!this.props.card.equals(nextProps.card)) { + if (!Immutable.is(this.props.card, nextProps.card)) { this.setState({ embedded: false }); } } From a3ef0761602481515207c0cf93cae0119dff4b25 Mon Sep 17 00:00:00 2001 From: ThibG Date: Tue, 13 Nov 2018 14:58:14 +0100 Subject: [PATCH 102/124] Fix race condition causing shallow status with only a "favourited" attribute (#9272) Fixes #9231 --- app/javascript/mastodon/reducers/statuses.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index 6e3d830da..885cc221c 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -38,11 +38,11 @@ export default function statuses(state = initialState, action) { case FAVOURITE_REQUEST: return state.setIn([action.status.get('id'), 'favourited'], true); case FAVOURITE_FAIL: - return state.setIn([action.status.get('id'), 'favourited'], false); + return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'favourited'], false); case REBLOG_REQUEST: return state.setIn([action.status.get('id'), 'reblogged'], true); case REBLOG_FAIL: - return state.setIn([action.status.get('id'), 'reblogged'], false); + return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'reblogged'], false); case STATUS_MUTE_SUCCESS: return state.setIn([action.id, 'muted'], true); case STATUS_UNMUTE_SUCCESS: From 01a8ab921e6e2b23cfea834c63b2cd196d15ff0b Mon Sep 17 00:00:00 2001 From: mayaeh Date: Fri, 16 Nov 2018 17:47:40 +0900 Subject: [PATCH 103/124] Fix "tootctl media remove" can't count the file size (#9288) * Fixed an issue where "tootctl media remove" can not count the file size. * Fixed the problem pointed out by codeclimate. --- lib/mastodon/media_cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index 99660dd1d..6152d5a09 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -50,10 +50,10 @@ module Mastodon else MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).reorder(nil).find_in_batches do |media_attachments| media_attachments.each do |m| + size += m.file_file_size || 0 Maintenance::UncacheMediaWorker.new.perform(m) unless options[:dry_run] options[:verbose] ? say(m.id) : say('.', :green, false) processed += 1 - size += m.file_file_size || 0 end end end From 6d4438a6ae351e2a8a73c7373c22d28f10838f65 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 16 Nov 2018 15:02:18 +0100 Subject: [PATCH 104/124] Remove intermediary arrays when creating hash maps from results (#9291) --- app/controllers/application_controller.rb | 2 +- app/lib/entity_cache.rb | 2 +- app/lib/formatter.rb | 4 ++-- app/lib/settings/scoped_settings.rb | 4 ++-- app/models/concerns/account_interactions.rb | 4 ++-- app/models/notification.rb | 2 +- app/models/setting.rb | 2 +- app/models/status.rb | 10 +++++----- app/models/trending_tags.rb | 2 +- app/services/batched_remove_status_service.rb | 6 +++--- spec/models/notification_spec.rb | 2 +- 11 files changed, 20 insertions(+), 20 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 7bb14aa4c..b54e7b008 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -113,7 +113,7 @@ class ApplicationController < ActionController::Base klass.reload_stale_associations!(cached_keys_with_value.values) if klass.respond_to?(:reload_stale_associations!) unless uncached_ids.empty? - uncached = klass.where(id: uncached_ids).with_includes.map { |item| [item.id, item] }.to_h + uncached = klass.where(id: uncached_ids).with_includes.each_with_object({}) { |item, h| h[item.id] = item } uncached.each_value do |item| Rails.cache.write(item, item) diff --git a/app/lib/entity_cache.rb b/app/lib/entity_cache.rb index 2aa37389c..8fff544a0 100644 --- a/app/lib/entity_cache.rb +++ b/app/lib/entity_cache.rb @@ -21,7 +21,7 @@ class EntityCache end unless uncached_ids.empty? - uncached = CustomEmoji.where(shortcode: shortcodes, domain: domain, disabled: false).map { |item| [item.shortcode, item] }.to_h + uncached = CustomEmoji.where(shortcode: shortcodes, domain: domain, disabled: false).each_with_object({}) { |item, h| h[item.shortcode] = item } uncached.each_value { |item| Rails.cache.write(to_key(:emoji, item.shortcode, domain), item, expires_in: MAX_EXPIRATION) } end diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb index d13884ec8..05fd9eeb1 100644 --- a/app/lib/formatter.rb +++ b/app/lib/formatter.rb @@ -128,9 +128,9 @@ class Formatter return html if emojis.empty? emoji_map = if animate - emojis.map { |e| [e.shortcode, full_asset_url(e.image.url)] }.to_h + emojis.each_with_object({}) { |e, h| h[e.shortcode] = full_asset_url(e.image.url) } else - emojis.map { |e| [e.shortcode, full_asset_url(e.image.url(:static))] }.to_h + emojis.each_with_object({}) { |e, h| h[e.shortcode] = full_asset_url(e.image.url(:static)) } end i = -1 diff --git a/app/lib/settings/scoped_settings.rb b/app/lib/settings/scoped_settings.rb index 5ee30825d..3653ab114 100644 --- a/app/lib/settings/scoped_settings.rb +++ b/app/lib/settings/scoped_settings.rb @@ -31,7 +31,7 @@ module Settings def all_as_records vars = thing_scoped - records = vars.map { |r| [r.var, r] }.to_h + records = vars.each_with_object({}) { |r, h| h[r.var] = r } Setting.default_settings.each do |key, default_value| next if records.key?(key) || default_value.is_a?(Hash) @@ -65,7 +65,7 @@ module Settings class << self def default_settings - defaulting = DEFAULTING_TO_UNSCOPED.map { |k| [k, Setting[k]] }.to_h + defaulting = DEFAULTING_TO_UNSCOPED.each_with_object({}) { |k, h| h[k] = Setting[k] } Setting.default_settings.merge!(defaulting) end end diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb index f5f833446..ad2909d91 100644 --- a/app/models/concerns/account_interactions.rb +++ b/app/models/concerns/account_interactions.rb @@ -45,9 +45,9 @@ module AccountInteractions end def domain_blocking_map(target_account_ids, account_id) - accounts_map = Account.where(id: target_account_ids).select('id, domain').map { |a| [a.id, a.domain] }.to_h + accounts_map = Account.where(id: target_account_ids).select('id, domain').each_with_object({}) { |a, h| h[a.id] = a.domain } blocked_domains = domain_blocking_map_by_domain(accounts_map.values.compact, account_id) - accounts_map.map { |id, domain| [id, blocked_domains[domain]] }.to_h + accounts_map.reduce({}) { |h, (id, domain)| h.merge(id => blocked_domains[domain]) } end def domain_blocking_map_by_domain(target_domains, account_id) diff --git a/app/models/notification.rb b/app/models/notification.rb index 78b180301..4233532d0 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -75,7 +75,7 @@ class Notification < ApplicationRecord return if account_ids.empty? - accounts = Account.where(id: account_ids).map { |a| [a.id, a] }.to_h + accounts = Account.where(id: account_ids).each_with_object({}) { |a, h| h[a.id] = a } cached_items.each do |item| item.from_account = accounts[item.from_account_id] diff --git a/app/models/setting.rb b/app/models/setting.rb index 033d09fd5..a5878e96a 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -40,7 +40,7 @@ class Setting < RailsSettings::Base def all_as_records vars = thing_scoped - records = vars.map { |r| [r.var, r] }.to_h + records = vars.each_with_object({}) { |r, h| h[r.var] = r } default_settings.each do |key, default_value| next if records.key?(key) || default_value.is_a?(Hash) diff --git a/app/models/status.rb b/app/models/status.rb index 32fedb924..a7216f910 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -310,19 +310,19 @@ class Status < ApplicationRecord end def favourites_map(status_ids, account_id) - Favourite.select('status_id').where(status_id: status_ids).where(account_id: account_id).map { |f| [f.status_id, true] }.to_h + Favourite.select('status_id').where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |f, h| h[f.status_id] = true } end def reblogs_map(status_ids, account_id) - select('reblog_of_id').where(reblog_of_id: status_ids).where(account_id: account_id).reorder(nil).map { |s| [s.reblog_of_id, true] }.to_h + select('reblog_of_id').where(reblog_of_id: status_ids).where(account_id: account_id).reorder(nil).each_with_object({}) { |s, h| h[s.reblog_of_id] = true } end def mutes_map(conversation_ids, account_id) - ConversationMute.select('conversation_id').where(conversation_id: conversation_ids).where(account_id: account_id).map { |m| [m.conversation_id, true] }.to_h + ConversationMute.select('conversation_id').where(conversation_id: conversation_ids).where(account_id: account_id).each_with_object({}) { |m, h| h[m.conversation_id] = true } end def pins_map(status_ids, account_id) - StatusPin.select('status_id').where(status_id: status_ids).where(account_id: account_id).map { |p| [p.status_id, true] }.to_h + StatusPin.select('status_id').where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |p, h| h[p.status_id] = true } end def reload_stale_associations!(cached_items) @@ -337,7 +337,7 @@ class Status < ApplicationRecord return if account_ids.empty? - accounts = Account.where(id: account_ids).map { |a| [a.id, a] }.to_h + accounts = Account.where(id: account_ids).each_with_object({}) { |a, h| h[a.id] = a } cached_items.each do |item| item.account = accounts[item.account_id] diff --git a/app/models/trending_tags.rb b/app/models/trending_tags.rb index c559651c6..3a8be2164 100644 --- a/app/models/trending_tags.rb +++ b/app/models/trending_tags.rb @@ -18,7 +18,7 @@ class TrendingTags def get(limit) key = "#{KEY}:#{Time.now.utc.beginning_of_day.to_i}" tag_ids = redis.zrevrange(key, 0, limit - 1).map(&:to_i) - tags = Tag.where(id: tag_ids).to_a.map { |tag| [tag.id, tag] }.to_h + tags = Tag.where(id: tag_ids).to_a.each_with_object({}) { |tag, h| h[tag.id] = tag } tag_ids.map { |tag_id| tags[tag_id] }.compact end diff --git a/app/services/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb index b8ab58938..75d756495 100644 --- a/app/services/batched_remove_status_service.rb +++ b/app/services/batched_remove_status_service.rb @@ -12,12 +12,12 @@ class BatchedRemoveStatusService < BaseService def call(statuses) statuses = Status.where(id: statuses.map(&:id)).includes(:account, :stream_entry).flat_map { |status| [status] + status.reblogs.includes(:account, :stream_entry).to_a } - @mentions = statuses.map { |s| [s.id, s.active_mentions.includes(:account).to_a] }.to_h - @tags = statuses.map { |s| [s.id, s.tags.pluck(:name)] }.to_h + @mentions = statuses.each_with_object({}) { |s, h| h[s.id] = s.active_mentions.includes(:account).to_a } + @tags = statuses.each_with_object({}) { |s, h| h[s.id] = s.tags.pluck(:name) } @stream_entry_batches = [] @salmon_batches = [] - @json_payloads = statuses.map { |s| [s.id, Oj.dump(event: :delete, payload: s.id.to_s)] }.to_h + @json_payloads = statuses.each_with_object({}) { |s, h| h[s.id] = Oj.dump(event: :delete, payload: s.id.to_s) } @activity_xml = {} # Ensure that rendered XML reflects destroyed state diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb index c781f2a29..be5545646 100644 --- a/spec/models/notification_spec.rb +++ b/spec/models/notification_spec.rb @@ -101,7 +101,7 @@ RSpec.describe Notification, type: :model do before do allow(accounts_with_ids).to receive(:[]).with(stale_account1.id).and_return(account1) allow(accounts_with_ids).to receive(:[]).with(stale_account2.id).and_return(account2) - allow(Account).to receive_message_chain(:where, :map, :to_h).and_return(accounts_with_ids) + allow(Account).to receive_message_chain(:where, :each_with_object).and_return(accounts_with_ids) end let(:cached_items) do From ecc58c0f2358ea764c4a4ebd7f9daf4c9143ec7a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 16 Nov 2018 19:46:23 +0100 Subject: [PATCH 105/124] Prevent multiple handlers for Delete of Actor from running (#9292) --- app/lib/activitypub/activity.rb | 6 ++++++ app/lib/activitypub/activity/delete.rb | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 999954cb5..0a729011f 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -129,4 +129,10 @@ class ActivityPub::Activity ::FetchRemoteStatusService.new.call(@object['url']) end end + + def lock_or_return(key, expire_after = 7.days.seconds) + yield if redis.set(key, true, nx: true, ex: expire_after) + ensure + redis.del(key) + end end diff --git a/app/lib/activitypub/activity/delete.rb b/app/lib/activitypub/activity/delete.rb index 457047ac0..8270fed1b 100644 --- a/app/lib/activitypub/activity/delete.rb +++ b/app/lib/activitypub/activity/delete.rb @@ -12,8 +12,10 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity private def delete_person - SuspendAccountService.new.call(@account) - @account.destroy! + lock_or_return("delete_in_progress:#{@account.id}") do + SuspendAccountService.new.call(@account) + @account.destroy! + end end def delete_note From fa02f878fc6fdbc1aae8d3f45e71b4aeb589e7ea Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 19 Nov 2018 10:37:57 +0100 Subject: [PATCH 106/124] Fix filter ID not being a string in REST API (#9303) --- app/serializers/rest/filter_serializer.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/serializers/rest/filter_serializer.rb b/app/serializers/rest/filter_serializer.rb index 3134be371..57205630b 100644 --- a/app/serializers/rest/filter_serializer.rb +++ b/app/serializers/rest/filter_serializer.rb @@ -3,4 +3,8 @@ class REST::FilterSerializer < ActiveModel::Serializer attributes :id, :phrase, :context, :whole_word, :expires_at, :irreversible + + def id + object.id.to_s + end end From c0736c466c33473b4db55bf59ed6edc0a0020b27 Mon Sep 17 00:00:00 2001 From: Dan Hunsaker Date: Tue, 20 Nov 2018 14:24:35 -0700 Subject: [PATCH 107/124] Update Nginx config for Nanobox apps (#9310) The Nanobox files have gotten out of sync, a touch, with what Masto needs for Nginx settings. This PR updates them accordingly. --- nanobox/nginx-local.conf | 2 +- nanobox/nginx-stream.conf.erb | 2 +- nanobox/nginx-web.conf.erb | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nanobox/nginx-local.conf b/nanobox/nginx-local.conf index f56339cac..c0e883603 100644 --- a/nanobox/nginx-local.conf +++ b/nanobox/nginx-local.conf @@ -38,7 +38,7 @@ http { root /app/public; - client_max_body_size 8M; + client_max_body_size 80M; location / { try_files $uri @rails; diff --git a/nanobox/nginx-stream.conf.erb b/nanobox/nginx-stream.conf.erb index 2a047dd9f..12bcc8ca5 100644 --- a/nanobox/nginx-stream.conf.erb +++ b/nanobox/nginx-stream.conf.erb @@ -32,7 +32,7 @@ http { listen 8080; add_header Strict-Transport-Security "max-age=31536000"; - add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests"; + # add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests"; root /app/public; diff --git a/nanobox/nginx-web.conf.erb b/nanobox/nginx-web.conf.erb index 797201eab..d96f1bfc7 100644 --- a/nanobox/nginx-web.conf.erb +++ b/nanobox/nginx-web.conf.erb @@ -32,11 +32,11 @@ http { listen 8080; add_header Strict-Transport-Security "max-age=31536000"; - add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests"; + # add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests"; root /app/public; - client_max_body_size 8M; + client_max_body_size 80M; location / { try_files $uri @rails; From 2c36d357848c7d7cb64da6fd3464306ea6729da7 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Tue, 20 Nov 2018 22:25:04 +0100 Subject: [PATCH 108/124] WebSub: ATOM before RSS (#9302) Hello, The ATOM feed contains the hub declaration for WebSub, but the RSS version does not. RSS/ATOM readers will typically pick whichever version comes first, and will thus not see the WebSub feature. I therefore suggest putting the ATOM version first, as it is more feature-rich than its RSS counterpart is. Clients not compatible with ATOM would not pick it anyway due to the different type attribute. A more complicated alternative would be to declare the WebSub feature in the RSS version as well, using something like the following code, and ensuring that clients subscribed to the RSS version would receive PuSH updates just like those subscribed to the ATOM version. ````xml ``` --- app/views/accounts/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml index b825b82cb..0ee9dd7de 100644 --- a/app/views/accounts/show.html.haml +++ b/app/views/accounts/show.html.haml @@ -8,8 +8,8 @@ %meta{ name: 'robots', content: 'noindex' }/ %link{ rel: 'salmon', href: api_salmon_url(@account.id) }/ - %link{ rel: 'alternate', type: 'application/rss+xml', href: account_url(@account, format: 'rss') }/ %link{ rel: 'alternate', type: 'application/atom+xml', href: account_url(@account, format: 'atom') }/ + %link{ rel: 'alternate', type: 'application/rss+xml', href: account_url(@account, format: 'rss') }/ %link{ rel: 'alternate', type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(@account) }/ - if @older_url From 15dcb414bf2faaf21a686aa467015d244743c04e Mon Sep 17 00:00:00 2001 From: "Renato \"Lond\" Cerqueira" Date: Tue, 20 Nov 2018 22:25:32 +0100 Subject: [PATCH 109/124] Touch account on successful response, change char shown when culled (#9293) Just the color is not enough change since not everyone uses colored terminals. Touching the account makes it so that the account is not in the threshold window in case of running again --- lib/mastodon/accounts_cli.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 142436c19..9f7870bcd 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -242,8 +242,9 @@ module Mastodon end culled += 1 - say('.', :green, false) + say('+', :green, false) else + account.touch # Touch account even during dry run to avoid getting the account into the window again say('.', nil, false) end end From 12bdd7dc5f05e1b9eecf3b56dbcc24cf77bee884 Mon Sep 17 00:00:00 2001 From: valerauko Date: Thu, 22 Nov 2018 20:49:07 +0900 Subject: [PATCH 110/124] Ignore JSON-LD profile in mime type comparison (#9179) Ignore JSON-LD profile in mime type comparison --- app/services/fetch_atom_service.rb | 4 ++-- spec/services/fetch_atom_service_spec.rb | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/services/fetch_atom_service.rb b/app/services/fetch_atom_service.rb index 550e75f33..d6508a988 100644 --- a/app/services/fetch_atom_service.rb +++ b/app/services/fetch_atom_service.rb @@ -29,7 +29,7 @@ class FetchAtomService < BaseService def perform_request(&block) accept = 'text/html' - accept = 'application/activity+json, application/ld+json, application/atom+xml, ' + accept unless @unsupported_activity + accept = 'application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams", application/atom+xml, ' + accept unless @unsupported_activity Request.new(:get, @url).add_headers('Accept' => accept).perform(&block) end @@ -39,7 +39,7 @@ class FetchAtomService < BaseService if response.mime_type == 'application/atom+xml' [@url, { prefetched_body: response.body_with_limit }, :ostatus] - elsif ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(response.mime_type) + elsif ['application/activity+json', 'application/ld+json'].include?(response.mime_type) body = response.body_with_limit json = body_to_json(body) if supported_context?(json) && equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) && json['inbox'].present? diff --git a/spec/services/fetch_atom_service_spec.rb b/spec/services/fetch_atom_service_spec.rb index 30e5b0935..495540004 100644 --- a/spec/services/fetch_atom_service_spec.rb +++ b/spec/services/fetch_atom_service_spec.rb @@ -60,8 +60,15 @@ RSpec.describe FetchAtomService, type: :service do it { is_expected.to eq [url, { :prefetched_body => "" }, :ostatus] } end - context 'content_type is json' do - let(:content_type) { 'application/activity+json' } + context 'content_type is activity+json' do + let(:content_type) { 'application/activity+json; charset=utf-8' } + let(:body) { json } + + it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] } + end + + context 'content_type is ld+json with profile' do + let(:content_type) { 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' } let(:body) { json } it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] } From a2cda74ba3cf6690f257ae612f28e890b7df2237 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 22 Nov 2018 20:12:04 +0100 Subject: [PATCH 111/124] Fix connect timeout not being enforced (#9329) * Fix connect timeout not being enforced The loop was catching the timeout exception that should stop execution, so the next IP would no longer be within a timed block, which led to requests taking much longer than 10 seconds. * Use timeout on each IP attempt, but limit to 2 attempts * Fix code style issue * Do not break Request#perform if no block given * Update method stub in spec for Request * Move timeout inside the begin/rescue block * Use Resolv::DNS with timeout of 1 to get IP addresses * Update Request spec to stub Resolv::DNS instead of Addrinfo * Fix Resolve::DNS stubs in Request spec --- app/lib/request.rb | 32 +++++++++++++++++++++++--------- spec/lib/request_spec.rb | 17 +++++++++++------ 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index 36c211dbf..bb6ef4661 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -2,6 +2,7 @@ require 'ipaddr' require 'socket' +require 'resolv' class Request REQUEST_TARGET = '(request-target)' @@ -45,7 +46,7 @@ class Request end begin - yield response.extend(ClientLimit) + yield response.extend(ClientLimit) if block_given? ensure http_client.close end @@ -94,7 +95,7 @@ class Request end def timeout - { write: 10, connect: 10, read: 10 } + { connect: nil, read: 10, write: 10 } end def http_client @@ -139,16 +140,29 @@ class Request class Socket < TCPSocket class << self def open(host, *args) - return super host, *args if thru_hidden_service? host + return super(host, *args) if thru_hidden_service?(host) + outer_e = nil - Addrinfo.foreach(host, nil, nil, :SOCK_STREAM) do |address| - begin - raise Mastodon::HostValidationError if PrivateAddressCheck.private_address? IPAddr.new(address.ip_address) - return super address.ip_address, *args - rescue => e - outer_e = e + + Resolv::DNS.open do |dns| + dns.timeouts = 1 + + addresses = dns.getaddresses(host).take(2) + time_slot = 10.0 / addresses.size + + addresses.each do |address| + begin + raise Mastodon::HostValidationError if PrivateAddressCheck.private_address?(IPAddr.new(address.to_s)) + + ::Timeout.timeout(time_slot, HTTP::TimeoutError) do + return super(address.to_s, *args) + end + rescue => e + outer_e = e + end end end + raise outer_e if outer_e end diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb index 8cc5d90ce..2d300f18d 100644 --- a/spec/lib/request_spec.rb +++ b/spec/lib/request_spec.rb @@ -48,9 +48,11 @@ describe Request do end it 'executes a HTTP request when the first address is private' do - allow(Addrinfo).to receive(:foreach).with('example.com', nil, nil, :SOCK_STREAM) - .and_yield(Addrinfo.new(["AF_INET", 0, "example.com", "0.0.0.0"], :PF_INET, :SOCK_STREAM)) - .and_yield(Addrinfo.new(["AF_INET6", 0, "example.com", "2001:4860:4860::8844"], :PF_INET6, :SOCK_STREAM)) + resolver = double + + allow(resolver).to receive(:getaddresses).with('example.com').and_return(%w(0.0.0.0 2001:4860:4860::8844)) + allow(resolver).to receive(:timeouts=).and_return(nil) + allow(Resolv::DNS).to receive(:open).and_yield(resolver) expect { |block| subject.perform &block }.to yield_control expect(a_request(:get, 'http://example.com')).to have_been_made.once @@ -81,9 +83,12 @@ describe Request do end it 'raises Mastodon::ValidationError' do - allow(Addrinfo).to receive(:foreach).with('example.com', nil, nil, :SOCK_STREAM) - .and_yield(Addrinfo.new(["AF_INET", 0, "example.com", "0.0.0.0"], :PF_INET, :SOCK_STREAM)) - .and_yield(Addrinfo.new(["AF_INET6", 0, "example.com", "2001:db8::face"], :PF_INET6, :SOCK_STREAM)) + resolver = double + + allow(resolver).to receive(:getaddresses).with('example.com').and_return(%w(0.0.0.0 2001:db8::face)) + allow(resolver).to receive(:timeouts=).and_return(nil) + allow(Resolv::DNS).to receive(:open).and_yield(resolver) + expect { subject.perform }.to raise_error Mastodon::ValidationError end end From 404dc97fb013b7f835df65dfc22d07f68e482e23 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 23 Nov 2018 22:32:20 +0100 Subject: [PATCH 112/124] Bump version to 2.6.2 --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ lib/mastodon/version.rb | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb8bf3272..e5eba30d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,40 @@ Changelog All notable changes to this project will be documented in this file. +## [2.6.2] - 2018-11-23 +### Added + +- Add Page to whitelisted ActivityPub types (#9188) +- Add 20px to column width in web UI (#9227) +- Add amount of freed disk space in `tootctl media remove` (#9229, #9239, #9288) +- Add "Show thread" link to self-replies (#9228) + +### Changed + +- Change order of Atom and RSS links so Atom is first (#9302) +- Change Nginx configuration for Nanobox apps (#9310) +- Change the follow action to appear instant in web UI (#9220) +- Change how the ActiveRecord connection is instantiated in on_worker_boot (#9238) +- Change `tootctl accounts cull` to always touch accounts so they can be skipped (#9293) +- Change mime type comparison to ignore JSON-LD profile (#9179) + +### Fixed + +- Fix web UI crash when conversation has no last status (#9207) +- Fix follow limit validator reporting lower number past threshold (#9230) +- Fix form validation flash message color and input borders (#9235) +- Fix invalid twitter:player cards being displayed (#9254) +- Fix emoji update date being processed incorrectly (#9255) +- Fix playing embed resetting if status is reloaded in web UI (#9270, #9275) +- Fix web UI crash when favouriting a deleted status (#9272) +- Fix intermediary arrays being created for hash maps (#9291) +- Fix filter ID not being a string in REST API (#9303) + +### Security + +- Fix multiple remote account deletions being able to deadlock the database (#9292) +- Fix HTTP connection timeout of 10s not being enforced (#9329) + ## [2.6.1] - 2018-10-30 ### Fixed diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 2e39ad01e..4a7987203 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 1 + 2 end def pre From ec20a5d53aa5d234498d0140ce772cd9f027adfb Mon Sep 17 00:00:00 2001 From: Hugo Gameiro Date: Tue, 27 Nov 2018 11:19:12 +0000 Subject: [PATCH 113/124] add loglevel to ffmpeg in gif upload (#9368) --- app/models/media_attachment.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 1bfe02fd6..62a11185a 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -59,6 +59,7 @@ class MediaAttachment < ApplicationRecord format: 'mp4', convert_options: { output: { + 'loglevel' => 'fatal', 'movflags' => 'faststart', 'pix_fmt' => 'yuv420p', 'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'', From 49f49cf367b6fb8413b1967870a709a5e31c9b71 Mon Sep 17 00:00:00 2001 From: ThibG Date: Tue, 27 Nov 2018 12:28:01 +0100 Subject: [PATCH 114/124] Allow hyphens in the middle of remote user names (#9345) Fixes #9309 This only allows hyphens in the middle of a username, much like dots, although I don't have a compelling reason to do so other than keeping the changes minimal. --- app/models/account.rb | 2 +- spec/models/account_spec.rb | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index 44963f3e6..acba6770b 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -49,7 +49,7 @@ # class Account < ApplicationRecord - USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.]+[a-z0-9_]+)?/i + USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[a-z0-9\.\-]+[a-z0-9]+)?)/i include AccountAvatar diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 60d13d32e..b25b66d2d 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -618,9 +618,15 @@ RSpec.describe Account, type: :model do expect(account).not_to model_have_error_on_field(:username) end - it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do + it 'is valid even if the username contains hyphens' do account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor') account.valid? + expect(account).to_not model_have_error_on_field(:username) + end + + it 'is invalid if the username doesn\'t only contains letters, numbers, underscores and hyphens' do + account = Fabricate.build(:account, domain: 'domain', username: 'the doctor') + account.valid? expect(account).to model_have_error_on_field(:username) end From cc0c1674f03cfbbe3ee28208429f216db1678731 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 27 Nov 2018 18:13:36 +0100 Subject: [PATCH 115/124] Fix nil error when no DNS addresses are found for host (#9379) --- app/lib/request.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index bb6ef4661..024fce88a 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -163,7 +163,11 @@ class Request end end - raise outer_e if outer_e + if outer_e + raise outer_e + else + raise SocketError, "No address for #{host}" + end end alias new open From 58108b448159a8796500f2d3441cfe7b1ca99a67 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 27 Nov 2018 18:49:37 +0100 Subject: [PATCH 116/124] Don't count suspended users in user count (#9380) Fix #7637 --- app/presenters/instance_presenter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb index 9a9157f1b..bf33c7287 100644 --- a/app/presenters/instance_presenter.rb +++ b/app/presenters/instance_presenter.rb @@ -18,7 +18,7 @@ class InstancePresenter end def user_count - Rails.cache.fetch('user_count') { User.confirmed.count } + Rails.cache.fetch('user_count') { User.confirmed.joins(:account).merge(Account.without_suspended).count } end def status_count From 442f335504129f99bc405539967df628d4701761 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 27 Nov 2018 19:15:08 +0100 Subject: [PATCH 117/124] Skip deliveries to inboxes that have already been marked as unavailable (#9358) --- app/workers/activitypub/delivery_worker.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb index adbb496d9..f9c385ea3 100644 --- a/app/workers/activitypub/delivery_worker.rb +++ b/app/workers/activitypub/delivery_worker.rb @@ -11,6 +11,8 @@ class ActivityPub::DeliveryWorker HEADERS = { 'Content-Type' => 'application/activity+json' }.freeze def perform(json, source_account_id, inbox_url, options = {}) + return if DeliveryFailureTracker.unavailable?(inbox_url) + @options = options.with_indifferent_access @json = json @source_account = Account.find(source_account_id) From 34de90c486176992d8bc3d0f5f9f1156509d448c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 27 Nov 2018 19:46:05 +0100 Subject: [PATCH 118/124] Fix TLS handshake timeout not being enforced (#9381) Follow-up to #9329 --- app/lib/request.rb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index 024fce88a..4a81773e3 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -4,6 +4,16 @@ require 'ipaddr' require 'socket' require 'resolv' +# Monkey-patch the HTTP.rb timeout class to avoid using a timeout block +# around the Socket#open method, since we use our own timeout blocks inside +# that method +class HTTP::Timeout::PerOperation + def connect(socket_class, host, port, nodelay = false) + @socket = socket_class.open(host, port) + @socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) if nodelay + end +end + class Request REQUEST_TARGET = '(request-target)' @@ -95,7 +105,11 @@ class Request end def timeout - { connect: nil, read: 10, write: 10 } + # We enforce a 1s timeout on DNS resolving, 10s timeout on socket opening + # and 5s timeout on the TLS handshake, meaning the worst case should take + # about 16s in total + + { connect: 5, read: 10, write: 10 } end def http_client From a1216e631537b1fbf07f2c8724ac05e757800be6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 30 Nov 2018 03:08:37 +0100 Subject: [PATCH 119/124] Bump version to 2.6.3 --- CHANGELOG.md | 19 +++++++++++++++++++ lib/mastodon/version.rb | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5eba30d5..47fa6a25d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,25 @@ Changelog All notable changes to this project will be documented in this file. +## [2.6.3] - 2018-11-30 +### Added + +- Add hyphen to characters allowed in remote usernames (#9345) + +### Changed + +- Change server user count to exclude suspended accounts (#9380) + +### Fixed + +- Fix ffmpeg processing sometimes stalling due to overfilled stdout buffer (#9368) +- Fix missing DNS records raising the wrong kind of exception (#9379) +- Fix already queued deliveries still trying to reach inboxes marked as unavailable (#9358) + +### Security + +- Fix TLS handshake timeout not being enforced (#9381) + ## [2.6.2] - 2018-11-23 ### Added diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 4a7987203..7157ae90e 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 2 + 3 end def pre From 82570019ba01ec11b93f62921b3fc92f369ec53c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 30 Nov 2018 19:16:32 +0100 Subject: [PATCH 120/124] Remove npm-run-all dependency (#9401) Fix #9359 --- package.json | 3 +- yarn.lock | 141 ++------------------------------------------------- 2 files changed, 6 insertions(+), 138 deletions(-) diff --git a/package.json b/package.json index 7b162e576..ee138c374 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "build:production": "cross-env RAILS_ENV=production NODE_ENV=production ./bin/webpack", "manage:translations": "node ./config/webpack/translationRunner.js", "start": "node ./streaming/index.js", - "test": "npm-run-all test:lint test:jest", + "test": "npm run test:lint && npm run test:jest", "test:lint": "eslint -c .eslintrc.yml --ext=js app/javascript/ config/webpack/ streaming/", "test:jest": "cross-env NODE_ENV=test jest --coverage" }, @@ -76,7 +76,6 @@ "mini-css-extract-plugin": "^0.4.2", "mkdirp": "^0.5.1", "node-sass": "^4.9.2", - "npm-run-all": "^4.1.2", "npmlog": "^4.1.2", "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", diff --git a/yarn.lock b/yarn.lock index 38a91d10b..eb7a6c2c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1109,11 +1109,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -1137,16 +1132,6 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -2411,7 +2396,7 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0, cross-spawn@^6.0.4, cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -2920,7 +2905,7 @@ double-ended-queue@^2.1.0-0: resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw= -duplexer@^0.1.1, duplexer@~0.1.1: +duplexer@^0.1.1: version "0.1.1" resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= @@ -3079,7 +3064,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.10.0, es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: +es-abstract@^1.10.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== @@ -3329,20 +3314,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-stream@~3.3.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.6.tgz#cac1230890e07e73ec9cacd038f60a5b66173eef" - integrity sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g== - dependencies: - duplexer "^0.1.1" - flatmap-stream "^0.1.0" - from "^0.1.7" - map-stream "0.0.7" - pause-stream "^0.0.11" - split "^1.0.1" - stream-combiner "^0.2.2" - through "^2.3.8" - eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -3744,11 +3715,6 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" -flatmap-stream@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.0.tgz#ed54e01422cd29281800914fcb968d58b685d5f1" - integrity sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA== - flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" @@ -3846,11 +3812,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -from@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= - fs-extra@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" @@ -5642,16 +5603,6 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -5841,11 +5792,6 @@ map-obj@^1.0.0, map-obj@^1.0.1: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= -map-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" - integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg= - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -5905,11 +5851,6 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -6462,21 +6403,6 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-run-all@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.3.tgz#49f15b55a66bb4101664ce270cb18e7103f8f185" - integrity sha512-aOG0N3Eo/WW+q6sUIdzcV2COS8VnTZCmdji0VQIAZF3b+a3YWb0AD0vFIyjKec18A7beLGbaQ5jFTNI2bPt9Cg== - dependencies: - ansi-styles "^3.2.0" - chalk "^2.1.0" - cross-spawn "^6.0.4" - memorystream "^0.3.1" - minimatch "^3.0.4" - ps-tree "^1.1.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -6979,20 +6905,6 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -pause-stream@^0.0.11: - version "0.0.11" - resolved "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= - dependencies: - through "~2.3" - pbkdf2@^3.0.3: version "3.0.16" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" @@ -7663,13 +7575,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -ps-tree@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" - integrity sha1-tCGyQUDWID8e08dplrRCewjowBQ= - dependencies: - event-stream "~3.3.0" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -8115,15 +8020,6 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -8827,16 +8723,6 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -9039,7 +8925,7 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split@^1.0.0, split@^1.0.1: +split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== @@ -9124,14 +9010,6 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -stream-combiner@^0.2.2: - version "0.2.2" - resolved "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" - integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= - dependencies: - duplexer "~0.1.1" - through "~2.3.4" - stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -9181,15 +9059,6 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string.prototype.padend@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" - integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.4.3" - function-bind "^1.0.2" - string.prototype.trim@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" @@ -9407,7 +9276,7 @@ through2@^2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" -through@2, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.4: +through@2, through@^2.3.6: version "2.3.8" resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= From 13979a84f93ab07dc002111f9a86eb358260dd00 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 30 Nov 2018 19:54:24 +0100 Subject: [PATCH 121/124] Bump version to 2.6.4 --- CHANGELOG.md | 5 +++++ lib/mastodon/version.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47fa6a25d..d09dc452a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ Changelog All notable changes to this project will be documented in this file. +## [2.6.4] - 2018-11-30 +### Fixed + +- Fix yarn dependencies not installing due to yanked event-stream package (#9401) + ## [2.6.3] - 2018-11-30 ### Added diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 7157ae90e..9c2542ac7 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 3 + 4 end def pre From f13d08314e1d683fd40b3cb48c667aced222ce28 Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 2 Dec 2018 16:46:13 +0100 Subject: [PATCH 122/124] Preload common JSON-LD contexts (#9412) Fixes #9411 --- Gemfile | 1 + Gemfile.lock | 5 ++++ config/initializers/json_ld.rb | 3 ++ lib/json_ld/security.rb | 50 ++++++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 config/initializers/json_ld.rb create mode 100644 lib/json_ld/security.rb diff --git a/Gemfile b/Gemfile index bf23015e6..6e1c9403a 100644 --- a/Gemfile +++ b/Gemfile @@ -90,6 +90,7 @@ gem 'webpacker', '~> 3.5' gem 'webpush' gem 'json-ld', '~> 2.2' +gem 'json-ld-preloaded', '~> 2.2' gem 'rdf-normalize', '~> 0.3' group :development, :test do diff --git a/Gemfile.lock b/Gemfile.lock index 91a2e8281..d83ad6d8b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -291,6 +291,10 @@ GEM json-ld (2.2.1) multi_json (~> 1.12) rdf (>= 2.2.8, < 4.0) + json-ld-preloaded (2.2.3) + json-ld (>= 2.2, < 4.0) + multi_json (~> 1.12) + rdf (>= 2.2, < 4.0) jsonapi-renderer (0.2.0) jwt (2.1.0) kaminari (1.1.1) @@ -696,6 +700,7 @@ DEPENDENCIES idn-ruby iso-639 json-ld (~> 2.2) + json-ld-preloaded (~> 2.2) kaminari (~> 1.1) letter_opener (~> 1.4) letter_opener_web (~> 1.3) diff --git a/config/initializers/json_ld.rb b/config/initializers/json_ld.rb new file mode 100644 index 000000000..d5575d135 --- /dev/null +++ b/config/initializers/json_ld.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true + +require_relative '../../lib/json_ld/security' diff --git a/lib/json_ld/security.rb b/lib/json_ld/security.rb new file mode 100644 index 000000000..1230206f0 --- /dev/null +++ b/lib/json_ld/security.rb @@ -0,0 +1,50 @@ +# -*- encoding: utf-8 -*- +# frozen_string_literal: true +# This file generated automatically from https://w3id.org/security/v1 +require 'json/ld' +class JSON::LD::Context + add_preloaded("https://w3id.org/security/v1") do + new(processingMode: "json-ld-1.0", term_definitions: { + "CryptographicKey" => TermDefinition.new("CryptographicKey", id: "https://w3id.org/security#Key", simple: true), + "EcdsaKoblitzSignature2016" => TermDefinition.new("EcdsaKoblitzSignature2016", id: "https://w3id.org/security#EcdsaKoblitzSignature2016", simple: true), + "EncryptedMessage" => TermDefinition.new("EncryptedMessage", id: "https://w3id.org/security#EncryptedMessage", simple: true), + "GraphSignature2012" => TermDefinition.new("GraphSignature2012", id: "https://w3id.org/security#GraphSignature2012", simple: true), + "LinkedDataSignature2015" => TermDefinition.new("LinkedDataSignature2015", id: "https://w3id.org/security#LinkedDataSignature2015", simple: true), + "LinkedDataSignature2016" => TermDefinition.new("LinkedDataSignature2016", id: "https://w3id.org/security#LinkedDataSignature2016", simple: true), + "authenticationTag" => TermDefinition.new("authenticationTag", id: "https://w3id.org/security#authenticationTag", simple: true), + "canonicalizationAlgorithm" => TermDefinition.new("canonicalizationAlgorithm", id: "https://w3id.org/security#canonicalizationAlgorithm", simple: true), + "cipherAlgorithm" => TermDefinition.new("cipherAlgorithm", id: "https://w3id.org/security#cipherAlgorithm", simple: true), + "cipherData" => TermDefinition.new("cipherData", id: "https://w3id.org/security#cipherData", simple: true), + "cipherKey" => TermDefinition.new("cipherKey", id: "https://w3id.org/security#cipherKey", simple: true), + "created" => TermDefinition.new("created", id: "http://purl.org/dc/terms/created", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "creator" => TermDefinition.new("creator", id: "http://purl.org/dc/terms/creator", type_mapping: "@id"), + "dc" => TermDefinition.new("dc", id: "http://purl.org/dc/terms/", simple: true, prefix: true), + "digestAlgorithm" => TermDefinition.new("digestAlgorithm", id: "https://w3id.org/security#digestAlgorithm", simple: true), + "digestValue" => TermDefinition.new("digestValue", id: "https://w3id.org/security#digestValue", simple: true), + "domain" => TermDefinition.new("domain", id: "https://w3id.org/security#domain", simple: true), + "encryptionKey" => TermDefinition.new("encryptionKey", id: "https://w3id.org/security#encryptionKey", simple: true), + "expiration" => TermDefinition.new("expiration", id: "https://w3id.org/security#expiration", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "expires" => TermDefinition.new("expires", id: "https://w3id.org/security#expiration", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "id" => TermDefinition.new("id", id: "@id", simple: true), + "initializationVector" => TermDefinition.new("initializationVector", id: "https://w3id.org/security#initializationVector", simple: true), + "iterationCount" => TermDefinition.new("iterationCount", id: "https://w3id.org/security#iterationCount", simple: true), + "nonce" => TermDefinition.new("nonce", id: "https://w3id.org/security#nonce", simple: true), + "normalizationAlgorithm" => TermDefinition.new("normalizationAlgorithm", id: "https://w3id.org/security#normalizationAlgorithm", simple: true), + "owner" => TermDefinition.new("owner", id: "https://w3id.org/security#owner", type_mapping: "@id"), + "password" => TermDefinition.new("password", id: "https://w3id.org/security#password", simple: true), + "privateKey" => TermDefinition.new("privateKey", id: "https://w3id.org/security#privateKey", type_mapping: "@id"), + "privateKeyPem" => TermDefinition.new("privateKeyPem", id: "https://w3id.org/security#privateKeyPem", simple: true), + "publicKey" => TermDefinition.new("publicKey", id: "https://w3id.org/security#publicKey", type_mapping: "@id"), + "publicKeyPem" => TermDefinition.new("publicKeyPem", id: "https://w3id.org/security#publicKeyPem", simple: true), + "publicKeyService" => TermDefinition.new("publicKeyService", id: "https://w3id.org/security#publicKeyService", type_mapping: "@id"), + "revoked" => TermDefinition.new("revoked", id: "https://w3id.org/security#revoked", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "salt" => TermDefinition.new("salt", id: "https://w3id.org/security#salt", simple: true), + "sec" => TermDefinition.new("sec", id: "https://w3id.org/security#", simple: true, prefix: true), + "signature" => TermDefinition.new("signature", id: "https://w3id.org/security#signature", simple: true), + "signatureAlgorithm" => TermDefinition.new("signatureAlgorithm", id: "https://w3id.org/security#signingAlgorithm", simple: true), + "signatureValue" => TermDefinition.new("signatureValue", id: "https://w3id.org/security#signatureValue", simple: true), + "type" => TermDefinition.new("type", id: "@type", simple: true), + "xsd" => TermDefinition.new("xsd", id: "http://www.w3.org/2001/XMLSchema#", simple: true, prefix: true) + }) + end +end From e625425c8feb611e037c62855845b38ceb4b35c1 Mon Sep 17 00:00:00 2001 From: ThibG Date: Wed, 21 Nov 2018 17:02:58 +0100 Subject: [PATCH 123/124] Include replies to list owner and replies to list members in list statuses (#9324) --- app/lib/feed_manager.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 3d7db2721..31ff53860 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -40,7 +40,11 @@ class FeedManager end def push_to_list(list, status) - return false if status.reply? && status.in_reply_to_account_id != status.account_id + if status.reply? && status.in_reply_to_account_id != status.account_id + should_filter = status.in_reply_to_account_id != list.account_id + should_filter &&= !ListAccount.where(list_id: list.id, account_id: status.in_reply_to_account_id).exists? + return false if should_filter + end return false unless add_to_feed(:list, list.id, status) trim(:list, list.id) PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}") if push_update_required?("timeline:list:#{list.id}") From 887f9de6dc12ef405f92b94eeaa775df74ebb1ef Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 2 Dec 2018 16:52:40 +0100 Subject: [PATCH 124/124] Bump version to 2.6.5 --- CHANGELOG.md | 9 +++++++++ lib/mastodon/version.rb | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d09dc452a..1e24df451 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,15 @@ Changelog All notable changes to this project will be documented in this file. +## [2.6.5] - 2018-12-01 +### Changed + +- Change lists to display replies to others on the list and list owner (#9324) + +### Fixed + +- Fix failures caused by commonly-used JSON-LD contexts being unavailable (#9412) + ## [2.6.4] - 2018-11-30 ### Fixed diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 9c2542ac7..cb5c2440c 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 4 + 5 end def pre